diff --git a/pdf/arabic/net/digital-signatures/_index.md b/pdf/arabic/net/digital-signatures/_index.md index 3146328cb..ced4595ce 100644 --- a/pdf/arabic/net/digital-signatures/_index.md +++ b/pdf/arabic/net/digital-signatures/_index.md @@ -53,6 +53,8 @@ ### [التحقق من توقيع PDF في C# – دليل شامل للتحقق من صحة التوقيع الرقمي للملف PDF](./verify-pdf-signature-in-c-complete-guide-to-validate-digital/) تعرّف على كيفية التحقق من توقيع PDF باستخدام C# من خلال دليل شامل للتحقق من صحة التوقيع الرقمي. +### [كيفية قراءة التوقيعات في PDF باستخدام C# – دليل خطوة بخطوة](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +تعرف على كيفية قراءة التوقيعات الرقمية في ملفات PDF باستخدام C# من خلال دليل شامل خطوة بخطوة. ## موارد إضافية diff --git a/pdf/arabic/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/arabic/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..f5fbb5eb4 --- /dev/null +++ b/pdf/arabic/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-06 +description: كيفية قراءة التوقيعات في ملف PDF باستخدام C#. تعلم كيفية تحميل مستند + PDF باستخدام C#، وعرض قائمة توقيعات PDF، والحصول على التوقيعات الرقمية للملف بسرعة + وموثوقية. +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: ar +og_description: كيفية قراءة التوقيعات في ملف PDF باستخدام C#. يوضح هذا الدليل كيفية + تحميل مستند PDF باستخدام C#، وعرض قائمة توقيعات PDF، واسترجاع التوقيعات الرقمية + في PDF في بضع خطوات سهلة. +og_title: كيفية قراءة التوقيعات في ملفات PDF باستخدام C# – دليل كامل +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: كيفية قراءة التوقيعات في ملفات PDF باستخدام C# – دليل خطوة بخطوة +url: /ar/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية قراءة التوقيعات في PDF باستخدام C# – دليل كامل + +هل تساءلت يومًا **كيف تقرأ التوقيعات** المدمجة بالفعل في ملف PDF؟ ربما تقوم بإنشاء لوحة تحكم للامتثال، أو تحتاج ببساطة إلى تدقيق العقود الموقعة قبل أن تصل إلى قاعدة البيانات الخاصة بك. الخبر السار هو أنه ببضع أسطر من C# ومكتبة Aspose.Pdf يمكنك استخراج أسماء التوقيعات مباشرةً من الملف—دون الحاجة إلى فحص يدوي. + +في هذا الدرس سنستعرض تحميل مستند PDF في C#، سرد توقيعات PDF، والحصول على معلومات التوقيعات الرقمية في PDF. في النهاية ستحصل على تطبيق وحدة تحكم جاهز للتنفيذ يطبع كل اسم توقيع يجده، بالإضافة إلى نصائح للتعامل مع الحالات الخاصة مثل الملفات المحمية بكلمة مرور. + +## المتطلبات المسبقة + +- .NET 6.0 أو أحدث (الكود يعمل أيضًا مع .NET Framework 4.6+) +- Aspose.Pdf for .NET (يمكنك الحصول على ترخيص مؤقت مجاني من موقع Aspose) +- ملف PDF يحتوي بالفعل على توقيع أو أكثر رقمي (العينة `MultiSigned.pdf` مضمونة في المستودع) + +> **نصيحة احترافية:** إذا كنت تستخدم Visual Studio، فعّل *Nullable Reference Types* لاكتشاف الأخطاء المتعلقة بـ null مبكرًا. + +## الخطوة 1: تحميل مستند PDF في C# + +أول شيء نحتاجه هو كائن `Document` الذي يمثل ملف PDF على القرص. فئة `Document` في Aspose.Pdf تتعامل مع كل شيء من استخراج النص البسيط إلى معالجة النماذج المعقدة. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**لماذا هذا مهم:** تحميل PDF يتحقق من وجود الملف وقابليته للقراءة. إذا كان الملف تالفًا أو المسار غير صحيح، نتوقف مبكرًا بدلاً من مواجهة أخطاء غامضة لاحقًا عند محاولة تعداد التوقيعات. + +## الخطوة 2: إنشاء مساعد `PdfFileSignature` + +تقوم Aspose بفصل معالجة PDF العامة (`Document`) عن عمليات التوقيع المحددة (`PdfFileSignature`). إنشاء هذا المساعد يمنحنا الوصول إلى طرق مثل `GetSignatureNames()`. + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**لماذا هذا مهم:** فئة `PdfFileSignature` تعرف كيفية تحليل مدخلات القاموس `/Sig` في PDF، حيث توجد التوقيعات الرقمية. استخدامها يضمن قراءة التوقيعات بالضبط كما تم إضافتها، مع الحفاظ على أي بيانات تعريفية تشفيرية. + +## الخطوة 3: استرجاع جميع أسماء التوقيعات + +الآن يأتي جوهر **كيفية قراءة التوقيعات**: استدعاء `GetSignatureNames()`. هذه الطريقة تُرجع مصفوفة من السلاسل النصية التي تحتوي على *أسماء الحقول* لكل توقيع. + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**ما ستراه:** إذا كان `MultiSigned.pdf` يحتوي على ثلاثة توقيعات باسم `Signature1` و `Signature2` و `Signature3`، فإن مخرجات وحدة التحكم ستكون: + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## الخطوة 4: (اختياري) التحقق من صحة كل توقيع + +قراءة الأسماء غالبًا ما تكون كافية، لكن العديد من المشاريع تحتاج أيضًا إلى معرفة ما إذا كان كل توقيع لا يزال صالحًا. تتيح لك Aspose التحقق من صحة توقيع باستخدام اسم الحقل الخاص به: + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **حالة خاصة:** إذا كان PDF محميًا بكلمة مرور، يجب توفير كلمة المرور قبل استدعاء `VerifySignature`. استخدم `pdfDocument.Encrypt.Password = "yourPassword";` مباشرةً بعد تحميل المستند. + +## مثال كامل يعمل + +فيما يلي البرنامج الكامل الذي يمكنك نسخه ولصقه في مشروع وحدة تحكم جديد (`dotnet new console`). يتضمن جميع الخطوات، معالجة الأخطاء، والتحقق الاختياري. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**المخرجات المتوقعة** (مع افتراض وجود ثلاثة توقيعات صالحة): + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## التعامل مع التغييرات الشائعة + +| الحالة | ما الذي يجب تغييره | السبب | +|-----------|----------------|-----| +| **PDF محمي بكلمة مرور** | عيّن `pdfDocument.Encrypt.Password = "yourPwd";` قبل إنشاء `PdfFileSignature`. | بدون كلمة المرور تكون قواميس التوقيع مشفرة وتُعيد `GetSignatureNames()` مصفوفة فارغة. | +| **PDFs الكبيرة ( > 100 MB )** | استخدم `pdfSigner.GetSignatureNames(0, 10)` لتصفح النتائج على صفحات (المعامل الأول = فهرس البداية). | تحميل قائمة التوقيعات بالكامل مرة واحدة قد يستهلك الكثير من الذاكرة. | +| **لا توجد توقيعات على الإطلاق** | الكود بالفعل يطبع تحذيرًا ودودًا. فكر في تسجيل ذلك كحدث تدقيق. | يساعد العمليات اللاحقة على اتخاذ قرار برفض الملف أو طلب نسخة موقعة من المستخدم. | +| **أسماء حقول توقيع مخصصة** | الطريقة تُعيد أي اسم حقل تم استخدامه أثناء التوقيع، مثل `EmployeeApproval`. لا حاجة لعمل إضافي. | يسمح لك بربط التوقيعات بالأدوار التجارية. | + +## أفضل الممارسات والنصائح + +- **تحرير الكائنات**: نمط `using var pdfSigner` يضمن تحرير الموارد الأصلية بسرعة. +- **الترخيص مبكرًا**: استدعِ `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` في بداية `Main` لتجنب علامة مائية التقييم. +- **سلامة الخيوط**: إذا كنت تعالج العديد من ملفات PDF بالتوازي، أنشئ كائن `PdfFileSignature` منفصل لكل خيط. الفئة ليست آمنة للاستخدام المتعدد الخيوط. +- **التسجيل**: في بيئة الإنتاج، استبدل `Console.WriteLine` بمسجل منظم (Serilog, NLog) لتتمكن من التقاط أسماء التوقيعات الدقيقة لسجلات التدقيق. +- **التحقق من الإصدار**: يعمل الكود مع Aspose.Pdf for .NET 23.10 وما بعده. قد تتطلب الإصدارات القديمة `PdfSignature` بدلاً من `PdfFileSignature`. + +## الخلاصة + +لقد غطينا **كيفية قراءة التوقيعات** من PDF باستخدام C#. من خلال تحميل مستند PDF، إنشاء مساعد `PdfFileSignature`، واستدعاء `GetSignatureNames()`، يمكنك سرد كل توقيع رقمي مدمج في الملف. يضيف التحقق الاختياري طبقة من الثقة، ويظهر لك الكود النموذجي كيفية دمجه في تطبيق وحدة تحكم واقعي. + +هل أنت مستعد للخطوة التالية؟ جرّب دمج ذلك مع `DigitalSignatureUtil` من Aspose لاستخراج شهادات الموقعين، أو أدخل قائمة التوقيعات في لوحة تحكم للامتثال تُظهر العقود غير الموقعة. الاحتمالات لا حصر لها—فقط تذكر **تحميل مستند PDF C#**، **سرد توقيعات PDF**، و **الحصول على توقيعات رقمية PDF** كلما احتجت إلى تدقيق سريع. + +برمجة سعيدة، ولتظل ملفات PDF الخاصة بك دائمًا موقعة بأمان! + +{{< /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/arabic/net/document-conversion/_index.md b/pdf/arabic/net/document-conversion/_index.md index cc2ec3298..380234b33 100644 --- a/pdf/arabic/net/document-conversion/_index.md +++ b/pdf/arabic/net/document-conversion/_index.md @@ -57,6 +57,7 @@ | [XML إلى PDF تعيين مسار الصورة](./xml-to-pdfset-image-path/) تعلّم كيفية تحويل XML إلى PDF بسهولة باستخدام Aspose.PDF لـ .NET. يشرح لك هذا الدليل المفصل العملية خطوة بخطوة، من الإعداد إلى الاكتمال. | [XPS إلى PDF](./xps-to-pdf/) تعلّم كيفية تحويل ملفات XPS إلى PDF باستخدام Aspose.PDF لـ .NET من خلال هذا البرنامج التعليمي خطوة بخطوة. مثالي للمطورين وهواة المستندات. | [تحويل PDF إلى PDF/X‑4 باستخدام C#](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) |تعرف على كيفية تحويل ملفات PDF إلى صيغة PDF/X‑4 باستخدام Aspose.PDF لـ .NET في دليل خطوة بخطوة. | +| [دليل Aspose PDF: تحويل PDF إلى PDF/X‑4 باستخدام C#](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) |تعرف على كيفية تحويل ملفات PDF إلى صيغة PDF/X‑4 باستخدام Aspose.PDF لـ .NET في دليل خطوة بخطوة. | | [دليل pdf إلى png – تحويل صفحات PDF إلى PNG باستخدام C#](./pdf-to-png-tutorial-convert-pdf-pages-to-png-in-c/) |تعلم كيفية تحويل صفحات ملفات PDF إلى صور PNG باستخدام Aspose.PDF لـ .NET مع C# خطوة بخطوة. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/arabic/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/arabic/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..afca2541a --- /dev/null +++ b/pdf/arabic/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,224 @@ +--- +category: general +date: 2026-03-06 +description: يظهر دليل Aspose PDF كيفية استخدام Aspose لتحميل مستند PDF في C#، وتحويل + PDF إلى PDF/X‑4، وحفظ الـ PDF المحوَّل بكفاءة. +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: ar +og_description: يشرح دليل Aspose PDF كيفية تحميل مستند PDF في C#، وتحويله إلى تنسيق + PDF/X‑4، وحفظ الـ PDF المحوَّل مع أمثلة شفرة واضحة. +og_title: 'دليل Aspose PDF: تحويل PDF إلى PDF/X‑4 باستخدام C#' +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: 'دليل Aspose PDF: تحويل PDF إلى PDF/X‑4 باستخدام C#' +url: /ar/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# دليل Aspose PDF: تحويل PDF إلى PDF/X‑4 باستخدام C# + +هل تساءلت يومًا كيف يمكنك استخدام Aspose لتحويل ملف PDF عادي إلى ملف PDF/X‑4 دون عناء؟ لست وحدك—غالبًا ما يحتاج المطورون إلى طريقة موثوقة لـ **load PDF document C#**‑style، وتحويله، ثم **save the converted PDF** لتدفقات العمل اللاحقة. في هذا الدليل، سنستعرض مثالًا كاملًا وقابلًا للتنفيذ يحقق ذلك تمامًا، باستخدام أحدث Aspose.Pdf لـ .NET. + +سنغطي كل شيء بدءًا من تثبيت المكتبة، تحميل ملف PDF المصدر، تحويله إلى معيار PDF/X‑4، وأخيرًا حفظ النتيجة على القرص. بنهاية القراءة ستحصل على فهم قوي لـ **how to use Aspose** في هذا السيناريو الشائع للتحويل، بالإضافة إلى نصائح للتعامل مع الحالات الخاصة. + +## المتطلبات المسبقة + +- .NET 6.0 أو أحدث (الكود يعمل على .NET Framework أيضًا، لكن يُنصح بـ .NET 6+). +- ملف ترخيص صالح لـ Aspose.Pdf for .NET (أو يمكنك التشغيل في وضع التقييم لاختبار سريع). +- Visual Studio 2022 أو أي بيئة تطوير متوافقة مع C#. +- ملف PDF إدخال موجود في `YOUR_DIRECTORY/input.pdf`. + +لا توجد حزم NuGet إضافية مطلوبة بخلاف `Aspose.Pdf`. + +## تثبيت Aspose.Pdf عبر NuGet + +افتح الطرفية أو وحدة تحكم مدير الحزم (Package Manager Console) وشغّل الأمر التالي: + +```bash +dotnet add package Aspose.Pdf +``` + +هذا سيجلب أحدث نسخة مستقرة (اعتبارًا من مارس 2026، الإصدار 23.12). إذا كنت تفضّل الواجهة الرسومية، ابحث عن *Aspose.Pdf* في مدير حزم NuGet وقم بتثبيتها. + +## الخطوة 1: تحميل مستند PDF في C# باستخدام Aspose + +أول شيء تحتاج إلى القيام به هو جلب ملف PDF المصدر إلى الذاكرة. فئة `Document` في Aspose هي نقطة الدخول. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**لماذا هذا مهم:** تحميل الملف يتحقق من وجود المسار وأن ملف PDF غير تالف. يوفّر كتلة `try/catch` طريقة أنيقة لعرض الأخطاء—مفيد عندما يأتي الملف من تحميلات المستخدمين. + +## الخطوة 2: تحويل PDF إلى تنسيق PDF/X‑4 + +PDF/X‑4 هو مجموعة فرعية من PDF صُممت للطباعة والارشفة الموثوقة. يضمن التحويل تضمين جميع الخطوط وأن الملف يتوافق مع المعايير الصناعية. + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**لماذا اختيار `ConvertErrorAction.Delete`؟** بعض ملفات PDF القديمة تحتوي على عناصر (مثل التعليقات التوضيحية غير المدعومة) التي قد توقف التحويل. حذفها يحافظ على سلاسة العملية، ولكن يجب مراجعة النتيجة إذا كنت بحاجة إلى الحفاظ على تلك العناصر. + +### اختياري: التحقق من نجاح التحويل + +إذا أردت التأكد أكثر، يمكنك فحص خاصية `PdfFormat` للمستند بعد التحويل: + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## الخطوة 3: حفظ ملف PDF المحوّل + +الآن بعد أن أصبح المستند بصيغة PDF/X‑4، احفظه مرة أخرى على القرص. + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**النتيجة التي ستراها:** ملف جديد باسم `Converted_PDFX4.pdf` سيظهر في `YOUR_DIRECTORY`. افتحه بأي عارض PDF يدعم PDF/X‑4 (Adobe Acrobat، Foxit، إلخ) وستلاحظ أن جميع الخطوط مضمّنة وأن المستند يتوافق مع مواصفات PDF/X‑4. + +![دليل Aspose PDF - تحويل PDF إلى PDF/X‑4](/images/aspose-pdf-conversion.png "دليل Aspose PDF يُظهر نتيجة تحويل PDF إلى PDF/X‑4") + +*يتضمن نص بديل الصورة الكلمة المفتاحية الأساسية، مما يلبي متطلبات تحسين محركات البحث (SEO).* + +## مثال كامل من البداية إلى النهاية + +بجمع كل ذلك معًا، إليك تطبيق console مستقل يمكنك نسخه ولصقه في مشروع C# جديد: + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +شغّل البرنامج، وسترى رسائل console تؤكد كل خطوة. إذا حدث أي خطأ، ستشير رسائل الأخطاء إلى المرحلة المحددة. + +## أسئلة شائعة وحالات خاصة + +### ماذا لو احتجت للحفاظ على التعليقات التوضيحية؟ + +`ConvertErrorAction.Delete` يزيل الكائنات غير المدعومة، بما في ذلك بعض التعليقات التوضيحية. غيّر إلى `ConvertErrorAction.Keep` إذا كان الحفاظ عليها أمرًا حيويًا، لكن اختبر النتيجة—قد تظل بعض التعليقات التوضيحية تسبب تحذيرات توافق. + +### كيف أتعامل مع ملفات PDF الكبيرة (مئات الميغابايت)؟ + +Aspose.Pdf يبث الملف، لذا يبقى استهلاك الذاكرة معتدلًا. ومع ذلك، قد ترغب في زيادة عتبات `System.GC` أو معالجة المستند على دفعات (مثلاً، تحويل صفحة بصفحة) للملفات الضخمة جدًا. + +### هل يمكنني تحويل ملفات متعددة دفعةً واحدة؟ + +بالتأكيد. ضع منطق التحميل‑التحويل‑الحفظ داخل حلقة `foreach` التي تت遍遍 عبر مجلد يحتوي على ملفات PDF. تذكّر معالجة الاستثناءات لكل ملف حتى لا يتوقف التحويل الكامل بسبب ملف PDF واحد معطوب. + +### هل يعمل هذا على .NET Core على لينكس؟ + +نعم. Aspose.Pdf متعدد المنصات. فقط تأكد من الإشارة إلى حزمة NuGet `Aspose.Pdf` وأن لديك ملفات الخطوط المناسبة مثبتة على خادم لينكس إذا كنت بحاجة إلى عرض النص. + +## نصائح احترافية من الميدان + +- **قم بتعيين الترخيص مبكرًا**: `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` – يزيل هذا علامة التقييم المائية ويعزز الأداء. +- **تحقق من صحة الإخراج**: استخدم `PdfFormatValidator` من Aspose لتأكيد توافق PDF/X‑4 برمجيًا قبل نشر الملف. +- **سجّل زمن التحويل**: تستفيد الدفعات الكبيرة من قياس زمن كل تحويل (`Stopwatch`) لاكتشاف تراجع الأداء. +- **تجنّب المسارات الصلبة**: يفضَّل استخدام ملفات الإعداد أو المتغيّرات البيئية لـ `inputPath` و `outputPath`—ما يجعل التطبيق قابلًا للنقل. + +## الخاتمة + +في هذا **Aspose PDF Tutorial** عرضنا سير عمل نظيف من البداية إلى النهاية لـ **how to use Aspose** لـ **load PDF document C#**، وتحويله إلى معيار **PDF/X‑4**، و**save the converted PDF**. الشيفرة قابلة للتنفيذ بالكامل، وتشرح *السبب* وراء كل خطوة، وتبرز العقبات التي قد تواجهها في مشاريع العالم الحقيقي. + +الآن بعد أن استوعبت الأساسيات، يمكنك توسيع الحل—معالجة دفعات من العشرات من الملفات، تضمين بيانات تعريف مخصصة، أو دمج التحويل في واجهة برمجة تطبيقات ويب. الاحتمالات واسعة، وAspose.Pdf يوفّر لك الأدوات للوصول إلى ذلك بسرعة. + +هل لديك المزيد من الأسئلة حول معالجة PDF باستخدام Aspose؟ اترك تعليقًا، استكشف الوثائق الرسمية لـ Aspose، أو جرّب الشيفرة أعلاه. تحويل سعيد! + +{{< /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/arabic/net/document-creation/_index.md b/pdf/arabic/net/document-creation/_index.md index 9fa3f078c..c3fa64eba 100644 --- a/pdf/arabic/net/document-creation/_index.md +++ b/pdf/arabic/net/document-creation/_index.md @@ -77,6 +77,12 @@ ### [إنشاء مستند PDF باستخدام Aspose.PDF – إضافة صفحة وشكل وحفظ](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) تعلم كيفية إنشاء مستند PDF وإضافة صفحات وأشكال وحفظه باستخدام Aspose.PDF في .NET. +### [إنشاء مستند PDF باستخدام Aspose.PDF – دليل خطوة بخطوة](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +دليل خطوة بخطوة لإنشاء مستند PDF باستخدام Aspose.PDF في .NET، يشمل إضافة صفحات وحفظ الملف. + +### [إنشاء مستند PDF باستخدام Aspose.PDF – دليل C# كامل](./create-pdf-document-with-aspose-pdf-full-c-guide/) +دليل شامل لإنشاء مستند PDF باستخدام Aspose.PDF في C#، يغطي إضافة الصفحات، الأشكال، وحفظ الملف. + ## موارد إضافية - [توثيق Aspose.PDF للشبكة](https://docs.aspose.com/pdf/net/) diff --git a/pdf/arabic/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/arabic/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..2eb36ab4d --- /dev/null +++ b/pdf/arabic/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-06 +description: إنشاء مستند PDF في C# باستخدام Aspose.PDF – تعلم كيفية إضافة صفحات PDF + فارغة، صندوق نص، عنصر واجهة، وحفظ PDF بسرعة. +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: ar +og_description: إنشاء مستند PDF في C# باستخدام Aspose.PDF. يوضح هذا الدليل كيفية إضافة + صفحات PDF فارغة، ومربع نص، وودجت، وكيفية حفظ PDF. +og_title: إنشاء مستند PDF باستخدام Aspose.PDF – دليل C# الكامل +tags: +- pdf +- csharp +- aspose +- forms +title: إنشاء مستند PDF باستخدام Aspose.PDF – دليل C# الكامل +url: /ar/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# إنشاء مستند PDF باستخدام Aspose.PDF – دليل C# الكامل + +هل احتجت يومًا إلى **إنشاء مستند pdf** من الصفر في مشروع .NET وتساءلت من أين تبدأ؟ لست وحدك؛ كثير من المطورين يواجهون نفس العقبة عندما تكون المتطلبات الأولى “إنشاء PDF قابل للملء مع نفس مربع النص على ثلاث صفحات”. الخبر السار؟ باستخدام Aspose.PDF يمكنك إنشاء PDF بمظهر احترافي في بضع أسطر فقط. + +في هذا الدرس سنستعرض العملية بالكامل: من تهيئة مستند PDF جديد، **إضافة صفحات pdf فارغة**، إدراج **مربع نص**، تكراره باستخدام تعليقات **widget**، وأخيرًا **حفظ PDF** على القرص. في النهاية ستحصل على ملف جاهز للاستخدام اسمه *MultiWidgetField.pdf* وفهم قوي لأسباب أهمية كل خطوة. + +## ما يغطيه هذا الدليل + +- المتطلبات المسبقة التي تحتاجها قبل كتابة سطر واحد من الكود. +- إنشاء مستند PDF خطوة بخطوة باستخدام Aspose.PDF لـ .NET. +- كيفية إضافة صفحات فارغة، حقل نموذج مربع نص، وإضافات widget إضافية. +- نصائح للتعامل مع المشكلات الشائعة (مثل فهرسة الصفحات، تعارض أسماء الحقول). +- برنامج C# كامل جاهز للنسخ واللصق يمكنك تشغيله اليوم. + +لا روابط توثيق خارجية، لا اختصارات “انظر إلى وثائق API” — كل ما تحتاجه موجود هنا. + +## المتطلبات المسبقة + +قبل الغوص في التفاصيل، تأكد من وجود ما يلي: + +1. **.NET 6.0** (أو أي إصدار أحدث) مثبت على جهازك. +2. رخصة **Aspose.PDF for .NET** سارية أو مفتاح تقييم مؤقت. +3. بيئة تطوير مثل **Visual Studio 2022** أو **VS Code** مع امتداد C#. + +هذا كل ما تحتاجه — لا شيء آخر. + +## الخطوة 1: تهيئة مستند PDF وإضافة صفحات فارغة + +أول شيء تقوم به عندما **تنشئ مستند pdf** برمجيًا هو إنشاء كائن `Document`. فكر فيه كفتح دفتر ملاحظات جديد. ثم تضيف الصفحات التي تحتاجها؛ في حالتنا ثلاث صفحات فارغة. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**لماذا هذا مهم:** Aspose.PDF يتعامل مع الصفحات كمجموعة ذات فهرسة صفرية داخليًا، لكن واجهته العامة تستخدم الفهرسة من 1، لذا `Pages[1]` هي الصفحة الأولى التي أضفتها للتو. إضافة الصفحات مسبقًا يمنحك مساحة للعمل لتضع حقول النماذج لاحقًا، وهو أكثر كفاءة من إدراج الصفحات أثناء نمو المستند. + +> **نصيحة احترافية:** إذا كنت تحتاج صفحة واحدة فقط، يمكنك تخطي الحلقة واستدعاء `pdfDocument.Pages.Add()` مرة واحدة. إضافة صفحات متعددة داخل حلقة تجعل الكود أكثر قابلية للتوسع. + +## الخطوة 2: تعريف حقل نموذج مربع نص في الصفحة الأولى + +الآن بعد أن أصبح لدينا ثلاث أوراق فارغة، لنضع **مربع نص** على الأولى. `TextBoxField` هو عنصر نموذج يمكن للمستخدمين كتابة نص فيه عندما يُفتح PDF في Acrobat Reader أو أي عارض PDF يدعم النماذج. + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**لماذا إحداثيات المستطيل؟** Aspose.PDF يستخدم النقاط (1/72 من البوصة). المستطيل `(100, 700, 300, 730)` يضع مربع النص تقريبًا في منتصف الصفحة، عرضه 200 pt وارتفاعه 30 pt. عدّل هذه القيم لتناسب تخطيطك. + +> **سؤال شائع:** *هل يجب تعيين الخاصية `Value`؟* +> لا، هذا اختياري. تركها فارغة يعرض حقلًا خاليًا؛ تعيين قيمة افتراضية يمكن أن يوجه المستخدم. + +## الخطوة 3: إضافة تعليقات Widget لنفس الحقل في الصفحات 2 و 3 + +**widget** هو التمثيل البصري لحقل النموذج على صفحة معينة. بشكل افتراضي يظهر الحقل فقط على الصفحة التي تم إنشاؤه فيها. لإعادة استخدام نفس مربع النص على صفحات أخرى، تُرفق كائنات `WidgetAnnotation` إضافية إلى مجموعة `Widgets` الخاصة بالحقل. + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**لماذا الـ widgets؟** بدونها سيظهر مربع النص فقط في الصفحة 1، رغم أن الحقل الأساسي موجود. الـ widgets تسمح لك بمشاركة حقل منطقي واحد عبر صفحات متعددة، مما يضمن ظهور النص المدخل في كل مكان يُعرض فيه الحقل. + +> **حالة حافة:** إذا كنت تحتاج مربع النص في إحداثيات مختلفة على كل صفحة، ما عليك سوى تعديل قيم `Rectangle` لكل widget. + +## الخطوة 4: تسجيل الحقل في مجموعة النماذج الخاصة بالمستند + +Aspose.PDF يحتفظ بسجل مركزي لجميع حقول النماذج. إضافة الحقل إلى مجموعة `Form` يجعلها جزءًا من بنية النموذج التفاعلية في PDF. + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +المعامل الثاني (`"Comment"`) هو **الاسم المؤهل بالكامل** للحقل. يجب أن يكون فريدًا عبر المستند؛ وإلا سيُطلق Aspose استثناءً. + +## الخطوة 5: حفظ PDF الناتج – كيفية حفظ PDF + +أخيرًا، نقوم بحفظ المستند الموجود في الذاكرة إلى القرص. هذه هي **كيفية حفظ pdf** في الدرس. + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**لماذا تحديد مسار مطلق؟** استخدام مسار مطلق يجنب الالتباس حول دليل العمل، خاصةً عند تشغيل البرنامج من مصحح الأخطاء في Visual Studio. إذا فضلت مسارًا نسبيًا، فقط تأكد من وجود المجلد قبل استدعاء `Save`. + +### النتيجة المتوقعة + +افتح *MultiWidgetField.pdf* في Adobe Acrobat Reader. ستظهر نفس مربع النص في الصفحات 1، 2، و 3. اكتب شيئًا في الحقل على أي صفحة — سيظهر النص فورًا في الصفحات الأخرى لأنهما يشتركان في نفس حقل النموذج الأساسي. + +![Create PDF Document example showing a textbox on three pages](https://example.com/placeholder-image.png "مثال إنشاء مستند PDF يظهر مربع نص على ثلاث صفحات") + +*نص بديل للصورة: مثال إنشاء مستند PDF يظهر مربع نص على ثلاث صفحات.* + +## مثال كامل جاهز للتنفيذ + +فيما يلي البرنامج الكامل الذي يمكنك نسخه إلى مشروع وحدة تحكم جديد (`dotnet new console`) وتشغيله. جميع الخطوات مرتبة مسبقًا، والكود يحتوي على تعليقات للتوضيح. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +شغّل البرنامج، انتقل إلى `C:\Temp\`، وافتح ملف PDF المُولد. ستجد ثلاثة مربعات نص متطابقة جاهزة لإدخال المستخدم. + +## الاختلافات الشائعة وحالات الحافة + +| السيناريو | ما الذي يجب تغييره | السبب | +|----------|-------------------|-------| +| **حجم مربع نص مختلف على كل صفحة** | عدّل قيم `Rectangle` لكل `WidgetAnnotation`. | يتيح لك ملاءمة الحقل مع تخطيطات مختلفة. | +| **حقل للقراءة فقط** | عيّن `commentField.ReadOnly = true;`. | يمنع المستخدمين من تعديل المحتوى بعد ملئه أولًا. | +| **مربع نص متعدد الأسطر** | عيّن `commentField.Multiline = true;` وزد ارتفاع المستطيل. | يسمح بتعليقات أطول دون الحاجة للتمرير. | +| **إضافة حقل ثانٍ** | أنشئ `TextBoxField` آخر (أو أي `FormField`) وكرر الخطوات 2‑4 باسم جديد. | يمكنك جمع معلومات متعددة في نفس PDF. | + +## نصائح احترافية ومخاطر يجب تجنبها + +- **فهرسة الصفحات:** تذكّر أن `pdfDocument.Pages[1]` هي الصفحة الأولى، ليست `[0]`. خلط الفهارس الصفرية والواحدة قد يؤدي إلى استثناء “Index out of range”. +- **تصادم أسماء الحقول:** لا يمكن لحقلين مشاركة نفس الاسم المؤهل بالكامل. إذا واجهت خطأ بخصوص أسماء مكررة، راجع السلسلة التي تمررها إلى `Form.Add`. +- **الرخصة مقابل التقييم:** نسخة التقييم تضيف علامة مائية على كل صفحة. استخدم رخصة صالحة لإزالتها في بيئة الإنتاج. +- **الأداء:** إضافة مئات الصفحات داخل حلقة أمر مقبول، لكن إذا كنت تحتاج لتوليد PDFs ضخمة (آلاف الصفحات)، فكر في استخدام + +{{< /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/arabic/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/arabic/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..9dccc088a --- /dev/null +++ b/pdf/arabic/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,237 @@ +--- +category: general +date: 2026-03-06 +description: إنشاء مستند PDF باستخدام Aspose.PDF في C#. تعلّم كيفية إضافة صفحة PDF، + ورسم مستطيل PDF، وإضافة شكل PDF، والتحكم في سمك حدود المستطيل — كل ذلك في دليل واحد. +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: ar +og_description: إنشاء مستند PDF باستخدام C# و Aspose.PDF. يوضح هذا الدرس كيفية إضافة + صفحة PDF، ورسم مستطيل PDF، وإضافة شكل PDF، وتحديد سمك حد المستطيل. +og_title: إنشاء مستند PDF باستخدام Aspose.PDF – دليل كامل +tags: +- Aspose.PDF +- C# +- PDF generation +title: إنشاء مستند PDF باستخدام Aspose.PDF – دليل خطوة بخطوة +url: /ar/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# إنشاء مستند PDF باستخدام Aspose.PDF – دليل خطوة بخطوة + +هل احتجت يومًا إلى **إنشاء مستند PDF** برمجيًا ولم تكن متأكدًا من أين تبدأ؟ لست وحدك—العديد من المطورين يواجهون نفس المشكلة عندما تحتاج تطبيقاتهم إلى توليد الفواتير أو التقارير أو الشهادات فورًا. + +الخبر السار هو أنه باستخدام Aspose.PDF for .NET يمكنك القيام بذلك ببضع أسطر فقط، وستتعلم أيضًا كيفية **add page PDF**، **draw rectangle PDF**، **add shape PDF**، وتعديل **rectangle border thickness** أثناء ذلك. هيا نبدأ. + +## ما ستبنيه + +بنهاية هذا الدليل ستحصل على تطبيق كونسول C# كامل الوظائف الذي: + +1. **Creates a PDF document** من الصفر. +2. **Adds a page PDF** إلى المستند. +3. **Draws a rectangle PDF** على تلك الصفحة. +4. **Validates** أن المستطيل يبقى داخل حدود الصفحة (**add shape PDF** خطوة). +5. يضبط **rectangle border thickness** مخصص. +6. يحفظ النتيجة باسم `ShapeValidated.pdf`. + +بدون خدمات خارجية، بدون إعدادات غامضة—فقط C# عادي و Aspose.PDF. + +### المتطلبات المسبقة + +- .NET 6.0 أو أحدث (الكود يعمل أيضًا مع .NET Framework 4.6+). +- إشارة إلى حزمة NuGet `Aspose.Pdf`. يمكنك إضافتها عبر: + +```bash +dotnet add package Aspose.Pdf +``` + +- محرر نصوص أو بيئة تطوير متكاملة—Visual Studio، VS Code، Rider، أيًا كنت تفضله. + +> **نصيحة احترافية:** إذا كنت تستخدم جهازًا مؤسسيًا، تأكد من أن مصدر NuGet غير محجوب؛ وإلا ستحصل على خطأ “Package not found”. + +--- + +## إنشاء مستند PDF – تهيئة المستند + +الخطوة الأولى هي إنشاء كائن `Document`. فكر فيه كقماش فارغ ستُرسم عليه كل صفحة وشكل. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +لماذا نحتاج هذا الكائن؟ إنه يمثل ملف PDF كامل في الذاكرة، ويمنحنا الوصول إلى مجموعة `Pages`، والبيانات الوصفية، وإعدادات الأمان. بمجرد حصولك على المستند، يمكنك البدء في إضافة الصفحات، النصوص، الصور، والرسومات المتجهة. + +--- + +## إضافة صفحة إلى PDF (add page pdf) + +PDF بدون صفحات هو في الأساس ملف فارغ—بدون فائدة. إضافة صفحة أمر بسيط، ويمكنك تخصيص حجمها إذا رغبت. هنا نستخدم الحجم الافتراضي A4. + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +طريقة `Add()` تُعيد كائن `Page` جديد وهو بالفعل جزء من مجموعة `Pages`، لذا يمكنك البدء فورًا في الرسم عليه. في سيناريوهات العالم الحقيقي قد تقوم بالتكرار عبر مجموعة بيانات وإضافة عشرات الصفحات؛ نفس الاستدعاء بسطر واحد يعمل في كل تكرار. + +--- + +## رسم شكل مستطيل (draw rectangle pdf) + +الآن للجزء البصري: مستطيل بحد واضح. هنا يأتي دور **draw rectangle pdf**. + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +بعض النقاط التي يجب ملاحظتها: + +- `Rect` يستخدم النقاط (1 pt ≈ 1/72 inch). الإحداثيات تحدد الزاوية السفلية اليسرى والزاوية العلوية اليمنى، بحيث يمكنك التحكم بدقة في العرض والارتفاع. +- `BorderInfo` يتيح لك تحديد أي الجوانب ستحصل على خط وسمك الخط. هنا نطبق خطًا بسمك نقطتين على **جميع** الجوانب، مما يمنح المستطيل مظهرًا نظيفًا ومتساويًا. + +--- + +## التحقق من وضع الشكل (add shape pdf) + +قبل إضافة المستطيل إلى الصفحة، من الحكمة التحقق من أنه يتناسب داخل مساحة الطباعة للصفحة. Aspose.PDF يوفر طريقة مساعدة مفيدة لهذا. + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +لماذا نهتم؟ إذا وضعت شكلًا جزئيًا خارج الشاشة عن طريق الخطأ، قد يقوم عارض PDF بقطعه، مما يؤدي إلى تجربة مستخدم مربكة. هذا الشرط الوقائي **add shape pdf** يضمن أنك تضيف محتوى سيكون مرئيًا بالكامل. + +--- + +## حفظ PDF (add page pdf) + +أخيرًا، نقوم بحفظ المستند الموجود في الذاكرة إلى القرص. يمكنك اختيار أي موقع لديك صلاحية كتابة فيه. + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +بعد تشغيل البرنامج، افتح `ShapeValidated.pdf`—يجب أن ترى صفحة واحدة مع مستطيل محاط بحد أنيق ومتمركز تقريبًا في الوسط. + +--- + +## النتيجة المتوقعة + +عند فتح PDF المُنشأ، ستظهر لك: + +- صفحة واحدة بحجم A4. +- مستطيل يبدأ زواياه السفلية اليسرى عند (50 pt, 50 pt) وتنتهي الزاوية العلوية اليمنى عند (600 pt, 800 pt). +- حد **سُمكه نقطتين** يحيط بالمستطيل. + +إذا طبع الكونسول الرسالة “PDF created successfully!”، فأنت تعلم أن الكود تم تنفيذه دون أن يتجاوز فحص الحدود. + +![مخطط يوضح كيفية إنشاء مستند PDF باستخدام Aspose.PDF](https://example.com/diagram-create-pdf.png "إنشاء مستند PDF – نظرة بصرية") + +*نص بديل الصورة يتضمن الكلمة الرئيسية لتلبية متطلبات تحسين محركات البحث.* + +--- + +## الأسئلة الشائعة والحالات الخاصة + +### ماذا لو احتجت إلى حجم صفحة مختلف؟ + +استبدل الصفحة الافتراضية بحجم مخصص: + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### كيف يمكنني تغيير لون الحد؟ + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### هل يمكنني إضافة أشكال متعددة على نفس الصفحة؟ + +بالطبع. فقط كرر كتلة **add shape pdf** مع `RectangleShape` جديد (أو أي فئة فرعية من `Shape`) واضبط إحداثيات `Rect` وفقًا لذلك. + +### ماذا لو تجاوز المستطيل حدود الصفحة؟ + +ستُعيد الدالة `IsShapeWithinBounds` القيمة `false`. في كود الإنتاج قد ترغب في تعديل حجم الشكل تلقائيًا: + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +--- + +## ملخص + +لقد استعرضنا دورة حياة كاملة لـ **creating a PDF document** باستخدام Aspose.PDF: + +1. تهيئة `Document`. +2. **Add a page PDF** باستخدام `Pages.Add()`. +3. **Draw a rectangle PDF** عبر `RectangleShape`. +4. **Add shape PDF** فقط بعد التأكد من أنه يبقى داخل الصفحة. +5. التحكم في **rectangle border thickness** باستخدام `BorderInfo`. +6. حفظ الملف. + +هذه هي سير العمل بالكامل بأقل من 60 سطرًا من الكود. + +--- + +## ما التالي؟ + +- **Add text**: استخدم `TextFragment` لوضع عناوين أو تسميات داخل المستطيل. +- **Insert images**: تسمح لك فئة `Image` بإدراج شعارات أو مخططات. +- **Create tables**: مثالي للفواتير أو تقارير البيانات. +- **Apply security**: احمِ PDF بكلمة مرور إذا كان يحتوي على بيانات حساسة. + +كل من هذه المواضيع يبني على الأساسيات التي تم تغطيتها هنا، لذا أنت في موقع جيد لاستكشاف سيناريوهات إنشاء PDF أكثر تقدمًا. + +### استمر في التجربة + +لا تتوقف عند مستطيل واحد—جرّب أشكالًا، ألوانًا، وأنماط خطوط مختلفة. واجهة برمجة تطبيقات Aspose.PDF غنية، وكلما لعبت أكثر كلما أصبحت أكثر ارتياحًا. إذا واجهت مشكلة، فإن وثائق Aspose الرسمية هي مرجع جيد، لكن تذكر أن الكود أعلاه هو حل كامل جاهز للنسخ واللصق يمكنك تشغيله اليوم. + +برمجة سعيدة، ولتظهر ملفات PDF دائمًا كما تخيلتها! + +{{< /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/arabic/net/document-manipulation/_index.md b/pdf/arabic/net/document-manipulation/_index.md index 1ae9f4b93..ad7ba124f 100644 --- a/pdf/arabic/net/document-manipulation/_index.md +++ b/pdf/arabic/net/document-manipulation/_index.md @@ -311,6 +311,8 @@ ### [الدليل الشامل لمعالجة ملفات PDF باستخدام Aspose.PDF .NET: تحميل وحفظ واستبدال النص بكفاءة](./master-pdf-manipulation-aspose-pdf-net/) تعلّم كيفية إتقان معالجة ملفات PDF باستخدام Aspose.PDF لـ .NET. يغطي هذا الدليل تحميل النصوص وحفظها واستبدالها في ملفات PDF، وهو مثالي للمطورين الباحثين عن الكفاءة. +### [كيفية إخفاء محتوى PDF في C# باستخدام Aspose PDF – دليل شامل](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) + ## موارد إضافية - [توثيق Aspose.PDF للشبكة](https://docs.aspose.com/pdf/net/) diff --git a/pdf/arabic/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/arabic/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..2c8cc77ff --- /dev/null +++ b/pdf/arabic/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-03-06 +description: تعلم كيفية تحرير PDF باستخدام Aspose PDF في C#. يوضح هذا الدليل خطوة + بخطوة كيفية تحميل مستند PDF في C#، الوصول إلى الصفحة الأولى من PDF، وإزالة الصورة + من PDF. +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: ar +og_description: كيفية تعديل PDF بسرعة باستخدام Aspose PDF في C#. تحميل مستند PDF، + الوصول إلى الصفحة الأولى من PDF، وإزالة الصورة من PDF ببضع أسطر من الشيفرة. +og_title: كيفية إخفاء محتوى PDF في C# – دليل Aspose PDF +tags: +- Aspose PDF +- C# +- PDF Redaction +title: كيفية تعديل PDF في C# باستخدام Aspose PDF – دليل كامل +url: /ar/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية تمويه PDF في C# باستخدام Aspose PDF – دليل كامل + +هل تساءلت يومًا **كيفية تمويه PDF** دون عناء؟ ربما تم تسليمك عقدًا يخفي شعارًا سريًا، أو تقريرًا لا يزال يظهر صورة بديلة تحتاج إلى إزالتها. في تلك اللحظات، ستحتاج إلى طريقة موثوقة برمجية لإزالة هذا المحتوى—دون الحاجة إلى سحر Acrobat اليدوي. + +في هذا الدرس سنستعرض حلاً مختصراً وشاملاً ي **loads PDF document C#**، ي **access first PDF page**، ثم **remove image from PDF** باستخدام مكتبة **use Aspose PDF** القوية. بنهاية الدرس ستحصل على PDF مُطمٍّ بالكامل جاهز للتوزيع، وستفهم لماذا كل سطر من الشيفرة مهم. + +> **نصيحة احترافية:** Aspose PDF يعمل مع .NET Framework 4.6+ و .NET Core 3.1+، لذا أنت مغطى سواء كنت على Windows أو Linux أو macOS. + +![مثال على تمويه PDF](redact-pdf-before-after.png){alt="مثال على تمويه PDF"} + +## ما ستحتاجه + +- **Aspose.PDF for .NET** (أحدث حزمة NuGet) +- بيئة تطوير **C#** (Visual Studio، Rider، أو VS Code) +- ملف PDF تجريبي يحتوي على مورد صورة تريد مسحه (سنسميه `Sensitive.pdf`) + +لا أدوات طرف ثالث إضافية، لا OCR، فقط شفرة صافية. + +## الخطوة 1: Load PDF Document C# – الخطوة الأولى + +قبل أن تتمكن من تمويه أي شيء، عليك تحميل الملف إلى الذاكرة. فئة `Document` هي نقطة الدخول لكل عملية Aspose PDF. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**لماذا هذا مهم:** +`Document` يقوم بتحليل بنية PDF بالكامل، ويبني نموذج كائن يتيح لك تعديل الصفحات والموارد والتعليقات التوضيحية. إذا تعذر تحميل الملف (مسار خاطئ، PDF تالف)، سيتم رمي استثناء فورًا—لتعرف مبكرًا أن هناك مشكلة. + +### الأخطاء الشائعة + +> *“أحصل على استثناء `FileNotFoundException` رغم أن الملف موجود.”* +> تأكد من أن المسار مطلق أو أن دليل العمل لمشروعك يطابق موقع `Sensitive.pdf`. استخدام `Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")` يمكن أن يساعد في تجنب مشاكل المسارات النسبية. + +## الخطوة 2: Access First PDF Page – حيث توجد الصورة + +يتم تخزين الصور كموارد على أساس كل صفحة. في العديد من ملفات PDF البسيطة تكون الصفحة الأولى هي المسبب، لذا لنأخذها. + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**لماذا هذا مهم:** +Aspose PDF يستخدم فهرسًا يبدأ من 1 للصفحات، وهو أمر غير مألوف مقارنةً بمعظم مجموعات .NET. الوصول إلى الصفحة الخطأ قد يعني تمويه المحتوى الخطأ—أو الأسوأ، ترك الصورة الحساسة دون تعديل. + +### مراعاة الحالات الحدية + +إذا كان مستندك لا يحتوي على صفحات (PDF فارغ)، فإن محاولة `pdfDocument.Pages[1]` ستؤدي إلى رمي استثناء `IndexOutOfRangeException`. يمكن لحارس سريع أن ينقذك: + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +## الخطوة 3: Remove Image from PDF – تمويه المورد + +Aspose PDF يتيح لك حذف مورد بالاسم. معظم الصور مسماة `Im1`، `Im2`، إلخ، لكن يمكنك فحص `firstPage.Resources.Images` للتأكد. + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**لماذا هذا مهم:** +`RedactResource` يزيل الصورة *وأي* مراجع لها على الصفحة، مما يضمن أن الفجوة البصرية تُملأ بمنطقة فارغة بدلاً من رابط مكسور. إنها طريقة نظيفة ومعتمدة في PDF لمسح المحتوى. + +### كيفية العثور على اسم الصورة الصحيح + +إذا لم تكن متأكدًا ما إذا كانت الصورة تسمى `"Im1"`: + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +شغّل هذا المقتطف، تحقق من مخرجات وحدة التحكم، واستبدل `"Im1"` بالمفتاح الفعلي الذي تراه. + +## الخطوة 4: Save the Redacted PDF – إكمال المهمة + +الآن بعد أن اختفت الصورة غير المرغوبة، احفظ التغييرات إلى القرص. + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**لماذا هذا مهم:** +الحفظ إلى ملف **جديد** يبقي الأصل غير متأثر—شبكة أمان في حال احتجت للعودة. إذا كان عليك الكتابة فوق، فقط وجه طريقة `Save` إلى المسار الأصلي، لكن كن على علم أن العملية لا يمكن التراجع عنها. + +### التحقق من النتيجة + +افتح `Redacted.pdf` في أي عارض PDF. يجب أن يظهر مكان الصورة فارغًا، وبقية المستند يجب أن تبدو مطابقة للأصل. إذا ظهر تخطيط الصفحة مت shifted، تحقق مرة أخرى أنك أزلت المورد المقصود فقط وليس XObject مشترك. + +## مثال عملي كامل + +بجمع كل ذلك معًا، إليك البرنامج الكامل الجاهز للتنفيذ: + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**المخرجات المتوقعة** (في وحدة التحكم): + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +عند فتح `Redacted.pdf`، الصورة التي كانت `Im1` ستختفي، تاركة صفحة نظيفة. + +## الأسئلة المتكررة + +### هل يعمل هذا مع ملفات PDF المشفرة؟ + +إذا كان PDF المصدر محميًا بكلمة مرور، مرّر كلمة المرور إلى مُنشئ `Document`: + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### ماذا لو ظهرت الصورة على عدة صفحات؟ + +قم بالتكرار عبر كل صفحة واستدعِ `RedactResource` على نفس اسم الصورة (أو اكتشف الاسم لكل صفحة). مثال: + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### هل يمكنني تمويه النص بنفس الطريقة؟ + +نعم—استخدم `page.Contents.RedactText("confidential")` أو استخدم فئة `Redactor` لأنماط أكثر تقدمًا. هذا درس كامل بحد ذاته، لكن المبدأ يعكس ما فعلناه للصور. + +## الخلاصة – ما أنجزناه + +لقد أجبنا على **كيفية تمويه PDF** برمجيًا عن طريق: + +1. **Loading PDF document C#** باستخدام Aspose PDF. +2. **Accessing first PDF page** لتحديد المورد المستهدف. +3. **Removing image from PDF** عبر `RedactResource`. +4. **Saving** النسخة المنقحة بأمان. + +هذه الطريقة سريعة، قابلة للتكرار، وتعمل في وظائف الدُفعات—مثالية لأنابيب الامتثال أو توليد التقارير الآلية. + +إذا كنت مستعدًا للانتقال إلى مستوى أعمق، فكر في استكشاف: + +- **Batch redaction** عبر مجلد كامل من ملفات PDF. +- **Redacting text** باستخدام أنماط regex عبر `Redactor`. +- **Embedding a watermark** بعد التمويه للإشارة إلى “مُنقّى”. + +جرّبه، عدّل منطق اسم الصورة لملفاتك الخاصة، + +{{< /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/arabic/net/performance-optimization/_index.md b/pdf/arabic/net/performance-optimization/_index.md index 70266248c..f6b769096 100644 --- a/pdf/arabic/net/performance-optimization/_index.md +++ b/pdf/arabic/net/performance-optimization/_index.md @@ -50,6 +50,9 @@ ### [إلغاء تضمين الخطوط في ملفات PDF باستخدام Aspose.PDF لـ .NET: تقليل حجم الملف وتحسين الأداء](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) تعرّف على كيفية إزالة الخطوط من ملفات PDF باستخدام Aspose.PDF لـ .NET. حسّن أداء ملفات PDF، وقلل حجمها، وحسّن أوقات التحميل من خلال هذا الدليل المفصل. +### [كيفية ضغط ملفات PDF باستخدام Aspose.PDF – دليل سريع](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) +تعلم طريقة سريعة لضغط ملفات PDF باستخدام Aspose.PDF لتحقيق أحجام أصغر وتحسين سرعة التحميل. + ## موارد إضافية - [توثيق Aspose.PDF للشبكة](https://docs.aspose.com/pdf/net/) diff --git a/pdf/arabic/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/arabic/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..cfc0782d3 --- /dev/null +++ b/pdf/arabic/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,203 @@ +--- +category: general +date: 2026-03-06 +description: تعلم كيفية ضغط ملفات PDF على الفور باستخدام Aspose.Pdf. يوضح هذا الدليل + كيفية تقليل حجم ملف PDF باستخدام ضغط PDF بدون فقدان الجودة. +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: ar +og_description: كيفية ضغط ملف PDF باستخدام Aspose.Pdf؟ اتبع هذا الدليل خطوة بخطوة + لتقليل حجم ملف PDF، وتحقيق ضغط PDF بدون فقدان، وحفظ ملفات PDF المُحسّنة. +og_title: كيفية ضغط ملفات PDF باستخدام Aspose.Pdf – دليل سريع +tags: +- pdf +- aspnet +- csharp +title: كيفية ضغط ملف PDF باستخدام Aspose.Pdf – دليل سريع +url: /ar/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# how to compress pdf with Aspose.Pdf – quick guide + +هل تساءلت يومًا **كيف تضغط ملفات pdf** دون أن تتحول إلى صورة مشوشة؟ لست وحدك. يواجه معظم المطورين صعوبة عندما يحتاجون إلى **تقليل حجم ملف pdf** لمرفقات البريد الإلكتروني، أو رفعه على الويب، أو حدود التخزين، وهم يخافون من فقدان جودة الصورة. + +في هذا الدرس سنستعرض مثالًا كاملاً جاهزًا للتنفيذ يوضح لك بالضبط **كيف تضغط pdf** باستخدام أداة التحسين المدمجة في Aspose.Pdf. بنهاية الدرس ستعرف كيف **تقلص حجم ملف pdf**، وتحتفظ بصورك حادة باستخدام **ضغط pdf بدون فقدان**، وأخيرًا **تحفظ ملفات pdf محسّنة** تتوافق مع أي عارض. + +## What you’ll learn + +- تحميل ملف PDF ثقيل (مثلاً، يحتوي على صور عالية الدقة) إلى الذاكرة. +- تطبيق محسن Aspose.Pdf بإعداداته الافتراضية غير الفاقدة. +- حفظ النتيجة كملف جديد أصغر. +- نصائح لتعديل الضغط إذا كنت بحاجة إلى ضغط أقوى. + +لا أدوات خارجية، لا حيل سطر أوامر غامضة—فقط كود C# نظيف وتفسيرات واضحة. + +## Prerequisites + +قبل أن نبدأ، تأكد من وجود ما يلي: + +| المتطلب | لماذا يهم | +|-------------|----------------| +| .NET 6.0 أو أحدث (أو .NET Framework 4.6+) | يدعم Aspose.Pdf كلاهما؛ الإصدارات الأحدث تعطي أداءً أفضل. | +| حزمة NuGet لـ Aspose.Pdf for .NET (`Aspose.Pdf`) | فئة `Document` موجودة هنا. | +| ملف PDF يحتوي على صور كبيرة (مثال: `HeavyImages.pdf`) | يمنحك شيئًا ملموسًا لتقليصه. | +| Visual Studio، Rider، أو أي محرر C# تفضله | الراحة مهمة—اختر ما يناسبك. | + +> **نصيحة احترافية:** إذا كنت تستخدم خط أنابيب CI/CD، أضف إشارة NuGet في ملف `.csproj` حتى لا ينسى البناء تثبيتها. + +```xml + + + +``` + +## Step 1: Load the PDF you want to compress + +أولًا نحتاج إلى كائن `Document` يشير إلى ملف المصدر. فكر فيه كفتح كتاب قبل أن تبدأ تعديل الفصول. + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*لماذا هذا مهم:* تحميل الملف يمنح Aspose.Pdf فرصة لقراءة جميع الموارد المدمجة (صور، خطوط، إلخ). بدون هذه الخطوة لا شيء لت **تقليل حجم ملف pdf**. + +## Step 2: Apply lossless PDF compression + +يأتي Aspose.Pdf مع طريقة `Optimize` التي، بشكل افتراضي، تنفّذ روتين **ضغط pdf بدون فقدان**. تقوم بإزالة الكائنات الزائدة، وإعادة ضغط الصور بنفس الجودة البصرية، وإزالة الخطوط غير المستخدمة. + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*لماذا هذا مهم:* المُحسّن الافتراضي مصمم لت **تقليل حجم ملف pdf** مع الحفاظ على كل بكسل. إذا قررت لاحقًا أنك تستطيع تحمل انخفاض طفيف في الجودة، فإن `OptimizationOptions` المعلّقة تتيح لك مقايضة بضعة كيلوبايت إضافية مقابل السرعة. + +## Step 3: Save the optimized PDF + +الآن بعد أن أصبح المستند أخف، نكتبّه إلى ملف جديد. الحفاظ على الأصل دون تعديل عادة جيدة، خاصةً عندما تختبر إعدادات مختلفة. + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +بعد الحفظ، قارن أحجام الملفات: + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +ستلاحظ انخفاضًا ملحوظًا—غالبًا **30‑70 %** حسب عدد الصور عالية الدقة الموجودة في المصدر. + +![كيفية ضغط pdf توضيح](image.png "كيفية ضغط pdf") + +*نص بديل للصورة:* كيفية ضغط pdf – قبل وبعد التحسين + +## Advanced: Tweaking compression for specific scenarios + +بينما يكون المُحسّن الافتراضي رائعًا لمعظم الحالات، أحيانًا تحتاج إلى **تقليل حجم ملف pdf** أكثر: + +| السيناريو | الإعداد الذي يجب تعديلّه | الأثر | +|----------|-------------------|--------| +| ملفات PDF تحتوي على العديد من الصور النقطية | `CompressImages = true` + تقليل `ImageQuality` (مثلاً 70) | يقلل عدد بايتات الصورة، مع فقدان بصري طفيف. | +| ملفات PDF تحتوي على خطوط مكررة | `RemoveUnusedObjects = true` | يزيل الخطوط غير المرجعية. | +| ملفات PDF ذات بيانات تعريفية كبيرة | `RemoveMetadata = true` | يقطع كتل XML/metadata المخفية. | + +يمكنك دمج هذه الإعدادات في كائن `OptimizationOptions` وتمريره إلى `pdfDoc.Optimize(options)`. + +## Common questions & edge cases + +**ماذا لو كان ملف PDF مُحسّنًا بالفعل؟** +سيستمر Aspose.Pdf في فحص المستند، لكن التغيير في الحجم سيكون ضئيلًا. تشغيل المُحسّن على ملف خفيف بالفعل آمن؛ لن يتلف أي شيء. + +**هل يمكنني ضغط ملفات PDF المشفرة؟** +نعم، ولكن يجب توفير كلمة المرور قبل استدعاء `Optimize`. مثال: + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**ماذا عن ملفات PDF التي تحتوي على رسومات متجهية؟** +الكائنات المتجهية خفيفة بالفعل، لذا يركز المُحسّن على الصور النقطية والبيانات التعريفية. توقع تحسينات بسيطة للملفات التي هي بالكامل متجهية. + +## Full, runnable example + +فيما يلي تطبيق console مكتمل يمكنك نسخه ولصقه في مشروع `.csproj` جديد. يوضح كل ما تم مناقشته—من التحميل إلى التحقق. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +شغّل البرنامج، افتح `Optimized.pdf` في أي عارض، وسترى نفس تخطيط الصفحات، نفس الصور الحادة، لكن بحجم أصغر. هذه هي سحر **ضغط pdf بدون فقدان**. + +## Conclusion + +غطّينا **كيف تضغط pdf** باستخدام المُحسّن المدمج في Aspose.Pdf، وعرضنا سير عمل عملي لـ **تقليل حجم ملف pdf**، وشرحنا الأسباب الكامنة وراء كل خطوة. باتباع نمط الثلاث خطوات—التحميل، التحسين، الحفظ—يمكنك **تقليل حجم ملف pdf** في الوقت الفعلي، والحفاظ على صورك بفضل **ضغط pdf بدون فقدان**، وحفظ **ملفات pdf محسّنة** بثقة للاستخدام اللاحق. + +هل أنت مستعد للتحدي التالي؟ جرّب ربط هذا المُحسّن مع سكريبت دفعي لمعالجة مجلد كامل، أو جرب `OptimizationOptions` الاختيارية لاستخراج آخر كيلوبايتات قليلة. نفس المبادئ تنطبق سواء كنت تعمل على أداة سطح مكتب، أو API ويب، أو مهمة دفعية على الخادم. + +هل لديك أسئلة إضافية حول معالجة PDF، أو تفاصيل Aspose.Pdf، أو I/O ملفات .NET؟ اترك تعليقًا أدناه، ولنستمر في النقاش. ضغطًا سعيدًا! + +{{< /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/arabic/net/programming-with-security-and-signatures/_index.md b/pdf/arabic/net/programming-with-security-and-signatures/_index.md index 2740157f0..c376f09ed 100644 --- a/pdf/arabic/net/programming-with-security-and-signatures/_index.md +++ b/pdf/arabic/net/programming-with-security-and-signatures/_index.md @@ -34,6 +34,8 @@ | [التوقيع بالبطاقة الذكية باستخدام توقيع ملف PDF](./sign-with-smart-card-using-pdf-file-signature/) تعرّف على كيفية توقيع ملفات PDF باستخدام بطاقة ذكية مع Aspose.PDF لـ .NET. اتبع هذا الدليل خطوة بخطوة للحصول على توقيعات رقمية آمنة. | [التوقيع باستخدام البطاقة الذكية باستخدام حقل التوقيع](./sign-with-smart-card-using-signature-field/) | تعرّف على كيفية توقيع ملفات PDF بأمان باستخدام بطاقة ذكية باستخدام Aspose.PDF لـ .NET. اتبع دليلنا خطوة بخطوة لسهولة التنفيذ. | | [التحقق من توقيعات PDF في C# – كيفية قراءة ملفات PDF الموقعة](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) | تعلم كيفية قراءة والتحقق من التوقيعات الرقمية في ملفات PDF باستخدام C# و Aspose.PDF. | +| [كيفية التحقق من التوقيع في ملف PDF باستخدام C# – دليل Aspose الكامل](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) | تعلم خطوة بخطوة كيفية التحقق من التوقيعات الرقمية في ملفات PDF باستخدام C# و Aspose.PDF. | +| [إضافة توقيع رقمي PDF في C# – دليل خطوة بخطوة كامل](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) | تعلم كيفية إضافة توقيع رقمي إلى ملفات PDF باستخدام C# و Aspose.PDF خطوة بخطوة. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/arabic/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/arabic/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..5c861a4ac --- /dev/null +++ b/pdf/arabic/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,258 @@ +--- +category: general +date: 2026-03-06 +description: إضافة توقيع رقمي إلى ملف PDF باستخدام Aspose.PDF. تعلم كيفية إنشاء توقيع + PKCS7 منفصل وتوقيع ملف PDF باستخدام ملف PFX مع رد نداء مخصص. +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: ar +og_description: أضف توقيعًا رقميًا إلى ملف PDF بسرعة. يوضح هذا الدليل كيفية إنشاء + توقيع PKCS7 منفصل وتوقيع ملف PDF باستخدام ملف PFX في C#. +og_title: إضافة توقيع رقمي إلى PDF في C# – دليل برمجي كامل +tags: +- Aspose.PDF +- C# +- Digital Signature +title: إضافة توقيع رقمي لملف PDF في C# – دليل خطوة بخطوة كامل +url: /ar/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# إضافة توقيع رقمي PDF – دليل خطوة بخطوة كامل + +هل احتجت يومًا إلى **add digital signature pdf** لكن لم تكن متأكدًا من أين تبدأ؟ لست وحدك؛ كثير من المطورين يواجهون نفس المشكلة عندما تتطلب الأوراق توقيعًا قانونيًا والقاعدة البرمجية لا تعرف سوى إنشاء ملفات PDF عادية. + +في هذا البرنامج التعليمي سنستعرض حلًا عمليًا يتيح لك **add digital signature pdf** المستندات باستخدام Aspose.PDF for .NET، وإنشاء توقيع PKCS#7 منفصل، وتوقيع الـ PDF بشهادة PFX—كل ذلك باستخدام C# النقي. في النهاية ستحصل على مقتطف جاهز للتنفيذ، وتفهم “السبب” وراء كل استدعاء، وتعرف كيف تعدل النهج لحالات الحافة. + +## ما ستتعلمه + +- كيفية تحميل ملف PDF غير موقع وتحضيرها للتوقيع. +- آلية **create pkcs7 detached signature** ولماذا قد تفضل التوقيع المنفصل على المدمج. +- الخطوات الدقيقة لـ **sign pdf using pfx** باستخدام رد نداء مخصص، مما يمنحك تحكمًا كاملاً في العملية التشفيرية. +- نصائح لتشخيص المشكلات الشائعة (شهادة مفقودة، خوارزمية تجزئة غير صحيحة، إلخ). + +### المتطلبات المسبقة + +| المتطلب | السبب | +|-------------|--------| +| .NET 6.0 أو أحدث | ميزات لغة حديثة ومعالجة ذاكرة أفضل. | +| Aspose.PDF for .NET (حزمة NuGet) | يوفر `PdfFileSignature`، `PKCS7Detached`، وغيرها من أدوات PDF. | +| ملف PFX صالح (`.pfx`) مع المفتاح الخاص | مطلوب لخطوة **sign pdf using pfx**. | +| معرفة أساسية بـ C# | الشيفرة بسيطة، لكن فهم عبارات `using` يساعد. | + +> **نصيحة احترافية:** احفظ كلمة مرور الـ PFX بعيدًا عن التحكم بالمصدر—استخدم متغيرات البيئة أو Azure Key Vault في بيئات الإنتاج. + +--- + +## كيفية إضافة توقيع رقمي PDF باستخدام Aspose.PDF + +فيما يلي نقسم العملية إلى خمس خطوات قابلة للهضم. كل خطوة تتضمن مقتطف شيفرة، شرحًا لـ *لماذا* هي مهمة، وفحصًا سريعًا للتأكد من صحتها. + +![لقطة شاشة لملف PDF موقع في عارض، تُظهر حقل توقيع مرئي](/images/add-digital-signature-pdf.png "مثال على add digital signature pdf") + +### الخطوة 1 – تحميل مستند PDF غير الموقع + +أولًا نحتاج إلى كائن `Document` يمثل ملف الـ PDF الذي تريد توقيعه. استخدام `using var` يضمن تحرير مقبض الملف تلقائيًا. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**لماذا؟** +تتعامل Aspose مع الـ PDF كرسوم بيانية كائنية؛ تحميله يمنحك الوصول إلى الصفحات، التعليقات، وتدفق البايتات الداخلي الذي سيُجرى تجزئته لاحقًا للتوقيع. + +### الخطوة 2 – تهيئة المساعد PdfFileSignature + +`PdfFileSignature` هو الصنف الذي يطبق الغلاف التشفيري فعليًا. يعمل يدًا بيد مع `PKCS7Detached`. + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**لماذا؟** +فصل الموقّع عن المستند يسمح لك بإعادة استخدام نفس كائن `Document` لعمليات أخرى (مثل إضافة علامات مائية) قبل إكمال التوقيع. + +### الخطوة 3 – إنشاء توقيع PKCS#7 منفصل (Create PKCS7 Detached Signature) + +**PKCS#7 detached signature** يخزن فقط تجزئة الـ PDF، وليس الـ PDF نفسه. هذا مثالي للمستندات الكبيرة أو عندما تحتاج إلى إبقاء الملف الأصلي دون تعديل. + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**لماذا رد نداء مخصص؟** +أحيانًا يكون مفتاح التوقيع مخزنًا في HSM أو Azure Key Vault، ولا يمكن استخراج المفتاح الخاص مباشرة. عبر توفير `CustomSignHash` تُسلم التجزئة إلى الخدمة التي تحتفظ بالمفتاح، مما يحافظ على سرية المادة الخاصة. + +**ماذا لو لم تحتاج إلى رد نداء مخصص؟** +يمكنك حذف `CustomSignHash`؛ ستستخدم Aspose المفتاح الخاص داخل الـ PFX تلقائيًا. إلا أن المسار المخصص أكثر مرونة ويتماشى مع متطلبات الامتثال. + +### الخطوة 4 – تطبيق التوقيع على صفحة محددة (Sign PDF Using PFX) + +الآن نضع حقل توقيع مرئي على الصفحة. المستطيل يحدد الموقع والحجم (بالنقاط). + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**لماذا تحديد مستطيل؟** +التوقيع المرئي يساعد المستخدمين النهائيين على رؤية أن المستند موقع. إذا ضبطت `isVisible` على `false` يصبح التوقيع غير مرئي—صحيح من الناحية القانونية، لكنه أصعب اكتشافًا. + +**حالة حافة:** إذا كان الـ PDF لا يحتوي على صفحات (ملف فارغ) سيُطلق الاستدعاء استثناء `ArgumentOutOfRangeException`. تحقق دائمًا من `pdfDocument.Pages.Count > 0` قبل التوقيع. + +### الخطوة 5 – حفظ الـ PDF الموقع + +أخيرًا، احفظ المستند الموقع على القرص. يمكنك أيضًا بثه مباشرةً إلى استجابة في ASP.NET Core. + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**نصيحة للتحقق:** افتح الملف الناتج في Adobe Acrobat Reader. يجب أن يظهر لوحة التوقيع علامة تحقق خضراء (بشرط أن تكون الشهادة موثوقة على الجهاز). + +--- + +## مثال عملي كامل + +نجمع كل ما سبق في برنامج console مستقل يمكنك نسخه ولصقه وتشغيله (بعد تعديل المسارات وكلمات المرور). + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**الناتج المتوقع:** يطبع الكونسول “✅ PDF signed successfully!” وتظهر الملف `CustomSigned.pdf` في نفس المجلد. عند فتحه، ستلاحظ وجود عنصر توقيع في الإحداثيات (100,100)‑(300,200). + +--- + +## الأسئلة المتكررة وحالات الحافة + +### ماذا لو كان ملف الـ PFX محميًا ببطاقة ذكية؟ + +استخدم رد النداء `CustomSignHash` لإرسال التجزئة إلى برنامج تشغيل البطاقة الذكية. سيعيد البرنامج توقيع البايتات، وتقوم Aspose بدمجها دون كشف المفتاح الخاص. + +### هل يمكن توقيع عدة صفحات مرة واحدة؟ + +نعم. استدعِ `pdfSigner.Sign` داخل حلقة، مع تعديل `pageNumber` وربما المستطيل لكل صفحة. تذكر أن كل استدعاء يضيف كائن توقيع منفصل؛ قد يعرض بعض العارضين هذه التواقيع بشكل فردي. + +### كيف أغيّر خوارزمية التجزئة؟ + +`PKCS7Detached` يستخدم SHA‑256 افتراضيًا، لكن يمكنك تعيين خاصية `HashAlgorithm`: + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +تأكد من أن مزود التوقيع يدعم الخوارزمية المختارة. + +### ماذا إذا لم تكن سلسلة الشهادة موثوقة على جهاز العميل؟ + +ضمن السلسلة الكاملة في ملف الـ PFX، أو وزّع شهادة الجذر إلى مخزن الثقة لدى المستخدم النهائي. وإلا سيظهر Acrobat رسالة “Signature is unknown”. + +### هل التوقيع المنفصل متوافق مع PDF/A‑3؟ + +PDF/A‑3 يتطلب توقيعات مدمجة، لذا قد لا يكون PKCS#7 المنفصل متوافقًا. في هذه الحالة احذف رد النداء `CustomSignHash` ودع Aspose يتولى التوقيع داخليًا، مما ينتج توقيعًا مدمجًا. + +--- + +## أفضل الممارسات للإنتاج + +1. **لا تكتب كلمات المرور صراحةً في الشيفرة.** استخرجها من متغيرات البيئة أو مدير الأسرار. +2. **تحقق من صحة الـ PDF قبل التوقيع.** الملفات الفاسدة تؤدي إلى استثناء `PdfFileSignatureException`. +3. **سجّل خوارزمية التجزئة وبصمة الشهادة** لأغراض التدقيق. +4. **اختبر مع عارضات PDF متعددة** (Adobe Reader, Foxit, Chrome) لضمان ظهور التوقيع كما هو متوقع. +5. **فكّر في إضافة طابع زمني** عبر طلب TSA (Time‑Stamp Authority)، مما يعزز الصفة القانونية للتوقيع. + +--- + +## الخلاصة + +لقد أظهرنا لك كيفية **add digital signature pdf** باستخدام Aspose.PDF، وإنشاء **PKCS#7 detached signature**، و**sign pdf using pfx** مع رد نداء مخصص. المثال الكامل يعمل مباشرةً، والشروحات تمنحك الثقة لتعديل العملية لتتناسب مع HSMs، خدمات الطابع الزمني، أو توافق PDF/A. + +بعد ذلك، قد تستكشف **توقيع مستندات متعددة دفعةً واحدة**، دمج **Azure Key Vault** لتخزين المفاتيح بأمان، أو إضافة **تخصيص بصري** لمظهر التوقيع. كل هذه المواضيع تبني مباشرةً على الأساس الذي وضعناه هنا. + +إذا اتبعت الخطوات، فأنت الآن تمتلك حلاً قويًا يمكنك مشاركته مع زملائك—أو حتى الإشارة إليه في إجابة مساعد ذكي. توقيعًا سعيدًا، ولا تتردد بترك تعليق إذا كان هناك ما يحتاج إلى توضيح! + +{{< /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/arabic/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/arabic/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..0d42a2996 --- /dev/null +++ b/pdf/arabic/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-03-06 +description: تعلم كيفية التحقق من التوقيع في ملف PDF باستخدام Aspose PDF في C#. تحقق + خطوة بخطوة من توقيع PDF، تحقق من صحة توقيع PDF وتعامل مع التوقيعات المخترقة. +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: ar +og_description: كيفية التحقق من التوقيع في ملف PDF باستخدام Aspose PDF. اتبع هذا الدليل + لإجراء التحقق من توقيع PDF، والتحقق من صحة توقيع PDF، واكتشاف التوقيعات المخترقة + في C#. +og_title: كيفية التحقق من التوقيع في ملف PDF باستخدام C# – دليل Aspose الكامل +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: كيفية التحقق من التوقيع في ملف PDF باستخدام C# – دليل Aspose الكامل +url: /ar/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية التحقق من التوقيع في PDF باستخدام C# – دليل Aspose الكامل + +هل تساءلت يومًا **كيفية التحقق من التوقيع** في ملف PDF دون أن تشعر بالإحباط؟ لست وحدك. يواجه العديد من المطورين صعوبة عندما يحتاجون إلى **pdf signature verification** لأسباب تتعلق بالامتثال أو التدقيق، ويمكن أن يسبب النهج المعتاد “فقط ثق بالمكتبة” مشاكل. + +في هذا الدرس سنستعرض حلًا عمليًا من البداية إلى النهاية لا يقتصر فقط على **validate pdf signature** بل يخبرك أيضًا إذا تم العبث بالتوقيع. سنستخدم مكتبة **Aspose PDF**، مما يعني أن الشيفرة تعمل على .NET 6+، .NET Framework 4.6+ وحتى .NET Core. في النهاية ستحصل على مقطع جاهز للتنفيذ يمكنك إدراجه في أي مشروع C#. + +## ما ستحتاجه + +- **Aspose.Pdf** حزمة NuGet (أحدث إصدار وقت كتابة المقال – 23.12). +- بيئة تطوير .NET (Visual Studio، Rider، أو VS Code). +- ملف PDF موقّع (سنسميه `Signed.pdf`). +- معرفة أساسية بـ C# – لا شيء معقد، فقط عبارات `using` المعتادة وإدخال/إخراج `Console`. + +هذا كل شيء. لا خدمات إضافية، ولا ملفات إعدادات غامضة. جاهز؟ لنبدأ. + +![مخطط كيفية التحقق من التوقيع](image.png "كيفية التحقق من التوقيع") + +## الخطوة 1: إعداد مشروعك للتحقق من توقيع PDF + +قبل أن تتمكن من استدعاء أي Aspose API تحتاج إلى الإشارة إلى المكتبة. افتح الطرفية أو Package Manager Console وشغّل: + +```bash +dotnet add package Aspose.Pdf +``` + +أو، إذا كنت تفضّل الواجهة الرسومية، ابحث عن **Aspose.Pdf** في NuGet Package Manager وقم بتثبيته. هذه الخطوة حاسمة لأنه بدون تجميع **aspose pdf signature** لن تتمكن من الوصول إلى الفئة `PdfFileSignature` لاحقًا. + +> **نصيحة احترافية:** استهدف .NET 6 أو أعلى للحصول على أفضل أداء وتجنب تحذيرات التوافق القديمة. + +## الخطوة 2: تحميل مستند PDF + +الآن بعد تثبيت الحزمة، يمكننا تحميل ملف PDF الذي نريد فحصه. تمثل الفئة `Document` الملف بالكامل في الذاكرة. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**لماذا هذا مهم:** تحميل المستند يمنحنا الوصول إلى هياكله الداخلية، بما في ذلك حقول التوقيع. إذا كان الملف مفقودًا أو تالفًا، ستطرح الفئة `Document` استثناءً يمكنك التقاطه لتوفير تجربة مستخدم أكثر سلاسة. + +## الخطوة 3: إنشاء كائن Aspose PdfFileSignature + +مع وجود المستند، الخطوة التالية هي إنشاء كائن `PdfFileSignature`. هذه الفئة الواجهة تعرف كيفية قراءة، والتحقق، ومعالجة التوقيعات الرقمية المدمجة في ملفات PDF. + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**شرح:** يأخذ مُنشئ `PdfFileSignature` الـ `Document` المحمَّل. داخليًا يقوم بتحليل قاموس التوقيع، مما يجعل طرقًا مثل `VerifySignature` و `IsSignatureCompromised` متاحة. + +## الخطوة 4: التحقق من سلامة التوقيع + +جوهر **pdf signature verification** هو طريقة `VerifySignature`. تُعيد `true` إذا كان التجزئة المشفرة يطابق القيمة المخزنة وسلسلة الشهادات موثوقة (بافتراض أنك قمت بإعداد مدير الثقة، وهو ما سنتجاوزه للاختصار). + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +إذا كان لديك عدة توقيعات، فقط غيّر الفهرس (`0`، `1`، …). تتحقق الطريقة من كل من السلامة والثقة في خطوة واحدة، وهذا هو السبب في أنها الخيار المفضل لمعظم السيناريوهات. + +## الخطوة 5: اكتشاف توقيع مخترق + +حتى التوقيع “الصحيح” يمكن أن يُخترق إذا تم تعديل المستند بعد التوقيع. توفر لنا Aspose الطريقة `IsSignatureCompromised` لاكتشاف هذه الحالة الدقيقة. + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**متى تستخدمها:** افترض أن ملف PDF موقّع، ثم يضيف مستخدم تعليقًا أو يغيّر صفحة. ستختلف التجزئة، وستعيد `IsSignatureCompromised` `true` بينما قد تظل `VerifySignature` `true` إذا كانت الشهادة نفسها صالحة. فحص العلامتين معًا يمنحك صورة كاملة. + +## الخطوة 6: تفسير النتائج + +الآن لدينا قيمتين منطقيتين: `isSignatureValid` و `isSignatureCompromised`. دعنا نحولهما إلى مخرجات صديقة للكونسول. + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### النتيجة المتوقعة + +| السيناريو | مخرجات الكونسول | +|---|---| +| صحيح وغير مخترق | `Signature OK` | +| صحيح لكن مخترق (تم تغيير المستند) | `Signature compromised!` | +| غير صالح (الشهادة غير موثوقة، التجزئة غير متطابقة) | `Signature verification failed` | + +## مثال كامل يعمل + +بجمع كل ما سبق، إليك البرنامج الكامل الجاهز للتنفيذ: + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +انسخ، الصق، عدل مسار `pdfPath`، وشغّل. إذا تم إعداد كل شيء بشكل صحيح سترى إحدى الرسائل الثلاث المذكورة أعلاه. + +## الأخطاء الشائعة ونصائح للتحقق من توقيع PDF + +| المشكلة | سبب حدوثها | كيفية الإصلاح / التجنب | +|---|---|---| +| **غياب ترخيص Aspose** | الإصدار التجريبي المجاني يضيف علامة مائية وقد يحد من بعض استدعاءات الـ API. | سجِّل ترخيصًا (`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`). | +| **تعدد التوقيعات ولكن الفهرس خاطئ** | قد تكون تتحقق من التوقيع الخطأ، مما يؤدي إلى نتائج سلبية خاطئة. | استخدم حلقة عبر `signatureVerifier.GetSignatureCount()` وتفقد كل واحدة. | +| **سلسلة الشهادات غير موثوقة** | `VerifySignature` يفشل إذا لم يكن الـ CA الجذر في المخزن الموثوق. | أضف الـ CA الموقّع إلى مخزن Windows Trusted Root أو قم بتكوين `CertificateValidator` مخصص. | +| **الملف مقفل من عملية أخرى** | فتح ملف PDF لا يزال مفتوحًا في مكان آخر قد يسبب استثناء `IOException`. | استخدم `FileStream` مع `FileShare.ReadWrite` أو انسخ إلى ملف مؤقت أولاً. | +| **مسار PDF غير صحيح** | خطأ إملائي بسيط يؤدي إلى استثناء `FileNotFoundException`. | تحقق من صحة المسار باستخدام `File.Exists(pdfPath)` قبل التحميل. | + +### حالات الحافة التي قد تواجهها + +- **Detached signatures**: بعض ملفات PDF تخزن التوقيعات خارجيًا. `PdfFileSignature` من Aspose يدعم حاليًا التوقيعات المدمجة فقط. +- **Timestamped signatures**: إذا كنت بحاجة للتحقق من سلطة الطابع الزمني (TSA)، سيتعين عليك استدعاء `VerifySignature` مع كائن `VerificationOptions` مخصص—وهو خارج نطاق هذا الدليل السريع لكنه مهم للمشاريع التي تتطلب امتثالًا عاليًا. + +## الخطوات التالية – توسيع منطق التحقق الخاص بك + +الآن بعد أن أتقنت أساسيات **how to verify signature**، قد ترغب في: + +1. **Validate PDF signature** مقابل قائمة من الشهادات الموثوقة (مثل PKI المؤسسية). +2. **Export signature details** (اسم الموقّع، وقت التوقيع، بصمة الشهادة) باستخدام `GetSignatureInfo`. +3. **Batch‑process multiple PDFs** في مجلد، وتسجيل النتائج في ملف CSV لأغراض التدقيق. + +جميع هذه توسيعات بسيطة للكود الذي غطيناه للتو، وتبقيك داخل نظام **aspose pdf signature** نفسه. + +--- + +**باختصار**، أنت الآن تعرف بالضبط **how to verify signature** في ملف PDF باستخدام C# و Aspose، وكيفية اكتشاف توقيع مخترق، وما يجب فعله عندما يفشل التحقق. النهج قوي، يعمل مع توقيعات متعددة، ويمكن دمجه في خطوط معالجة مستندات أكبر. + +هل لديك تعديل على هذا السيناريو؟ ربما تحتاج إلى توقيع ملفات PDF بدلاً من التحقق منها، أو تتعامل مع ملفات PDF مشفّرة. اترك تعليقًا، وسنستكشف تلك الجوانب معًا. برمجة سعيدة! + +{{< /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/arabic/net/programming-with-stamps-and-watermarks/_index.md b/pdf/arabic/net/programming-with-stamps-and-watermarks/_index.md index 4e14b18c3..c821b626a 100644 --- a/pdf/arabic/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/arabic/net/programming-with-stamps-and-watermarks/_index.md @@ -39,6 +39,7 @@ | [الجدول في قسم الرأس والتذييل](./table-in-header-footer-section/) | تعرّف على كيفية إضافة نص بسهولة إلى تذييل ملف PDF باستخدام Aspose.PDF لـ .NET. دليل خطوة بخطوة مُرفق لضمان التكامل السلس. | | [النص في تذييل ملف PDF](./text-in-footer/) |تعرف على كيفية إضافة نص في تذييل ملف PDF باستخدام Aspose.PDF لـ .NET. | | [النص في رأس ملف PDF](./text-in-header/) تعلم كيفية إضافة عناوين نصية إلى ملفات PDF باستخدام Aspose.PDF لـ .NET من خلال هذا البرنامج التعليمي خطوة بخطوة. حسّن مستنداتك بكفاءة وفعالية. +| [إنشاء مستند PDF مع ترقيم بيثس في C# – دليل كامل](./create-pdf-document-with-bates-numbering-in-c-full-guide/) تعرّف على كيفية إضافة ترقيم بيثس إلى ملفات PDF باستخدام Aspose.PDF لـ .NET عبر دليل خطوة بخطوة مع أمثلة كود. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/arabic/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/arabic/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..038587291 --- /dev/null +++ b/pdf/arabic/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,182 @@ +--- +category: general +date: 2026-03-06 +description: إنشاء مستند PDF باستخدام C# وإضافة أرقام باتس بسهولة. تعلم كيفية إضافة + صفحة فارغة إلى PDF، وضع ختم على الصفحة، وتنفيذ ترقيم باتس. +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: ar +og_description: إنشاء مستند PDF في C# وإضافة رقم بَيتس. يوضح هذا الدليل كيفية إضافة + صفحة فارغة إلى PDF، وضع ختم على الصفحة، وتطبيق ترقيم بَيتس. +og_title: إنشاء مستند PDF مع ترقيم بيتس – دليل C# +tags: +- Aspose.Pdf +- C# +- PDF automation +title: إنشاء مستند PDF مع ترقيم بيتس في C# – دليل كامل +url: /ar/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# إنشاء مستند PDF مع ترقيم Bates في C# + +هل احتجت يوماً إلى **إنشاء مستند PDF** باستخدام C# وتساءلت كيف تضيف رقم Bates دون أن تفقد أعصابك؟ لست وحدك—مكاتب المحاماة والمحاكم وحتى بعض فرق الامتثال في الشركات تواجه هذا اللغز يوميًا. الخبر السار؟ ببضع أسطر من كود Aspose.Pdf يمكنك إنشاء PDF جديد تمامًا، إضافة صفحة فارغة، وختم رقم Bates بشكل صحيح في تدفق واحد سلس. + +في هذا الدرس سنستعرض العملية بالكامل: من إعداد المشروع، إلى إضافة صفحة PDF فارغة، إلى معرفة **كيفية إضافة ترقيم Bates**، وأخيرًا **وضع الختم على الصفحة** وحفظ النتيجة. في النهاية ستحصل على مقتطف جاهز يمكنك إدراجه في أي تطبيق .NET. لا مراجع غامضة، مجرد مثال كامل وقابل للتنفيذ. + +## ما ستحتاجه + +- **.NET 6+** (أو .NET Framework 4.6+ – Aspose.Pdf يعمل مع كلاهما) +- حزمة NuGet **Aspose.Pdf for .NET** (`Install-Package Aspose.Pdf`) +- بيئة تطوير متكاملة جيدة (Visual Studio، Rider، أو VS Code مع امتداد C#) + +هذا كل ما تحتاجه. لا ملفات DLL إضافية، ولا خدمات خارجية. هيا نبدأ. + +## الخطوة 1: إنشاء مستند PDF – الإعداد الأولي + +أولاً، نحتاج إلى كائن `Document` جديد. فكر فيه كقماش فارغ سيُملأ بكل ما يلي. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **لماذا هذا مهم:** فئة `Document` هي نقطة الدخول لكل عملية في Aspose. إنشاء كائن منها يمنحك الوصول إلى مجموعة `Pages`، والبيانات الوصفية، وإعدادات الأمان—كل اللبنات الأساسية لإنشاء PDF احترافي. + +## الخطوة 2: إضافة صفحة PDF فارغة + +PDF بدون صفحات يشبه كتابًا بلا صفحات—غير مفيد. إضافة صفحة فارغة أمر بسيط، وتوفر لنا سطحًا لختم رقم Bates عليه. + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **نصيحة محترف:** إذا كنت بحاجة إلى عدة صفحات، فقط استدعِ `pdfDocument.Pages.Add()` داخل حلقة. كل استدعاء يُعيد كائن `Page` جديد يمكنك تخصيصه بشكل مستقل. + +## الخطوة 3: كيفية إضافة ترقيم Bates – إنشاء TextStamp + +الآن يأتي جوهر الموضوع: **رقم Bates**. في Aspose.Pdf هو مجرد `TextStamp` مع علامة `Artifact` خاصة. + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **لماذا نحدد `Artifact`**: بعض قارئات PDF تعرض أرقام Bates كبيانات وصفية قابلة للبحث. وضع العلامة `BatesNumbering` على الختم يضمن أن الأدوات اللاحقة يمكنها التعرف عليه تلقائيًا. + +## الخطوة 4: وضع الختم على الصفحة + +مع جاهزية الختم، الآن **نضع الختم على الصفحة**. هذه هي الخطوة التي يظهر فيها الرقم بصريًا داخل PDF. + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **حالة حافة:** إذا كنت بحاجة إلى زيادة الرقم في كل صفحة، يمكنك المرور على `pdfDocument.Pages` وتحديث `batesStamp.Value` قبل استدعاء `AddStamp`. المثال هنا يبقي الأمر بسيطًا برقم ثابت “Bates‑001”. + +## الخطوة 5: حفظ والتحقق من النتيجة + +أخيرًا، نقوم بحفظ PDF على القرص. اختر مجلدًا لديك صلاحية كتابة فيه؛ وإلا ستواجه استثناء `UnauthorizedAccessException`. + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +عند فتح `BatesStamped.pdf` في أي عارض يجب أن ترى “Bates‑001” صغيرًا مُثبتًا في الزاوية السفلية اليمنى للصفحة الفارغة. + +> **الناتج المتوقع:** +> ![PDF مع ختم رقم Bates](image-placeholder.png "PDF مع ختم رقم Bates") +> *نص بديل: PDF مع ختم رقم Bates في الزاوية السفلية اليمنى.* + +إذا لم يظهر الرقم، تحقق من قيم الهوامش وتأكد من أن حجم الصفحة ليس صغيرًا جدًا (A4 الافتراضي يعمل جيدًا). كما تأكد أن علامة `Artifact` لم تُحذف بواسطة أي أدوات معالجة لاحقة. + +## مثال كامل يعمل + +فيما يلي البرنامج الكامل جاهز للنسخ واللصق. يتضمن جميع توجيهات `using` والتعليقات لتبقى موجهًا. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +شغّل البرنامج، افتح الـ PDF، وسترى رقم Bates بالضبط حيث أخبرناه أن يضعه. 🎉 + +## الاختلافات الشائعة والمفاجآت + +| السيناريو | ما الذي يجب تغييره | السبب | +|----------|-------------------|-------| +| **عدة صفحات، أرقام متزايدة** | كرّر `pdfDocument.Pages`، وضع `batesStamp.Value = $"Bates-{i:D3}"` قبل `AddStamp` | يمنح كل صفحة معرفًا فريدًا، وهو شائع في حزم المستندات القانونية | +| **موضع مختلف (أعلى‑يسار)** | غيّر `HorizontalAlignment = HorizontalAlignment.Left` و `VerticalAlignment = VerticalAlignment.Top` | بعض المؤسسات تفضّل الرقم في الرأس بدلاً من التذييل | +| **خط أو لون مخصص** | اضبط `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` | يحسن القابلية للقراءة أو يطابق إرشادات العلامة التجارية | +| **إضافة PDF موجود كخلفية** | حمّل PDF المصدر بـ `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` | مفيد عندما تحتاج إلى الختم فوق نموذج مُولد مسبقًا | + +## الخلاصة + +لقد أظهرنا لك كيفية **إنشاء مستند PDF**، **إضافة صفحة PDF فارغة**، و**إضافة رقم Bates** باستخدام Aspose.Pdf for .NET، ثم **وضع الختم على الصفحة** وحفظ الملف. الكود مختصر عمدًا لتتمكن من تعديله ليتناسب مع سير عمل أكبر—سواءً كنت تُعالج عشرات الملفات دفعيًا أو تدمجه في خدمة ويب. + +إذا كنت مستعدًا للخطوة التالية، فكر في: + +- أتمتة منطق الزيادة للأرشيفات الكبيرة. +- دمج توليد PDF في API باستخدام ASP.NET Core. +- إضافة أمان (حماية بكلمة مرور) عبر `pdfDocument.Encrypt(...)`. + +لا تتردد في التجربة، واكتشاف الأخطاء، وطرح الأسئلة في التعليقات. برمجة سعيدة، ولتكن ملفات PDF دائمًا مختومة بشكل مثالي! + +{{< /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/arabic/net/programming-with-tagged-pdf/_index.md b/pdf/arabic/net/programming-with-tagged-pdf/_index.md index 9f7b696a1..1924c943d 100644 --- a/pdf/arabic/net/programming-with-tagged-pdf/_index.md +++ b/pdf/arabic/net/programming-with-tagged-pdf/_index.md @@ -45,6 +45,7 @@ | [عناصر بنية النص في ملف PDF](./text-structure-elements/) تعلم كيفية التعامل مع عناصر بنية النص في ملفات PDF باستخدام Aspose.PDF لـ .NET. يغطي هذا الدليل خطوة بخطوة كل ما تحتاجه لإنشاء ملفات PDF منظمة. | [التحقق من صحة ملف PDF](./validate-pdf/) | تعرّف على كيفية التحقق من صحة ملف PDF باستخدام Aspose.PDF لـ .NET. تحقق من توافقه مع المعايير وأنشئ تقرير التحقق. | | [إنشاء ملف PDF مُعلَّم في C# – دليل خطوة بخطوة كامل](./create-tagged-pdf-in-c-complete-step-by-step-guide/) |تعلم كيفية إنشاء ملف PDF مُعلَّم باستخدام C# و Aspose.PDF خطوة بخطوة.| +| [إنشاء ملف PDF مُعلَّم في C# – دليل خطوة بخطوة](./create-tagged-pdf-in-c-step-by-step-guide/) |تعلم كيفية إنشاء ملف PDF مُعلَّم باستخدام C# و Aspose.PDF باتباع خطوات مفصلة.| {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/arabic/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/arabic/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..a7c043dba --- /dev/null +++ b/pdf/arabic/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-03-06 +description: إنشاء ملف PDF مع علامات باستخدام Aspose.Pdf في C#. تعلم كيفية إضافة صورة + إلى PDF، وتحديد موضع الشكل، ووضع علامات على PDF لتحسين إمكانية الوصول. +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: ar +og_description: إنشاء ملف PDF مع علامات باستخدام Aspose.Pdf. يوضح هذا الدليل كيفية + إضافة صورة إلى PDF، وتحديد موضع الشكل، ووضع علامات على PDF لتحسين إمكانية الوصول. +og_title: إنشاء PDF مع علامات في C# – دليل كامل +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: إنشاء ملف PDF معلم في C# – دليل خطوة بخطوة +url: /ar/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# إنشاء PDF مع علامات في C# – دليل كامل + +هل احتجت يوماً إلى **إنشاء PDF مع علامات** في C# لكن لم تعرف من أين تبدأ؟ لست وحدك؛ فإمكانية الوصول أصبحت ضرورية في هذه الأيام، وPDF مع علامات هو العمود الفقري للوثيقة المتوافقة. في هذا الدليل سنستعرض مثالاً عملياً يضيف **صورة إلى PDF**، يحدد موضع الشكل، ويظهر **كيفية وضع علامات على PDF** باستخدام Aspose.Pdf. في النهاية ستحصل على PDF مع علامات جاهز لتوزيعه على أي شخص. + +سنغطي كل شيء من تحميل ملف موجود إلى حفظ النتيجة النهائية، لذا لن تحتاج للبحث عن “كيفية إضافة صورة” في مكان آخر. لا إطالة—حل واضح وقابل للتنفيذ يعمل مع Aspose.Pdf 23.8 (الأحدث وقت كتابة هذا الدليل). افتح بيئة التطوير الخاصة بك، ولنبدأ. + +--- + +## ما ستحتاجه + +- **Aspose.Pdf for .NET** (حزمة NuGet `Aspose.Pdf`). +- .NET 6+ (أو .NET Framework 4.7.2+). +- ملف PDF إدخال يحتوي بالفعل على بنية منطقية (أي أنه مُعلَّم مسبقاً) – إذا لم يكن كذلك، يمكنك تفعيل العلامات عبر `pdfDocument.TaggedContent = true`. +- ملف صورة (`image.png`) تريد تضمينه. + +هذا كل ما تحتاجه. لا مكتبات إضافية، ولا ملفات إعدادات غامضة. + +--- + +## الخطوة 1: تحميل مستند PDF الموجود (إنشاء قاعدة PDF مع علامات) + +أول ما نقوم به هو فتح PDF الذي نريد تحسينه. تحميل الملف يمنحنا الوصول إلى بنيته المنطقية، وهو أمر أساسي لتدفقات **إنشاء PDF مع علامات**. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*لماذا هذا مهم:* بدون شجرة علامات، لن ينقل PDF المعلومات الهيكلية إلى قارئات الشاشة. تمكين العلامات يضمن أن أي عناصر جديدة نضيفها (مثل الشكل) ترث التسلسل الهرمي الصحيح. + +--- + +## الخطوة 2: الوصول إلى جذر البنية المنطقية (كيفية وضع علامات على PDF) + +الآن نتعمق في البنية المنطقية للـ PDF. العنصر الجذري هو الحاوية لجميع العلامات—فكر فيه كخريطة محتويات المستند. + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*شرح:* `logicalRoot` يتيح لنا إلحاق علامات جديدة مثل `
` أو ``. هذا هو جوهر **كيفية وضع علامات على PDF** برمجياً. + +--- + +## الخطوة 3: إنشاء علامة Figure وتحديد موضعها (تحديد موضع الشكل) + +علامة *Figure* تجمع المحتوى البصري مع تسمية اختيارية. سننشئ واحدة، نحدد موضعها، ونرفقها بالجذر. + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*لماذا نحدد موضعاً:* خطوة **تحديد موضع الشكل** تحدد أين سيظهر العنصر البصري على الصفحة. إذا تخطيت ذلك، قد يظهر الشكل في موقع غير متوقع أو يكون غير مرئي لتقنيات المساعدة. + +--- + +## الخطوة 4: إضافة تمثيل بصري – إدراج صورة (إضافة صورة إلى PDF) + +مع وجود العلامة، نحتاج إلى صورة فعلية. هذه هي الخطوة التي تجيب على **إضافة صورة إلى PDF**. + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*نقطة أساسية:* يجب أن تتطابق إحداثيات المستطيل مع `figureTag.Position` التي حددناها سابقاً؛ وإلا سيتعارض الشكل مع محتواه البصري، مما يفسد إمكانية الوصول. + +--- + +## الخطوة 5: حفظ PDF المحدث (إنهاء إنشاء PDF مع علامات) + +أخيراً، نقوم بحفظ التغييرات في ملف جديد. الحفاظ على الأصل دون تعديل يُعد ممارسة جيدة. + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +في هذه المرحلة لديك ملف **إنشاء PDF مع علامات** يحتوي على صورة موضوعة بشكل صحيح داخل علامة `
`. افتح `output.pdf` في Adobe Acrobat وتفقد لوحة *Tags* – يجب أن ترى عقدة `Figure` تحت الجذر. + +--- + +## مثال كامل وجاهز للتنفيذ + +فيما يلي البرنامج الكامل الذي يمكنك نسخه ولصقه في تطبيق Console. جميع الخطوات مرتبة بالترتيب الصحيح. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### النتيجة المتوقعة + +- يفتح `output.pdf` مع عرض الصورة عند النقاط (100, 150) وبحجم 300 × 200 نقطة. +- تُظهر لوحة *Tags* عنصر `Figure` يحيط بالصورة. +- أدوات قارئ الشاشة تُعلن “Figure” قبل وصف الصورة، مما يفي بمعايير إمكانية الوصول الأساسية. + +--- + +## أسئلة شائعة وحالات خاصة + +### ماذا لو لم يكن PDF المصدر مُعلَّمًا مسبقًا؟ + +يتيح لك Aspose.Pdf تفعيل العلامات عبر ضبط `pdfDocument.TaggedContent.IsTagged = true;`. ستُنشئ المكتبة شجرة علامات افتراضية، وبعد ذلك يمكنك إضافة علامات مخصصة كما هو موضح. + +### هل يمكنني إضافة تسمية توضيحية إلى الشكل؟ + +نعم. بعد إنشاء `figureTag`، يمكنك إرفاق `Paragraph` يحتوي على `TextFragment` وتعيين `Tag` الخاص به إلى `Caption`. مثال: + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### كيف أضع الشكل في صفحة مختلفة؟ + +استبدل `var firstPage = pdfDocument.Pages[1];` بالفهرس المطلوب للصفحة، مثل `pdfDocument.Pages[3]`. تذكر تعديل إحداثيات `Position` إذا كان حجم الصفحة مختلفًا. + +### ماذا لو احتجت إلى وضع علامات على عدة صور؟ + +أنشئ `Figure` جديد لكل صورة، أعط كل منها `Position` فريدة، وأضف كائن `Image` المناسب إلى الصفحة المعنية. يمكن تنفيذ ذلك عبر حلقة تمر على مجموعة من الصور. + +### هل يعمل هذا مع توافق PDF/A؟ + +يدعم Aspose.Pdf معايير PDF/A‑1b و PDF/A‑2b و PDF/A‑3b. عند إنشاء مستند PDF/A، تأكد من ضبط وضع التوافق قبل الحفظ: + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +منطق العلامات يبقى كما هو. + +--- + +## نصائح احترافية ومخاطر محتملة + +- **نصيحة احترافية:** استخدم دائمًا مسارات مطلقة أو `Path.Combine` لتجنب أخطاء “الملف غير موجود” أثناء التشغيل. +- **احذر من:** إحداثيات غير متطابقة بين علامة `Figure` ومستطيل `Image`—تقنيات المساعدة تعتمد على هذا التوافق. +- **ملاحظة أداء:** إذا كنت تعالج عدة صفحات، احزم تدفق الصورة داخل كتلة `using` لتحرير الموارد بسرعة. +- **تحقق من الإصدار:** الـ API المعروض يعمل مع Aspose.Pdf 23.8+. الإصدارات القديمة قد تحمل أسماء فئات مختلفة (مثل `LogicalStructureElement` بدلاً من `FigureElement`). + +--- + +## الخلاصة + +لقد أنشأنا **PDF مع علامات** من البداية إلى النهاية، وعرضنا **إضافة صورة إلى PDF**، وأظهرنا **كيفية تحديد موضع الشكل** بينما أجبنا على **كيفية وضع علامات على PDF** و**كيفية إضافة صورة** في مثال موحد. الكود جاهز للتنفيذ، والشروحات تغطي “السبب” وراء كل خطوة، والآن لديك أساس قوي لبناء ملفات PDF قابلة للوصول في C#. + +هل أنت مستعد للتحدي التالي؟ جرّب إضافة جداول باستخدام علامات `
`، أو دمج طبقة توافق PDF/A‑2b لأغراض الأرشفة. النمط نفسه—التحميل، الوصول إلى البنية المنطقية، إنشاء علامة، إرفاق محتوى بصري، الحفظ—ينطبق على معظم مهام إمكانية الوصول في PDF. + +إذا واجهت أي صعوبة أو لديك حالة استخدام غير مغطاة هنا، اترك تعليقًا أدناه. نتمنى لك تجربة وضع علامات ممتعة، واستمتع بإنشاء PDFs يمكن للجميع قراءتها! + +![مخطط يوضح PDF مع علامة Figure وصورة – يوضح كيفية إنشاء PDF مع علامات](placeholder-image.png "مثال إنشاء PDF مع علامات") + +{{< /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/digital-signatures/_index.md b/pdf/chinese/net/digital-signatures/_index.md index 746406a9e..a34669a65 100644 --- a/pdf/chinese/net/digital-signatures/_index.md +++ b/pdf/chinese/net/digital-signatures/_index.md @@ -59,6 +59,9 @@ Aspose.PDF Net 代码教程 ### [在 C# 中验证 PDF 签名 – 验证数字签名 PDF 的完整指南](./verify-pdf-signature-in-c-complete-guide-to-validate-digital/) 提供在 C# 环境下使用 Aspose.PDF 验证 PDF 数字签名的完整步骤和代码示例。 +### [如何使用 C# 读取 PDF 中的签名 – 分步指南](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +了解如何使用 C# 与 Aspose.PDF for .NET 读取 PDF 文件中的数字签名,确保文档的真实性和完整性。 + ## 其他资源 - [Aspose.PDF 用于网络文档](https://docs.aspose.com/pdf/net/) diff --git a/pdf/chinese/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/chinese/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..2773609e8 --- /dev/null +++ b/pdf/chinese/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,230 @@ +--- +category: general +date: 2026-03-06 +description: 如何使用 C# 读取 PDF 中的签名。学习加载 PDF 文档(C#),列出 PDF 签名,并快速可靠地获取 PDF 的数字签名。 +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: zh +og_description: 如何使用 C# 读取 PDF 中的签名。本指南展示了如何加载 PDF 文档、列出 PDF 签名,并在几个简单步骤中检索 PDF 的数字签名。 +og_title: 如何使用 C# 读取 PDF 中的签名 – 完整指南 +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: How to Read Signatures in PDF with C# – Step‑by‑Step Guide +url: /zh/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何使用 C# 读取 PDF 中的签名 – 完整指南 + +是否曾经想过 **如何读取已嵌入 PDF 文件的签名**?也许你正在构建合规仪表盘,或只是需要在签署的合同进入数据库之前进行审计。好消息是,只需几行 C# 代码和 Aspose.Pdf 库,你就可以直接从文件中提取签名名称——无需手动检查。 + +在本教程中,我们将演示如何在 C# 中加载 PDF 文档、列出 PDF 签名以及获取数字签名的 PDF 信息。完成后,你将拥有一个可直接运行的控制台应用程序,它会打印出找到的每个签名名称,并提供处理诸如受密码保护文件等边缘情况的技巧。 + +## 前提条件 + +- .NET 6.0 或更高版本(代码同样适用于 .NET Framework 4.6+) +- Aspose.Pdf for .NET(你可以从 Aspose 网站获取免费临时许可证) +- 已经包含一个或多个数字签名的 PDF(示例 `MultiSigned.pdf` 已包含在仓库中) + +> **专业提示:** 如果你使用 Visual Studio,请启用 *Nullable Reference Types* 以提前捕获与 null 相关的错误。 + +## 步骤 1:在 C# 中加载 PDF 文档 + +我们首先需要一个表示磁盘上 PDF 文件的 `Document` 对象。Aspose.Pdf 的 `Document` 类能够处理从简单文本提取到复杂表单处理的所有工作。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**这很重要的原因:** 加载 PDF 会验证文件是否存在且可读取。如果文件损坏或路径错误,我们会提前退出,而不是在后续枚举签名时遇到晦涩的错误。 + +## 步骤 2:创建 `PdfFileSignature` 辅助类 + +Aspose 将通用 PDF 处理(`Document`)与签名特定操作(`PdfFileSignature`)分离。实例化此辅助类后,我们即可访问诸如 `GetSignatureNames()` 的方法。 + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**这很重要的原因:** `PdfFileSignature` 类能够解析 PDF 中的 `/Sig` 字典条目,这正是数字签名所在的位置。使用它可以确保我们读取签名时保持其原始添加方式,保留所有加密元数据。 + +## 步骤 3:检索所有签名名称 + +现在进入 **如何读取签名** 的核心:调用 `GetSignatureNames()`。此方法返回一个字符串数组,包含每个签名的 *字段名称*。 + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**你将看到的结果:** 如果 `MultiSigned.pdf` 包含三个签名,名称分别为 `Signature1`、`Signature2` 和 `Signature3`,控制台输出将会是: + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## 步骤 4:(可选)验证每个签名的有效性 + +读取名称通常已经足够,但许多项目还需要了解每个签名是否仍然有效。Aspose 允许你通过字段名称验证签名: + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **边缘情况:** 如果 PDF 受密码保护,必须在调用 `VerifySignature` 之前提供密码。加载文档后立即使用 `pdfDocument.Encrypt.Password = "yourPassword";`。 + +## 完整工作示例 + +下面是完整的程序代码,你可以复制粘贴到新的控制台项目中(`dotnet new console`)。它包含所有步骤、错误处理以及可选的验证。 + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**预期输出**(假设有三个有效签名): + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## 处理常见变体 + +| 情况 | 需要更改的内容 | 原因 | +|-----------|----------------|-----| +| **受密码保护的 PDF** | 在创建 `PdfFileSignature` 之前设置 `pdfDocument.Encrypt.Password = "yourPwd";`。 | 如果没有密码,签名字典会被加密,`GetSignatureNames()` 将返回空数组。 | +| **大文件 PDF(> 100 MB)** | 使用 `pdfSigner.GetSignatureNames(0, 10)` 分页获取结果(第一个参数为起始索引)。 | 一次加载全部签名列表可能会消耗大量内存。 | +| **没有任何签名** | 代码已经会打印友好的警告。可以考虑将其记录为审计事件。 | 帮助下游流程决定是拒绝文件还是要求用户提供已签名的版本。 | +| **自定义签名字段名称** | 该方法返回签名时使用的任何字段名称,例如 `EmployeeApproval`。无需额外操作。 | 便于将签名映射回业务角色。 | + +## 最佳实践与技巧 + +- **释放对象**:`using var pdfSigner` 模式可确保本机资源及时释放。 +- **提前授权**:在 `Main` 开始时调用 `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");`,以避免评估水印。 +- **线程安全**:如果并行处理大量 PDF,请为每个线程实例化单独的 `PdfFileSignature`。该类不是线程安全的。 +- **日志记录**:在生产环境中,用结构化日志记录器(如 Serilog、NLog)替换 `Console.WriteLine`,以便捕获精确的签名名称用于审计追踪。 +- **版本检查**:代码适用于 Aspose.Pdf for .NET 23.10 及以上版本。旧版本可能需要使用 `PdfSignature` 而非 `PdfFileSignature`。 + +## 结论 + +我们已经介绍了使用 C# **读取 PDF 中签名** 的方法。通过加载 PDF 文档、创建 `PdfFileSignature` 辅助类并调用 `GetSignatureNames()`,即可列出文件中嵌入的所有数字签名。可选的验证提供了信任层,示例代码展示了如何将其集成到实际的控制台应用中。 + +准备好下一步了吗?尝试将其与 Aspose 的 `DigitalSignatureUtil` 结合,以提取签署者证书,或将签名列表输入到标记未签署合同的合规仪表盘中。可能性无限——只需记住在需要快速审计时 **load PDF document C#**、**list PDF signatures**、**get digital signatures PDF**。 + +祝编码愉快,愿你的 PDF 始终保持安全签署! + +{{< /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-conversion/_index.md b/pdf/chinese/net/document-conversion/_index.md index f2132a4a3..fe43ceea1 100644 --- a/pdf/chinese/net/document-conversion/_index.md +++ b/pdf/chinese/net/document-conversion/_index.md @@ -57,6 +57,7 @@ | [XML 转 PDFSet 图像路径](./xml-to-pdfset-image-path/) 学习如何使用 Aspose.PDF for .NET 轻松将 XML 转换为 PDF。本指南将逐步指导您完成从设置到完成的整个过程。| | [XPS 转 PDF](./xps-to-pdf/) 学习如何使用 Aspose.PDF for .NET 将 XPS 文件转换为 PDF,本教程循序渐进,非常适合开发人员和文档爱好者。| | [在 C# 中将 PDF 转换为 PDF/X‑4 – 步骤详解 ASP.NET PDF 教程](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) 通过本分步指南学习如何使用 Aspose.PDF for .NET 在 C# 中将 PDF 转换为 PDF/X‑4,适用于 ASP.NET 项目。| +| [Aspose PDF 教程:在 C# 中将 PDF 转换为 PDF/X‑4](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) | 通过本分步指南了解如何使用 Aspose.PDF for .NET 在 C# 中将 PDF 转换为 PDF/X‑4。| | [PDF 转 PNG 教程 – 在 C# 中将 PDF 页面转换为 PNG](./pdf-to-png-tutorial-convert-pdf-pages-to-png-in-c/) | 在本分步教程中学习如何使用 Aspose.PDF for .NET 将 PDF 页面转换为 PNG 图像。| {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/chinese/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/chinese/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..e92a288c2 --- /dev/null +++ b/pdf/chinese/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,224 @@ +--- +category: general +date: 2026-03-06 +description: Aspose PDF 教程展示了如何使用 Aspose 在 C# 中加载 PDF 文档,将 PDF 转换为 PDF/X‑4,并高效地保存转换后的 + PDF。 +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: zh +og_description: Aspose PDF 教程解释了如何在 C# 中加载 PDF 文档,将其转换为 PDF/X‑4 格式,并使用清晰的代码示例保存转换后的 + PDF。 +og_title: Aspose PDF 教程:在 C# 中将 PDF 转换为 PDF/X‑4 +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: Aspose PDF 教程:在 C# 中将 PDF 转换为 PDF/X‑4 +url: /zh/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose PDF 教程:在 C# 中将 PDF 转换为 PDF/X‑4 + +有没有想过如何使用 Aspose 将普通 PDF 转换为 PDF/X‑4 文件而毫不费力?你并不是唯一的——开发者经常需要一种可靠的方式来 **load PDF document C#**‑style(加载 PDF 文档 C# 方式),进行转换,然后 **save the converted PDF**(保存转换后的 PDF)以供后续工作流使用。在本指南中,我们将通过一个完整且可运行的示例来演示这一过程,使用最新的 Aspose.Pdf for .NET。 + +我们将涵盖从安装库、加载源 PDF、转换为 PDF/X‑4 标准,到最终将结果持久化到磁盘的全部内容。结束时,你将对 **how to use Aspose**(如何使用 Aspose)在此常见转换场景有扎实的了解,并获得处理边缘情况的技巧。 + +## 前置条件 + +- .NET 6.0 或更高版本(代码在 .NET Framework 上也能运行,但推荐使用 .NET 6+)。 +- 有效的 Aspose.Pdf for .NET 许可证文件(或者你可以在评估模式下快速测试)。 +- Visual Studio 2022 或任何兼容 C# 的 IDE。 +- 位于 `YOUR_DIRECTORY/input.pdf` 的输入 PDF 文件。 + +除 `Aspose.Pdf` 外不需要其他 NuGet 包。 + +## 通过 NuGet 安装 Aspose.Pdf + +打开终端或包管理器控制台并运行: + +```bash +dotnet add package Aspose.Pdf +``` + +这将获取最新的稳定版本(截至 2026 年 3 月,版本 23.12)。如果你更喜欢使用 UI,可在 NuGet 包管理器中搜索 *Aspose.Pdf* 并进行安装。 + +## 步骤 1:使用 Aspose 在 C# 中加载 PDF 文档 + +首先需要将源 PDF 加载到内存中。Aspose 的 `Document` 类是入口点。 + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**为什么这很重要:** 加载文件会验证路径是否存在以及 PDF 是否未损坏。`try/catch` 块为你提供了优雅的错误提示方式——当文件来自用户上传时非常方便。 + +## 步骤 2:将 PDF 转换为 PDF/X‑4 格式 + +PDF/X‑4 是一种针对可靠打印和归档设计的 PDF 子集。转换可确保所有字体均已嵌入,并且文件符合行业标准。 + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**为什么选择 `ConvertErrorAction.Delete`?** 某些旧版 PDF 包含(如不受支持的注释)等元素,这些元素会导致转换中止。删除它们可以保持流程顺畅,但如果需要保留这些元素,请检查输出结果。 + +### 可选:验证转换成功 + +如果想要更有把握,可以在转换后检查文档的 `PdfFormat`: + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## 步骤 3:保存转换后的 PDF 文件 + +现在文档已处于 PDF/X‑4 形态,将其写回磁盘。 + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**你将看到的结果:** 一个名为 `Converted_PDFX4.pdf` 的新文件会出现在 `YOUR_DIRECTORY` 中。使用任何支持 PDF/X‑4 的 PDF 查看器(如 Adobe Acrobat、Foxit 等)打开它,你会发现所有字体已嵌入,且文档符合 PDF/X‑4 规范。 + +![aspose pdf 教程 - 将 PDF 转换为 PDF/X‑4](/images/aspose-pdf-conversion.png "aspose pdf 教程展示 PDF/X‑4 转换结果") + +*图片的 alt 文本包含主要关键词,满足 SEO 要求。* + +## 完整的端到端示例 + +将所有内容整合在一起,下面是一个可自行复制粘贴到新 C# 项目中的完整控制台应用程序: + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +运行程序后,你应该会看到确认每一步的控制台消息。如果出现问题,错误信息会指向具体的阶段。 + +## 常见问题与边缘情况 + +### 如果需要保留注释怎么办? + +`ConvertErrorAction.Delete` 会剥离不受支持的对象,包括某些注释。如果保留它们至关重要,请切换为 `ConvertErrorAction.Keep`,但仍需测试输出——某些注释仍可能导致合规性警告。 + +### 如何处理大型 PDF(数百 MB)? + +Aspose.Pdf 会对文件进行流式处理,因此内存使用保持在适度水平。不过,对于极大的文件,你可能需要提升 `System.GC` 阈值或将文档分块处理(例如逐页转换)。 + +### 能否批量转换多个文件? + +完全可以。将加载‑转换‑保存逻辑包装在遍历 PDF 目录的 `foreach` 循环中。记得对每个文件单独处理异常,以免单个损坏的 PDF 中止整个批处理。 + +### 这在 Linux 上的 .NET Core 能否运行? + +可以。Aspose.Pdf 是跨平台的。只需确保已引用 `Aspose.Pdf` NuGet 包,并在 Linux 主机上安装相应的字体文件(如果需要文本渲染)。 + +## 实战技巧 + +- **提前设置许可证**:`Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` – 这将去除评估水印并提升性能。 +- **验证输出**:使用 Aspose 的 `PdfFormatValidator` 在发布文件前以编程方式确认 PDF/X‑4 合规性。 +- **记录转换时间**:大型批处理可通过计时每次转换(`Stopwatch`)来发现性能回退。 +- **避免硬编码路径**:优先使用配置文件或环境变量来提供 `inputPath` 和 `outputPath`——使应用更具可移植性。 + +## 结论 + +在本 **Aspose PDF 教程** 中,我们演示了一个简洁的端到端工作流,展示了 **how to use Aspose**(如何使用 Aspose)来 **load PDF document C#**(加载 PDF 文档 C#),将其转换为 **PDF/X‑4** 标准,并 **save the converted PDF**(保存转换后的 PDF)。该代码片段可直接运行,解释了每一步背后的 *why*,并指出了实际项目中可能遇到的陷阱。 + +现在你已经掌握了基础,可以扩展该方案——批量处理数十个文件、嵌入自定义元数据,或将转换集成到 Web API 中。可能性无限,而 Aspose.Pdf 为你提供了快速实现的工具。 + +对使用 Aspose 进行 PDF 处理还有更多疑问吗?留下评论,查阅官方 Aspose 文档,或尝试上面的代码。祝转换愉快! + +{{< /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-creation/_index.md b/pdf/chinese/net/document-creation/_index.md index c9719195b..2bd4699b7 100644 --- a/pdf/chinese/net/document-creation/_index.md +++ b/pdf/chinese/net/document-creation/_index.md @@ -77,6 +77,12 @@ Aspose.PDF Net 代码教程 ### [使用 Aspose.PDF 创建 PDF 文档 – 添加页面、形状并保存](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) 学习如何使用 Aspose.PDF 在 .NET 中创建 PDF 文档,添加页面和形状并保存。 +### [使用 Aspose.PDF 创建 PDF 文档 – 分步指南](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +一步步教您使用 Aspose.PDF 在 .NET 中创建 PDF 文档并保存。 + +### [使用 Aspose.PDF 创建 PDF 文档 – 完整 C# 指南](./create-pdf-document-with-aspose-pdf-full-c-guide/) +学习如何使用 Aspose.PDF 通过完整的 C# 指南创建 PDF 文档。 + ## 其他资源 - [Aspose.PDF 用于网络文档](https://docs.aspose.com/pdf/net/) diff --git a/pdf/chinese/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/chinese/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..96175e897 --- /dev/null +++ b/pdf/chinese/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-03-06 +description: 使用 Aspose.PDF 在 C# 中创建 PDF 文档——学习如何快速添加空白页、文本框、控件并保存 PDF。 +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: zh +og_description: 使用 Aspose.PDF 在 C# 中创建 PDF 文档。本指南展示了如何添加空白页、文本框、小部件,以及如何保存 PDF。 +og_title: 使用 Aspose.PDF 创建 PDF 文档 – 完整 C# 教程 +tags: +- pdf +- csharp +- aspose +- forms +title: 使用 Aspose.PDF 创建 PDF 文档 – 完整 C# 指南 +url: /zh/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 使用 Aspose.PDF 创建 PDF 文档 – 完整 C# 指南 + +是否曾经需要在 .NET 项目中从头 **create pdf document** 并且不知道从何入手?你并不孤单;许多开发者在面对首个需求——“生成一个在三页上都有相同文本框的可填写 PDF”时都会卡住。好消息是?使用 Aspose.PDF,你只需几行代码就能生成专业外观的 PDF。 + +在本教程中,我们将完整演示整个过程:从初始化新 PDF、**adding blank pages pdf**、插入 **textbox**、使用 **widget** 注释复制它,最后 **saving the PDF** 到磁盘。完成后,你将拥有一个名为 *MultiWidgetField.pdf* 的可直接使用的文件,并对每一步的意义有深入了解。 + +## 本指南涵盖内容 + +- 在编写任何代码之前所需的前置条件。 +- 使用 Aspose.PDF for .NET 逐步创建 PDF 文档。 +- 如何添加空白页面、文本框表单字段以及额外的 widget 实例。 +- 处理常见陷阱的技巧(例如页面索引、字段命名冲突)。 +- 一个完整的、可直接复制粘贴运行的 C# 程序。 + +没有外部文档链接,也没有“查看 API 文档”的快捷方式——所有你需要的内容都在这里。 + +## 前置条件 + +在深入之前,请确保你拥有: + +1. **.NET 6.0**(或更高版本)已在你的机器上安装。 +2. 有效的 **Aspose.PDF for .NET** 许可证或临时评估密钥。 +3. 开发环境,如 **Visual Studio 2022** 或带有 C# 扩展的 **VS Code**。 + +就这些——不需要其他任何东西。 + +## 步骤 1:初始化 PDF 文档并添加空白页面 + +在以编程方式 **create pdf document** 时,你首先要实例化一个 `Document` 对象。可以把它想象成打开一本全新的笔记本。随后添加所需的页面;本例中是三页空白页。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**为什么这很重要:** Aspose.PDF 在内部将页面视为零基集合,但其公共 API 为 1 基,因此 `Pages[1]` 是你刚添加的第一页。提前添加页面为后续放置表单字段提供了画布,而且比文档增长后再动态插入页面更高效。 + +> **专业提示:** 如果只需要单页,可以跳过循环,直接调用一次 `pdfDocument.Pages.Add()`。在循环中添加多页可以保持代码的可扩展性。 + +## 步骤 2:在首页定义 TextBox 表单字段 + +既然我们已有三张空白页,让我们在第一页放置一个 **textbox**。`TextBoxField` 是一种表单元素,终端用户在使用 Acrobat Reader 或任何支持表单的 PDF 查看器打开 PDF 时可以输入内容。 + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**为什么使用矩形坐标?** Aspose.PDF 使用点(1/72 英寸)作为单位。矩形 `(100, 700, 300, 730)` 将文本框大致放在页面中部,宽 200 pt,高 30 pt。根据你的布局需要调整这些数值。 + +> **常见问题:** *我需要设置 `Value` 属性吗?* +> 不需要,这是可选的。保持为空会显示空白字段;设置默认值可以引导用户。 + +## 步骤 3:为第 2、3 页的同一字段添加 Widget 注释 + +**widget** 是表单字段在特定页面上的可视化表现。默认情况下,字段只会出现在创建它的页面上。若要在其他页面复用同一文本框,需要向该字段的 `Widgets` 集合中添加额外的 `WidgetAnnotation` 对象。 + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**为什么需要 widget?** 没有它们,用户只能在第 1 页看到文本框,即使底层字段已存在。widget 允许在多个页面共享同一个逻辑字段,确保输入的文本在所有显示该字段的页面上同步出现。 + +> **特殊情况:** 如果需要在每页的不同坐标放置文本框,只需为每个 widget 更改 `Rectangle` 值即可。 + +## 步骤 4:将字段注册到文档的 Form 集合中 + +Aspose.PDF 为所有表单字段维护一个中心注册表。将字段添加到 `Form` 集合后,它就成为 PDF 交互式表单结构的一部分。 + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +第二个参数 (`"Comment"`) 是字段的 **完全限定名称**。它在整个文档中必须唯一,否则 Aspose 会抛出异常。 + +## 步骤 5:保存生成的 PDF – 如何保存 PDF + +最后,我们将内存中的文档持久化到磁盘。这就是教程中 **how to save pdf** 的部分。 + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**为什么要指定绝对路径?** 使用绝对路径可以避免工作目录的混淆,尤其是在 Visual Studio 调试器中运行程序时。如果你更喜欢相对路径,只需在调用 `Save` 前确保目标文件夹已存在。 + +### 预期结果 + +在 Adobe Acrobat Reader 中打开 *MultiWidgetField.pdf*。你会看到第 1、2、3 页都有相同的文本框。在任意页面的字段中输入内容——文本会立即在其他页面同步显示,因为它们共享同一个底层表单字段。 + +![创建 PDF 文档示例,展示三页上的文本框](https://example.com/placeholder-image.png "创建 PDF 文档示例") + +*图片替代文字:创建 PDF 文档示例,展示三页上的文本框。* + +## 完整、可直接运行的示例 + +下面是完整的程序,你可以将其复制到新的控制台项目(`dotnet new console`)中并运行。所有步骤已按顺序排列,代码中包含了清晰的注释。 + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +运行程序,转到 `C:\Temp\`,打开生成的 PDF。你会看到三个相同的文本框,已准备好供用户输入。 + +## 常见变体与边缘情况 + +| 场景 | 需要更改的内容 | 原因 | +|----------|----------------|-----| +| **每页不同的文本框大小** | 为每个 `WidgetAnnotation` 调整 `Rectangle` 值。 | 使字段能够适配不同的布局。 | +| **只读字段** | 设置 `commentField.ReadOnly = true;`。 | 防止用户在首次填写后编辑内容。 | +| **多行文本框** | 设置 `commentField.Multiline = true;` 并增加矩形的高度。 | 允许输入更长的评论而无需滚动。 | +| **添加第二个字段** | 创建另一个 `TextBoxField`(或任意 `FormField`),并使用新名称重复步骤 2‑4。 | 可在同一 PDF 中收集多项信息。 | + +## 专业提示与需避免的陷阱 + +- **页面索引:** 请记住 `pdfDocument.Pages[1]` 是第一页,而不是 `[0]`。混用 0 基和 1 基索引会导致 “Index out of range” 异常。 +- **字段命名冲突:** 两个字段不能共享相同的完全限定名称。如果出现重复名称错误,请再次检查传递给 `Form.Add` 的字符串。 +- **许可证 vs. 评估版:** 评估版会在每页添加水印。上线生产时请部署有效许可证以去除水印。 +- **性能:** 在循环中添加数百页是可以的,但如果需要生成大规模 PDF(数千页),请考虑使用 + +{{< /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-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/chinese/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..5d1b5f34c --- /dev/null +++ b/pdf/chinese/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,221 @@ +--- +category: general +date: 2026-03-06 +description: 使用 Aspose.PDF 在 C# 中创建 PDF 文档。学习如何添加 PDF 页面、绘制矩形、添加形状以及控制矩形边框粗细——一站式教程。 +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: zh +og_description: 使用 Aspose.PDF 在 C# 中创建 PDF 文档。本教程展示了如何添加 PDF 页面、绘制矩形、添加形状以及设置矩形边框厚度。 +og_title: 使用 Aspose.PDF 创建 PDF 文档 – 完整指南 +tags: +- Aspose.PDF +- C# +- PDF generation +title: 使用 Aspose.PDF 创建 PDF 文档 – 步骤指南 +url: /zh/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 使用 Aspose.PDF 创建 PDF 文档 – 步骤指南 + +是否曾经需要以编程方式 **create PDF document**,却不知从何入手?你并不孤单——许多开发者在应用需要即时生成发票、报告或证书时都会遇到同样的难题。 + +好消息是,使用 Aspose.PDF for .NET,你只需几行代码即可实现,而且你还将学习如何 **add page PDF**、**draw rectangle PDF**、**add shape PDF**,以及在此过程中调整 **rectangle border thickness**。让我们开始吧。 + +## 你将构建的内容 + +通过本指南的学习,你将拥有一个功能完整的 C# 控制台应用程序,它可以: + +1. **Creates a PDF document** 从头创建。 +2. **Adds a page PDF** 到文档中。 +3. 在该页面上 **Draws a rectangle PDF**。 +4. **Validates** 矩形保持在页面边界内(**add shape PDF** 步骤)。 +5. 设置自定义的 **rectangle border thickness**。 +6. 将结果保存为 `ShapeValidated.pdf`。 + +无需外部服务,也不需要神秘的配置——只需纯 C# 与 Aspose.PDF。 + +### 前置条件 + +- .NET 6.0 或更高版本(代码同样适用于 .NET Framework 4.6+)。 +- `Aspose.Pdf` NuGet 包的引用。可以通过以下方式添加: + +```bash +dotnet add package Aspose.Pdf +``` + +- 文本编辑器或 IDE——Visual Studio、VS Code、Rider,任选其一。 + +> **Pro tip:** 如果你使用公司机器,请确保 NuGet 源未被阻止;否则会出现 “Package not found” 错误。 + +--- + +## 创建 PDF 文档 – 初始化 Document + +第一步是实例化一个 `Document` 对象。可以把它想象成一个空白画布,所有页面和形状都将在其上绘制。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +为什么需要这个对象?它在内存中表示整个 PDF 文件,提供对 `Pages` 集合、元数据和安全设置的访问。一旦拥有该文档,就可以开始添加页面、文本、图像和矢量图形。 + +--- + +## 向 PDF 添加页面 (add page pdf) + +没有页面的 PDF 本质上是一个空文件——毫无意义。添加页面非常简单,并且可以根据需要自定义尺寸。这里我们使用默认的 A4 大小。 + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +`Add()` 方法返回一个新的 `Page` 实例,该实例已经是 `Pages` 集合的一部分,因此可以立即开始绘制。在实际场景中,你可能会遍历数据集并添加数十页;同样的单行调用可在每次迭代中使用。 + +## 绘制矩形形状 (draw rectangle pdf) + +现在进入可视化部分:绘制带可见边框的矩形。这正是 **draw rectangle pdf** 发挥作用的地方。 + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +需要注意的几点: + +- `Rect` 使用点(1 pt ≈ 1/72 英寸)。坐标定义左下角和右上角,可精确控制宽度和高度。 +- `BorderInfo` 允许指定哪些边需要线以及线的粗细。这里我们对 **all** 边使用 2 点的线宽,使矩形呈现干净、统一的外观。 + +## 验证形状位置 (add shape pdf) + +在将矩形写入页面之前,最好先验证它是否位于页面的可打印区域内。Aspose.PDF 提供了一个便利的辅助方法来完成此检查。 + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +为什么要这么做?如果不小心将形状部分放在屏幕外,PDF 查看器可能会裁剪它,导致用户体验混乱。此 **add shape pdf** 守卫子句确保仅添加能够完整显示的内容。 + +## 保存 PDF (add page pdf) + +最后,我们将内存中的文档持久化到磁盘。可以选择任意具有写入权限的位置。 + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +运行程序后,打开 `ShapeValidated.pdf`——你应该会看到一个单页,页面中部大致居中地显示一个带整齐边框的矩形。 + +## 预期结果 + +打开生成的 PDF,你会看到: + +- 一个 A4 大小的页面。 +- 一个矩形,左下角坐标为 (50 pt, 50 pt),右上角坐标为 (600 pt, 800 pt)。 +- 一个 **2‑point thick** 的边框环绕矩形。 + +如果控制台输出了 “PDF created successfully!” ,则说明代码已成功执行且未触发边界检查。 + +![展示如何使用 Aspose.PDF 创建 PDF 文档的示意图](https://example.com/diagram-create-pdf.png "创建 PDF 文档 – 可视化概览") + +*图片的 alt 文本包含主要关键词,以满足 SEO 要求。* + +## 常见问题与边缘情况 + +### 如果需要不同的页面尺寸怎么办? + +使用自定义尺寸替换默认页面: + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### 如何更改边框颜色? + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### 能否在同一页面上添加多个形状? + +当然可以。只需使用新的 `RectangleShape`(或其他 `Shape` 子类)重复 **add shape pdf** 块,并相应调整 `Rect` 坐标即可。 + +### 如果矩形超出页面边界怎么办? + +`IsShapeWithinBounds` 调用将返回 `false`。在生产代码中,你可能希望自动调整形状大小: + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +## 回顾 + +我们已经完整演示了使用 Aspose.PDF **creating a PDF document** 的整个生命周期: + +1. 初始化 `Document`。 +2. 使用 `Pages.Add()` **Add a page PDF**。 +3. 通过 `RectangleShape` **Draw a rectangle PDF**。 +4. 在确认形状位于页面内部后 **Add shape PDF**。 +5. 使用 `BorderInfo` 控制 **rectangle border thickness**。 +6. 保存文件。 + +这就是不到 60 行代码即可完成的完整工作流。 + +## 接下来做什么? + +- **Add text**:使用 `TextFragment` 在矩形内放置标题或标签。 +- **Insert images**:`Image` 类可嵌入徽标或图表。 +- **Create tables**:非常适合发票或数据报告。 +- **Apply security**:如果 PDF 包含敏感数据,可使用密码保护。 + +上述主题都基于这里介绍的基础,因此你已经具备探索更高级 PDF 生成场景的条件。 + +### 持续实验 + +不要止步于单个矩形——尝试不同的形状、颜色和线条样式。Aspose.PDF API 功能丰富,你越是动手实验,就会越得心应手。如果遇到问题,官方 Aspose 文档是可靠的参考,但请记住,上述代码已经是完整的、可直接复制粘贴运行的解决方案。 + +祝编码愉快,愿你的 PDF 始终如你所想完美呈现! + +{{< /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 fed7186bc..598016216 100644 --- a/pdf/chinese/net/document-manipulation/_index.md +++ b/pdf/chinese/net/document-manipulation/_index.md @@ -188,6 +188,9 @@ Aspose.PDF Net 代码教程 ### [如何使用 Aspose.PDF .NET 从 PDF 中删除所有文本进行文档操作](./remove-text-aspose-pdf-net-tutorial/) 了解如何使用 Aspose.PDF .NET 高效地从 PDF 中删除所有文本。非常适合保护敏感数据或整理文档。 +### [如何在 C# 中使用 Aspose PDF 对 PDF 进行编辑(遮蔽) – 完整指南](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) +了解如何使用 Aspose PDF for .NET 在 C# 中对 PDF 文档进行编辑(遮蔽),通过分步指南实现敏感信息隐藏。 + ### [如何使用 Aspose.PDF for .NET 删除 PDF 打开操作:完整指南](./remove-pdf-open-action-aspose-dotnet-guide/) 了解如何使用 Aspose.PDF for .NET 消除 PDF 文件中不必要的打开操作。本指南提供分步说明和最佳实践。 @@ -239,9 +242,6 @@ Aspose.PDF Net 代码教程 ### [使用 Aspose.PDF .NET 掌握 PDF 操作:文档自动化综合指南](./master-pdf-manipulation-aspose-dotnet-guide/) 了解如何使用 Aspose.PDF for .NET 自动执行 PDF 任务,包括连接文件、添加页面、插入文本戳和创建链接。 -### [使用 Aspose.PDF .NET 掌握 PDF 操作:轻松加载和修改文档](./mastering-pdf-manipulation-aspose-dotnet/) -学习如何使用强大的 Aspose.PDF .NET 库来掌握 PDF 文档的加载、导航和修改。立即增强您的应用程序! - ### [使用 Aspose.PDF .NET 掌握 PDF 操作:加载、搜索、注释指南](./aspose-pdf-dotnet-mastering-pdfs-manipulation-guide/) 学习使用 Aspose.PDF for .NET 掌握 PDF 操作。本指南涵盖加载文档、搜索文本以及应用删除线等注释。 diff --git a/pdf/chinese/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/chinese/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..6ece32cf2 --- /dev/null +++ b/pdf/chinese/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,247 @@ +--- +category: general +date: 2026-03-06 +description: 学习如何在 C# 中使用 Aspose PDF 对 PDF 进行编辑。本分步指南展示了如何加载 PDF 文档(C#),访问 PDF 的第一页,并从 + PDF 中删除图像。 +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: zh +og_description: 如何使用 Aspose PDF 在 C# 中快速编辑 PDF。加载 PDF 文档,访问第一页,并仅用几行代码从 PDF 中删除图像。 +og_title: 如何在 C# 中对 PDF 进行脱敏 – Aspose PDF 教程 +tags: +- Aspose PDF +- C# +- PDF Redaction +title: 如何在 C# 中使用 Aspose PDF 对 PDF 进行脱敏处理 – 完整指南 +url: /zh/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何使用 Aspose PDF 在 C# 中编辑 PDF – 完整指南 + +有没有想过 **如何编辑 PDF** 文件而不费吹灰之力?也许你收到的合同里隐藏了一个机密徽标,或者报告中仍然显示着需要擦除的占位图像。此时,你会希望有一种可靠的、可编程的方式来删除这些内容——无需手动使用 Acrobat 的向导。 + +在本教程中,我们将一步步演示一个简洁的端到端解决方案,**加载 PDF 文档 C#**,**访问首个 PDF 页面**,并使用强大的 **Aspose PDF** 库 **从 PDF 中删除图像**。完成后,你将拥有一份已编辑好的 PDF 可供分发,并且了解每行代码的意义。 + +> **小贴士:** Aspose PDF 支持 .NET Framework 4.6+ 和 .NET Core 3.1+,无论你在 Windows、Linux 还是 macOS 上都能使用。 + +--- + +![how to redact pdf example](redact-pdf-before-after.png){alt="如何编辑 PDF 示例"} + +## 你需要准备的内容 + +- **Aspose.PDF for .NET**(最新的 NuGet 包) +- 一个 **C# 开发环境**(Visual Studio、Rider 或 VS Code) +- 一个包含你想要擦除的图像资源的示例 PDF(我们将其命名为 `Sensitive.pdf`) + +不需要额外的第三方工具,不需要 OCR,仅需纯代码。 + +--- + +## 第一步:加载 PDF 文档 C# – 首先要做的事 + +在能够编辑任何内容之前,你必须先将文件加载到内存中。`Document` 类是每个 Aspose PDF 操作的入口点。 + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**为什么这很重要:** +`Document` 会解析整个 PDF 结构,构建一个对象模型,让你能够操作页面、资源和注释。如果文件无法加载(路径错误、PDF 损坏),会立即抛出异常——这样你可以及早发现问题。 + +### 常见陷阱 + +> *“即使文件存在,我仍然收到 `FileNotFoundException`。”* +> 确保使用绝对路径,或让项目的工作目录与 `Sensitive.pdf` 所在位置一致。使用 `Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")` 可以避免相对路径带来的麻烦。 + +--- + +## 第二步:访问首个 PDF 页面 – 图像所在的位置 + +图像作为资源存储在每页上。对于许多简单的 PDF,首页往往是问题所在,所以我们先获取它。 + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**为什么这很重要:** +Aspose PDF 对页面使用 1 基索引,这与大多数 .NET 集合略有不同。访问错误的页面可能导致编辑错误的内容,甚至完全遗漏敏感图像。 + +### 边缘情况考虑 + +如果文档没有页面(空 PDF),尝试 `pdfDocument.Pages[1]` 会抛出 `IndexOutOfRangeException`。可以加入快速检查来防止异常: + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +--- + +## 第三步:从 PDF 中删除图像 – 编辑资源 + +Aspose PDF 允许你按名称删除资源。大多数图像的名称为 `Im1`、`Im2` 等,但你可以检查 `firstPage.Resources.Images` 来确认。 + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**为什么这很重要:** +`RedactResource` 会删除图像 *以及* 页面上对它的所有引用,确保空白区域不会出现破损的链接。这是一种符合 PDF 标准的干净删除方式。 + +### 如何找到正确的图像名称 + +如果不确定图像是否叫 `"Im1"`: + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +运行此代码片段,查看控制台输出,并将 `"Im1"` 替换为实际看到的键名。 + +--- + +## 第四步:保存已编辑的 PDF – 完成工作 + +现在不需要的图像已经被移除,将更改写回磁盘。 + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**为什么这很重要:** +保存到 **新文件** 可以保持原始文件不受影响——如果需要回滚,这是一层安全网。若必须覆盖,只需将 `Save` 方法指向原始路径,但请注意此操作不可逆。 + +### 验证结果 + +在任意 PDF 查看器中打开 `Redacted.pdf`。图像位置应显示为空白,文档其余部分应与原始文件完全相同。如果页面布局出现偏移,请再次确认只删除了目标资源,而不是共享的 XObject。 + +--- + +## 完整示例代码 + +将所有步骤组合在一起,下面是可直接运行的完整程序: + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**预期输出**(在控制台): + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +打开 `Redacted.pdf` 后,原本为 `Im1` 的图像将不复存在,页面保持干净。 + +--- + +## 常见问题 + +### 这能处理加密的 PDF 吗? + +如果源 PDF 受密码保护,请在 `Document` 构造函数中传入密码: + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### 如果图像出现在多个页面怎么办? + +遍历每个页面,对相同的图像名称调用 `RedactResource`(或在每页上自行发现名称)。示例: + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### 我可以用同样的方式编辑文本吗? + +可以——使用 `page.Contents.RedactText("confidential")` 或使用 `Redactor` 类进行更高级的模式匹配。这本身就是一个完整的教程,但原理与编辑图像相同。 + +--- + +## 小结 – 我们实现了什么 + +我们通过以下步骤实现了 **如何编辑 PDF** 文件的程序化方法: + +1. 使用 Aspose PDF **加载 PDF 文档 C#**。 +2. **访问首个 PDF 页面** 以定位目标资源。 +3. 通过 `RedactResource` **从 PDF 中删除图像**。 +4. **安全保存** 已编辑的版本。 + +此方法快速、可重复,并且适用于批处理任务——非常适合合规流水线或自动化报告生成。 + +如果你想进一步探索,可以考虑: + +- 对整个文件夹的 PDF 进行 **批量编辑**。 +- 使用正则表达式通过 `Redactor` **编辑文本**。 +- 在编辑后 **嵌入水印**,标记为 “已清理”。 + +动手试一试,根据自己的文件调整图像名称逻辑吧, + +{{< /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/performance-optimization/_index.md b/pdf/chinese/net/performance-optimization/_index.md index 7f9e6b280..43a9d7536 100644 --- a/pdf/chinese/net/performance-optimization/_index.md +++ b/pdf/chinese/net/performance-optimization/_index.md @@ -50,6 +50,9 @@ ### [使用 Aspose.PDF for .NET 在 PDF 中取消嵌入字体:减小文件大小并提高性能](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) 了解如何使用 Aspose.PDF for .NET 从 PDF 文件中取消嵌入字体。本分步指南将帮助您优化 PDF 性能、减小文件大小并缩短加载时间。 +### [使用 Aspose.PDF 压缩 PDF – 快速指南](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) +了解如何使用 Aspose.PDF 快速压缩 PDF 文件,以减小文件大小并提升加载速度。 + ## 其他资源 - [Aspose.PDF 用于网络文档](https://docs.aspose.com/pdf/net/) diff --git a/pdf/chinese/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/chinese/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..798137a0e --- /dev/null +++ b/pdf/chinese/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,200 @@ +--- +category: general +date: 2026-03-06 +description: 学习如何使用 Aspose.Pdf 即时压缩 PDF。本指南展示了如何通过无损压缩来减小 PDF 文件大小。 +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: zh +og_description: 如何使用 Aspose.Pdf 压缩 PDF?请按照此分步教程来减小 PDF 文件大小,实现无损 PDF 压缩,并保存优化后的 PDF + 文件。 +og_title: 使用 Aspose.Pdf 压缩 PDF – 快速指南 +tags: +- pdf +- aspnet +- csharp +title: 使用 Aspose.Pdf 压缩 PDF – 快速指南 +url: /zh/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何使用 Aspose.Pdf 压缩 PDF – 快速指南 + +有没有想过在不把 PDF 文件弄得模糊不清的情况下 **how to compress pdf**?你并不孤单。大多数开发者在需要 **reduce pdf file size** 以用于电子邮件附件、网页上传或存储限制时都会碰壁,同时又担心图像质量会下降。 + +在本教程中,我们将逐步演示一个完整、可直接运行的示例,向您展示如何使用 Aspose.Pdf 内置优化器 **how to compress pdf**。完成后,您将了解如何 **shrink pdf file size**,使用 **lossless pdf compression** 保持图像清晰,并最终 **save optimized pdf** 文件,使其在任何阅读器中都能良好显示。 + +## 您将学到的内容 + +- 将一个包含高分辨率图像的大型 PDF 加载到内存中。 +- 使用 Aspose.Pdf 的优化器并采用默认的无损设置。 +- 将结果持久化为一个更小的新文件。 +- 如果需要更高的压缩率,提供压缩调优技巧。 + +无需外部工具,也不需要神秘的命令行技巧——只需干净的 C# 代码和清晰的说明。 + +## 前提条件 + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6.0 或更高版本(或 .NET Framework 4.6+) | Aspose.Pdf 同时支持两者;更新的运行时提供更佳性能。 | +| Aspose.Pdf for .NET NuGet 包 (`Aspose.Pdf`) | `Document` 类就在这里。 | +| 包含大图像的 PDF(例如 `HeavyImages.pdf`) | 为您提供可实际压缩的对象。 | +| Visual Studio、Rider 或您喜欢的任何 C# 编辑器 | 舒适度是关键——选择最自然的工具。 | + +> **专业提示:** 如果您使用 CI/CD 流水线,请在 `.csproj` 中添加 NuGet 引用,这样构建永远不会忘记它。 + +```xml + + + +``` + +## 步骤 1:加载要压缩的 PDF + +首先,我们需要一个指向源文件的 `Document` 对象。可以把它想象成在编辑章节之前先打开一本书。 + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*为什么重要:* 加载文件让 Aspose.Pdf 有机会读取所有嵌入的资源(图像、字体等)。如果缺少此步骤,就没有东西可以 **shrink pdf file size**。 + +## 步骤 2:应用无损 PDF 压缩 + +Aspose.Pdf 提供了 `Optimize` 方法,默认情况下会执行 **lossless pdf compression** 例程。它会剔除冗余对象,使用相同的视觉保真度重新压缩图像,并移除未使用的字体。 + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*为什么重要:* 默认优化器旨在 **shrink pdf file size**,同时保留每个像素。如果您后来决定可以接受轻微的质量下降,已注释掉的 `OptimizationOptions` 允许您以牺牲一点体积换取速度。 + +## 步骤 3:保存优化后的 PDF + +现在文档已经更精简,我们将其写入一个新文件。保持原始文件不变是个好习惯,尤其在测试不同设置时。 + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +保存后,比较文件大小: + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +您应该会看到明显的下降——通常为 **30‑70 %**,具体取决于源文件中高分辨率图像的数量。 + +![如何压缩 pdf 示例](image.png "如何压缩 pdf") + +*图片替代文字:* 如何压缩 pdf – 优化前后对比 + +## 高级:针对特定场景微调压缩 + +虽然默认优化器适用于大多数情况,但有时您需要进一步 **shrink pdf file size**: + +| 场景 | 要调整的设置 | 效果 | +|----------|-------------------|--------| +| 包含大量光栅图像的 PDF | `CompressImages = true` + lower `ImageQuality` (e.g., 70) | 减少图像字节数,略有视觉损失。 | +| 包含重复字体的 PDF | `RemoveUnusedObjects = true` | 剔除未被引用的字体。 | +| 元数据较大的 PDF | `RemoveMetadata = true` | 去除隐藏的 XML/元数据块。 | + +您可以将这些设置组合到 `OptimizationOptions` 对象中,并将其传递给 `pdfDoc.Optimize(options)`。 + +## 常见问题与边缘情况 + +**如果 PDF 已经是优化过的怎么办?** +Aspose.Pdf 仍会扫描文档,但尺寸变化将非常小。在已经精简的文件上运行优化器是安全的;它不会损坏任何内容。 + +**我可以压缩加密的 PDF 吗?** +可以,但必须在调用 `Optimize` 之前提供密码。示例: + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**包含矢量图形的 PDF 呢?** +矢量对象本身已经很轻量,优化器主要针对光栅图像和元数据。对于纯矢量文件,预期的提升有限。 + +## 完整、可运行的示例 + +下面是一个独立的控制台应用程序示例,您可以复制粘贴到新的 `.csproj` 中。它演示了所有讨论的内容——从加载到验证。 + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +运行程序,在任意阅读器中打开 `Optimized.pdf`,您会看到相同的页面布局、相同清晰的图像,但文件更小。这就是 **lossless pdf compression** 的魔力。 + +## 结论 + +我们已经介绍了使用 Aspose.Pdf 内置优化器 **how to compress pdf** 的方法,演示了实用的 **reduce pdf file size** 工作流,并解释了每一步背后的原因。通过遵循加载、优化、保存的三步模式,您可以即时 **shrink pdf file size**,使用 **lossless pdf compression** 保持图像完整,并自信地 **save optimized pdf** 文件供后续使用。 + +准备好迎接下一个挑战了吗?尝试将此优化器与批处理脚本结合,以处理整个文件夹,或尝试可选的 `OptimizationOptions` 来挤出最后的几千字节。无论您是在开发桌面工具、Web API 还是服务器端批处理任务,这些原则都适用。 + +对 PDF 处理、Aspose.Pdf 的细节或 .NET 文件 I/O 有更多疑问吗?在下方留言,让我们继续讨论。祝压缩愉快! + +{{< /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/programming-with-security-and-signatures/_index.md b/pdf/chinese/net/programming-with-security-and-signatures/_index.md index 86f50d08c..abe6df1d1 100644 --- a/pdf/chinese/net/programming-with-security-and-signatures/_index.md +++ b/pdf/chinese/net/programming-with-security-and-signatures/_index.md @@ -34,6 +34,8 @@ | [使用 PDF 文件签名通过智能卡进行签名](./sign-with-smart-card-using-pdf-file-signature/) 了解如何使用 Aspose.PDF for .NET 的智能卡对 PDF 文件进行签名。请按照本指南一步步操作,获取安全的数字签名。| | [使用签名字段通过智能卡签名](./sign-with-smart-card-using-signature-field/) 了解如何使用 Aspose.PDF for .NET 的智能卡安全地签署 PDF。按照我们的分步指南,轻松实现。| | [在 C# 中检查 PDF 签名 – 如何读取已签名的 PDF 文件](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) 了解如何使用 Aspose.PDF for .NET 在 C# 中读取已签名的 PDF 文件并检查签名信息。| +| [如何在 PDF 中使用 C# 验证签名 – 完整 Aspose 指南](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) 了解如何使用 Aspose.PDF for .NET 在 C# 中验证 PDF 签名的完整指南。| +| [在 C# 中添加数字签名 PDF – 完整分步指南](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) 了解如何使用 Aspose.PDF for .NET 在 C# 中为 PDF 添加数字签名。分步指南,确保文档安全可靠。| {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/chinese/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/chinese/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..8d1df8663 --- /dev/null +++ b/pdf/chinese/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-03-06 +description: 使用 Aspose.PDF 为 PDF 添加数字签名。学习创建 PKCS7 分离签名并使用带自定义回调的 PFX 对 PDF 进行签名。 +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: zh +og_description: 快速为 PDF 添加数字签名。本指南展示了如何在 C# 中使用 pfx 创建 PKCS7 分离签名并对 PDF 进行签名。 +og_title: 在 C# 中添加 PDF 数字签名 – 完整编程教程 +tags: +- Aspose.PDF +- C# +- Digital Signature +title: 在 C# 中添加 PDF 数字签名 – 完整的逐步指南 +url: /zh/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 添加数字签名 PDF – 完整分步指南 + +是否曾经需要 **add digital signature pdf** 文件,却不知从何入手?你并不孤单;许多开发者在文书需要具有法律约束力的签名,而代码库只能生成普通 PDF 时,都会遇到同样的难题。 + +在本教程中,我们将手把手演示一个解决方案,使用 Aspose.PDF for .NET **add digital signature pdf** 文档,创建 PKCS#7 分离签名,并使用 PFX 证书对 PDF 进行签名——全部使用纯 C#。完成后,你将拥有可直接运行的代码片段,了解每个调用背后的“原因”,并知道如何针对边缘情况进行调整。 + +## 你将学到 + +- 如何加载未签名的 PDF 并为签名做准备。 +- **create pkcs7 detached signature** 的工作原理,以及为何可能更倾向于使用分离签名而非嵌入式签名。 +- 使用自定义回调进行 **sign pdf using pfx** 的完整步骤,让你完全掌控加密过程。 +- 排查常见问题的技巧(证书缺失、哈希算法错误等)。 + +### 前置条件 + +| 需求 | 原因 | +|------|------| +| .NET 6.0 或更高版本 | 现代语言特性和更好的内存管理。 | +| Aspose.PDF for .NET(NuGet 包) | 提供 `PdfFileSignature`、`PKCS7Detached` 等 PDF 工具。 | +| 有效的 PFX 文件(`.pfx`)及私钥 | **sign pdf using pfx** 步骤所需。 | +| 基础 C# 知识 | 代码相对直接,但理解 `using` 语句有帮助。 | + +> **专业提示:** 将 PFX 密码从源代码控制中剔除——在生产环境中使用环境变量或 Azure Key Vault。 + +--- + +## 使用 Aspose.PDF 添加数字签名 PDF 的方法 + +下面我们将过程拆分为五个易于理解的步骤。每个步骤都包含代码片段、*为什么*重要的解释,以及快速的检查点。 + +![已签名 PDF 在查看器中的截图,显示可见的签名字段](/images/add-digital-signature-pdf.png "add digital signature pdf 示例") + +### 步骤 1 – 加载未签名的 PDF 文档 + +首先,我们需要一个代表待签名 PDF 的 `Document` 对象。使用 `using var` 可以自动释放文件句柄。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**为什么?** +Aspose 将 PDF 视为对象图;加载后即可访问页面、注释以及稍后用于签名哈希的内部字节流。 + +### 步骤 2 – 初始化 PdfFileSignature 辅助类 + +`PdfFileSignature` 是实际应用加密封装的类。它与 `PKCS7Detached` 紧密配合。 + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**为什么?** +将签名器与文档分离,使你可以在最终签名之前复用同一 `Document` 实例进行其他操作(例如添加水印)。 + +### 步骤 3 – 创建 PKCS#7 分离签名(Create PKCS7 Detached Signature) + +**PKCS#7 分离签名** 仅存储 PDF 的哈希值,而不是 PDF 本身。这对于大型文档或需要保持原文件不变的情况非常理想。 + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**为什么使用自定义回调?** +有时签名密钥存放在 HSM 或 Azure Key Vault 中,无法直接提取私钥。通过提供 `CustomSignHash`,你可以将哈希交给持有密钥的服务,从而确保私钥材料的安全。 + +**如果不需要自定义回调怎么办?** +可以省略 `CustomSignHash`;Aspose 将自动使用 PFX 中的私钥。不过,自定义方式更灵活,且符合合规要求。 + +### 步骤 4 – 将签名应用到特定页面(Sign PDF Using PFX) + +现在我们将在页面上放置一个可见的签名字段。矩形定义了位置和大小(单位为点)。 + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**为什么要指定矩形?** +可见签名帮助最终用户确认文档已签名。如果将 `isVisible` 设置为 `false`,签名将变为不可见——仍然有效,但不易被发现。 + +**边缘情况:** 如果 PDF 没有页面(空文件),调用会抛出 `ArgumentOutOfRangeException`。在签名之前务必检查 `pdfDocument.Pages.Count > 0`。 + +### 步骤 5 – 保存已签名的 PDF + +最后,将已签名的文档持久化到磁盘。也可以直接将其流式输出到 ASP.NET Core 的响应中。 + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**验证提示:** 在 Adobe Acrobat Reader 中打开生成的文件。签名面板应显示绿色勾(前提是机器上信任该证书)。 + +--- + +## 完整可运行示例 + +将所有内容整合在一起,下面是一个独立的控制台程序,你可以复制粘贴后运行(记得调整路径和密码)。 + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**预期输出:** 控制台会打印 “✅ PDF signed successfully!” 并在同一文件夹生成 `CustomSigned.pdf`。打开后,你会在坐标 (100,100)-(300,200) 看到签名部件。 + +--- + +## 常见问题与边缘情况 + +### 如果我的 PFX 受智能卡保护怎么办? + +使用 `CustomSignHash` 委托将哈希转发给智能卡驱动。驱动返回签名字节后,Aspose 将其嵌入,而无需暴露私钥。 + +### 我可以一次签署多个页面吗? + +可以。 在循环中调用 `pdfSigner.Sign`,为每页调整 `pageNumber`,并可选地设置矩形。请记住,每次调用都会添加一个独立的签名对象;某些查看器可能会单独列出它们。 + +### 如何更改哈希算法? + +`PKCS7Detached` 默认使用 SHA‑256,但你可以设置 `HashAlgorithm` 属性: + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +确保你的签名提供者支持所选算法。 + +### 如果客户端机器上证书链不受信任怎么办? + +在 PFX 中包含完整链,或将根证书分发到终端用户的受信任存储。否则 Acrobat 会显示 “Signature is unknown”。 + +### 分离签名是否兼容 PDF/A‑3? + +PDF/A‑3 要求嵌入式签名,因此分离的 PKCS#7 可能不符合规范。此时去掉 `CustomSignHash` 委托,让 Aspose 在内部完成签名,即可生成嵌入式签名。 + +## 生产环境最佳实践 + +1. **绝不要硬编码密码。** 从环境变量或密钥管理器中获取。 +2. **在签名前验证 PDF。** 损坏的文件会导致 `PdfFileSignatureException`。 +3. **记录哈希算法和证书指纹** 以便审计。 +4. **使用多个 PDF 查看器进行测试**(Adobe Reader、Foxit、Chrome),确保签名如预期显示。 +5. **考虑时间戳**,通过添加 TSA(时间戳授权)请求,进一步强化签名的法律效力。 + +## 结论 + +我们已经演示了如何使用 Aspose.PDF **add digital signature pdf** 文件,创建 **PKCS#7 detached signature**,以及使用自定义回调 **sign pdf using pfx**。完整示例开箱即用,解释帮助你自信地针对 HSM、时间戳服务或 PDF/A 合规性进行调整。 + +接下来,你可以探索 **signing multiple documents in batch**、集成 **Azure Key Vault** 进行安全密钥存储,或为签名外观添加 **visual customization**。这些主题都直接基于此处奠定的基础。 + +如果你已按步骤操作,你现在拥有一个可靠、值得引用的解决方案,可与团队成员分享——甚至在 AI 助手的回答中引用。祝签名愉快,如有不清楚之处,欢迎留言! + +{{< /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/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/chinese/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..04e8d2b89 --- /dev/null +++ b/pdf/chinese/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,194 @@ +--- +category: general +date: 2026-03-06 +description: 学习如何使用 Aspose PDF 在 C# 中验证 PDF 签名。逐步进行 PDF 签名验证,验证 PDF 签名并处理受损的签名。 +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: zh +og_description: 如何使用 Aspose PDF 验证 PDF 中的签名。请按照本指南执行 PDF 签名验证、验证 PDF 签名并检测 C# 中受损的签名。 +og_title: 如何使用 C# 验证 PDF 中的签名 – 完整 Aspose 指南 +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: 如何使用 C# 验证 PDF 中的签名 – 完整的 Aspose 指南 +url: /zh/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何使用 C# 验证 PDF 中的签名 – 完整 Aspose 指南 + +有没有想过在 PDF 中 **如何验证签名** 而不抓狂?你并不孤单。许多开发者在出于合规或审计需求进行 **pdf signature verification** 时会遇到瓶颈,而通常的“只要相信库”做法可能适得其反。 + +在本教程中,我们将演示一个实用的端到端解决方案,它不仅能够 **validate pdf signature**,还能告诉你签名是否被篡改。我们将使用 **Aspose PDF** 库,这意味着代码可在 .NET 6+、.NET Framework 4.6+ 甚至 .NET Core 上运行。完成后,你将拥有一个可直接放入任何 C# 项目的即用代码片段。 + +## 你需要的准备 + +- **Aspose.Pdf** NuGet 包(撰写时的最新版本 – 23.12)。 +- .NET 开发环境(Visual Studio、Rider 或 VS Code)。 +- 一个已签名的 PDF 文件(我们称之为 `Signed.pdf`)。 +- 基础的 C# 知识——无需花哨,只需常规的 `using` 语句和 `Console` 输入输出。 + +就这些。无需额外服务,也不需要晦涩的配置文件。准备好了吗?让我们开始吧。 + +![验证签名流程图](image.png "验证签名") + +## 步骤 1:为 PDF 签名验证设置项目 + +在调用任何 Aspose API 之前,你需要引用该库。打开终端或包管理器控制台并运行: + +```bash +dotnet add package Aspose.Pdf +``` + +或者,如果你更喜欢使用 UI,在 NuGet 包管理器中搜索 **Aspose.Pdf** 并安装它。此步骤至关重要,因为没有 **aspose pdf signature** 程序集,你将无法在后续访问 `PdfFileSignature` 类。 + +> **专业提示:** 将目标设置为 .NET 6 或更高,以获得最佳性能并避免旧版兼容性警告。 + +## 步骤 2:加载 PDF 文档 + +现在包已安装,我们可以加载需要检查的 PDF。`Document` 类在内存中表示整个文件。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**为什么这很重要:** 加载文档后我们即可访问其内部结构,包括签名字段。如果文件缺失或损坏,`Document` 将抛出异常,你可以捕获它以提供更友好的用户体验。 + +## 步骤 3:创建 Aspose PdfFileSignature 对象 + +手握文档后,接下来要实例化 `PdfFileSignature`。这个外观类能够读取、验证和操作嵌入 PDF 的数字签名。 + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**解释:** `PdfFileSignature` 构造函数接受已加载的 `Document`。内部会解析签名字典,从而提供 `VerifySignature` 和 `IsSignatureCompromised` 等方法。 + +## 步骤 4:验证签名完整性 + +**pdf signature verification** 的核心是 `VerifySignature` 方法。如果加密哈希与存储值匹配且证书链受信任(前提是你已设置信任管理器,这里略过),它将返回 `true`。 + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +如果有多个签名,只需更改索引(`0`、`1`,……)。该方法一次性检查完整性和信任度,这也是它在大多数场景下的首选。 + +## 步骤 5:检测受损签名 + +即使是“有效”的签名,如果文档在签名后被修改,也可能受损。Aspose 提供了 `IsSignatureCompromised` 来检测这种微妙情况。 + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**何时使用:** 假设 PDF 已签名,随后用户添加了评论或更改了页面。哈希会不同,`IsSignatureCompromised` 将返回 `true`,而如果证书本身没有问题,`VerifySignature` 仍可能为 `true`。同时检查这两个标志即可获得完整的情况。 + +## 步骤 6:解释结果 + +现在我们有两个布尔值:`isSignatureValid` 和 `isSignatureCompromised`。让我们把它们转换为友好的控制台输出。 + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### 预期输出 + +| 场景 | 控制台输出 | +|------|------------| +| 有效且未受损 | `Signature OK` | +| 有效但受损(文档被更改) | `Signature compromised!` | +| 无效(证书不受信任,哈希不匹配) | `Signature verification failed` | + +## 完整工作示例 + +将所有内容整合在一起,下面是完整的、可直接运行的程序: + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +复制、粘贴,调整 `pdfPath`,然后运行。如果一切配置正确,你将看到上面列出的三条信息之一。 + +## PDF 签名验证的常见陷阱与技巧 + +| 问题 | 原因 | 解决方案 / 避免方法 | +|------|------|-------------------| +| **缺少 Aspose 许可证** | 免费评估版会添加水印,并可能限制某些 API 调用。 | 注册许可证 (`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`). | +| **多个签名但索引错误** | 可能检查了错误的签名,导致误报为无效。 | 遍历 `signatureVerifier.GetSignatureCount()` 并检查每个签名。 | +| **证书链不受信任** | `VerifySignature` 在根 CA 不在受信任存储中时会失败。 | 将签名 CA 添加到 Windows 受信任根存储,或配置自定义 `CertificateValidator`。 | +| **文件被其他进程锁定** | 打开仍在其他地方打开的 PDF 可能抛出 `IOException`。 | 使用 `FileStream` 并设置 `FileShare.ReadWrite`,或先复制到临时文件。 | +| **PDF 路径错误** | 简单的拼写错误会导致 `FileNotFoundException`。 | 在加载前使用 `File.Exists(pdfPath)` 验证路径。 | + +### 可能遇到的边缘情况 + +- **分离签名**:某些 PDF 将签名存储在外部。Aspose 的 `PdfFileSignature` 目前仅支持嵌入式签名。 +- **带时间戳的签名**:如果需要验证时间戳机构(TSA),必须使用自定义 `VerificationOptions` 对象调用 `VerifySignature`——超出本快速指南范围,但在合规性要求高的项目中值得注意。 + +## 下一步 – 扩展验证逻辑 + +现在你已经掌握了 **how to verify signature** 的基础,可能想要: + +1. **Validate PDF signature** 对照受信任证书列表(例如企业 PKI)进行验证。 +2. 使用 `GetSignatureInfo` **Export signature details**(签名者姓名、签名时间、证书指纹)。 +3. 在文件夹中 **Batch‑process multiple PDFs**,并将结果记录到 CSV 以供审计。 + +所有这些都是我们刚才介绍的代码的直接扩展,并且仍然位于同一 **aspose pdf signature** 生态系统中。 + +--- + +**简而言之**,你现在已经完全掌握了使用 C# 和 Aspose 在 PDF 中 **how to verify signature** 的方法,如何检测受损签名,以及验证失败时的处理方式。该方法稳健,支持多签名,可集成到更大的文档处理流水线中。 + +遇到不同的情况了吗?也许你需要对 PDF 进行签名而不是验证,或是处理加密的 PDF。留下评论,我们一起探讨这些方向。祝编码愉快! + +{{< /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/programming-with-stamps-and-watermarks/_index.md b/pdf/chinese/net/programming-with-stamps-and-watermarks/_index.md index b635f3887..c7752f6b7 100644 --- a/pdf/chinese/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/chinese/net/programming-with-stamps-and-watermarks/_index.md @@ -39,6 +39,7 @@ Aspose.PDF 的“使用图章和水印进行编程”.NET 教程将指导您逐 | [页眉页脚部分中的表格](./table-in-header-footer-section/) 了解如何使用 Aspose.PDF for .NET 轻松地在 PDF 文件页脚添加文本。包含无缝集成的分步指南。| | [PDF 文件页脚中的文本](./text-in-footer/) 了解如何使用 Aspose.PDF for .NET 在 PDF 文件的页脚中添加文本。| | [PDF 文件标题中的文本](./text-in-header/) 通过本分步教程学习如何使用 Aspose.PDF for .NET 为 PDF 添加文本标题。高效且有效地增强您的文档。| +| [使用 C# 创建带 Bates 编号的 PDF 文档(完整指南)](./create-pdf-document-with-bates-numbering-in-c-full-guide/) 通过本完整指南学习如何在 C# 中使用 Aspose.PDF 为 PDF 添加 Bates 编号,实现文档追踪和管理。| {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/chinese/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/chinese/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..9c403e988 --- /dev/null +++ b/pdf/chinese/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,180 @@ +--- +category: general +date: 2026-03-06 +description: 在 C# 中创建 PDF 文档并轻松添加 Bates 编号。学习如何添加空白页 PDF、在页面上放置印章以及实现 Bates 编号。 +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: zh +og_description: 在 C# 中创建 PDF 文档并添加贝茨编号。本指南展示如何添加空白页 PDF、在页面上放置印章以及应用贝茨编号。 +og_title: 使用Bates编号创建PDF文档 – C#教程 +tags: +- Aspose.Pdf +- C# +- PDF automation +title: 使用 C# 创建带 Bates 编号的 PDF 文档 – 完整指南 +url: /zh/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 使用 C# 创建带 Bates 编号的 PDF 文档 + +是否曾经需要在 C# 中 **创建 PDF 文档**,并且想知道如何在不抓狂的情况下添加 Bates 编号?你并非唯一遇到此问题的人——律所、法院,甚至一些企业合规团队每天都面临同样的难题。好消息是?只需几行 Aspose.Pdf 代码,你就可以快速生成一个全新的 PDF,添加空白页,并在一次流畅的操作中盖上正确的 Bates 编号。 + +在本教程中,我们将完整演示整个过程:从项目设置、添加空白页 PDF、弄清 **how to add bates numbering**,到最终 **place stamp on page** 并保存结果。结束时,你将拥有一个可直接放入任何 .NET 应用的即用代码片段。没有模糊的引用,只有完整可运行的示例。 + +## 需要的条件 + +- **.NET 6+**(或 .NET Framework 4.6+ —— Aspose.Pdf 两者均支持) +- **Aspose.Pdf for .NET** NuGet 包 (`Install-Package Aspose.Pdf`) +- 一个合适的 IDE(Visual Studio、Rider 或带 C# 扩展的 VS Code) + +就这么简单。无需额外的 DLL,也不需要外部服务。让我们开始吧。 + +## 步骤 1:创建 PDF 文档 – 初始设置 + +首先,我们需要一个全新的 `Document` 对象。可以把它看作是所有内容将要存在的空白画布。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **为什么这很重要:** `Document` 类是每个 Aspose 操作的入口。实例化它后,你可以访问 `Pages` 集合、元数据和安全设置——这些都是构建专业 PDF 的基石。 + +## 步骤 2:添加空白页 PDF + +没有页面的 PDF 就像一本没有页码的书——毫无用处。添加空白页非常简单,并且为我们提供了一个可以盖上 Bates 编号的页面。 + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **小贴士:** 如果需要多页,只需在循环中调用 `pdfDocument.Pages.Add()`。每次调用都会返回一个全新的 `Page` 对象,你可以独立地进行自定义。 + +## 步骤 3:如何添加 Bates 编号 – 创建 TextStamp + +现在进入关键部分:**Bates number**。在 Aspose.Pdf 中,它只是带有特殊 artifact 标记的 `TextStamp`。 + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **为什么要设置 `Artifact`:** 某些 PDF 阅读器会将 Bates 编号作为可搜索的元数据暴露。将印章标记为 `BatesNumbering` artifact 可确保下游工具自动识别它。 + +## 步骤 4:在页面上放置印章 + +印章准备好后,我们现在 **place stamp on page**。这一步骤是将可视化编号实际显示在 PDF 中的过程。 + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **边缘情况:** 如果需要每页的编号递增,你可以遍历 `pdfDocument.Pages` 并在调用 `AddStamp` 前更新 `batesStamp.Value`。此示例保持简单,使用静态的 “Bates‑001”。 + +## 步骤 5:保存并验证结果 + +最后,我们将 PDF 持久化到磁盘。请选择一个你有写入权限的文件夹;否则会抛出 `UnauthorizedAccessException`。 + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +当你在任意查看器中打开 `BatesStamped.pdf` 时,应该能看到一个小小的 “Bates‑001” 整齐地位于空白页的右下角。 + +> **预期输出:** +> ![PDF with Bates number stamp](image-placeholder.png "PDF with Bates number stamp") +> *替代文字:PDF 在右下角的 Bates 编号印章.* + +如果编号未显示,请仔细检查边距值,并确保页面尺寸不太小(默认 A4 正常)。还要确认 `Artifact` 标记没有被任何后处理工具剥离。 + +## 完整工作示例 + +下面是完整的、可直接复制粘贴的程序。它包含所有 `using` 指令和注释,帮助你快速上手。 + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +运行程序,打开 PDF,你会看到 Bates 编号正好出现在我们指定的位置。 🎉 + +## 常见变体与注意事项 + +| 场景 | 需要更改的内容 | 原因 | +|----------|----------------|-----| +| **多页,递增编号** | 遍历 `pdfDocument.Pages`,在 `AddStamp` 之前设置 `batesStamp.Value = $"Bates-{i:D3}"` | 为每页提供唯一标识符,通常用于法律文档捆绑 | +| **不同位置(左上)** | 将 `HorizontalAlignment = HorizontalAlignment.Left` 和 `VerticalAlignment = VerticalAlignment.Top` 改为相应值 | 有些组织更喜欢将编号放在页眉而非页脚 | +| **自定义字体或颜色** | 设置 `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` | 提升可读性或符合品牌指南 | +| **将已有 PDF 作为背景添加** | 使用 `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` 加载源 PDF | 当需要在预生成的表单上盖章时非常有用 | + +## 总结 + +我们刚刚演示了如何使用 Aspose.Pdf for .NET **create PDF document**、**add blank page pdf** 和 **add bates number**,随后 **place stamp on page** 并保存文件。代码特意简洁,便于你在更大的工作流中进行适配——无论是批量处理数十个文件,还是集成到 Web 服务中。 + +如果你准备进一步深入,可以考虑: + +- 为大型案件文件自动化递增逻辑。 +- 将 PDF 生成嵌入到 ASP.NET Core API 中。 +- 使用 `pdfDocument.Encrypt(...)` 添加安全性(密码保护)。 + +欢迎随意实验、尝试不同方案,并在评论中提问。祝编码愉快,愿你的 PDF 始终完美盖章! + +{{< /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/programming-with-tagged-pdf/_index.md b/pdf/chinese/net/programming-with-tagged-pdf/_index.md index 518d32cae..837b68225 100644 --- a/pdf/chinese/net/programming-with-tagged-pdf/_index.md +++ b/pdf/chinese/net/programming-with-tagged-pdf/_index.md @@ -25,7 +25,7 @@ Aspose.PDF for .NET 的“使用标签 PDF 进行编程”教程将指导您如 | [创建注释结构元素](./create-note-structure-element/) 通过这个详细的分步教程学习如何使用 Aspose.PDF for .NET 在 PDF 中创建注释结构元素。| | [创建带标记图像的 PDF](./create-pdf-with-tagged-image/) | 学习如何使用 Aspose.PDF for .NET 创建带图片的带标签 PDF。按照我们的分步指南,创建易于访问且专业的文档。| | [创建带有标记文本的 PDF](./create-pdf-with-tagged-text/) | 在本全面的分步教程中了解如何使用 Aspose.PDF for .NET 创建具有可访问内容的标记 PDF。| -| [创建结构元素](./create-structure-elements/) 学习如何使用 Aspose.PDF for .NET 在 PDF 中创建结构元素。增强 PDF 可访问性和组织性的分步指南。| +| [创建结构元素](./create-structure-elements/) 学习使用 Aspose.PDF for .NET 在 PDF 中创建结构元素。增强 PDF 可访问性和组织性的分步指南。| | [创建结构元素树](./create-structure-elements-tree/) 了解如何使用 Aspose.PDF for .NET 在 PDF 文档中创建结构元素树。请遵循本分步指南。| | [创建表元素](./create-table-element/) 使用 Aspose.PDF for .NET 创建数组元素的分步指南。轻松生成带有表格的动态 PDF。| | [自定义标签名称](./custom-tag-name/) 使用 Aspose.PDF for .NET 自定义标签名称的分步指南。使用自定义标签改进 PDF 的结构。| @@ -45,6 +45,7 @@ Aspose.PDF for .NET 的“使用标签 PDF 进行编程”教程将指导您如 | [PDF文件中的文本结构元素](./text-structure-elements/) 学习使用 Aspose.PDF for .NET 操作 PDF 中的文本结构元素。本分步指南涵盖创建结构化 PDF 所需的一切。| | [验证 PDF 文件](./validate-pdf/) 了解如何使用 Aspose.PDF for .NET 验证 PDF 文件。检查其是否符合标准并生成验证报告。| | [在 C# 中创建带标签的 PDF – 完整分步指南](./create-tagged-pdf-in-c-complete-step-by-step-guide/) 通过本完整的分步指南,学习如何使用 Aspose.PDF for .NET 在 C# 中创建符合 PDF/UA 标准的带标签 PDF 文档。| +| [在 C# 中创建带标签的 PDF – 分步指南](./create-tagged-pdf-in-c-step-by-step-guide/) 通过本分步指南,学习如何使用 Aspose.PDF for .NET 在 C# 中创建符合 PDF/UA 标准的带标签 PDF 文档。| {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/chinese/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/chinese/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..fc1be8160 --- /dev/null +++ b/pdf/chinese/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-03-06 +description: 使用 Aspose.Pdf 在 C# 中创建带标签的 PDF。了解如何向 PDF 添加图像、设置图形位置以及为可访问性标记 PDF。 +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: zh +og_description: 使用 Aspose.Pdf 创建带标签的 PDF。本指南展示如何向 PDF 添加图像、设置图形位置以及为可访问性标记 PDF。 +og_title: 在 C# 中创建带标签的 PDF – 完整教程 +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: 在 C# 中创建带标签的 PDF – 步骤指南 +url: /zh/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 C# 中创建带标签的 PDF – 完整教程 + +是否曾经需要在 C# 中**创建带标签的 PDF**却不知从何入手?你并不孤单;如今可访问性已是必需,而带标签的 PDF 是合规文档的核心。本教程将通过一个真实案例,演示如何**向 PDF 添加图像**、设置图形的位置,并展示使用 Aspose.Pdf **如何为 PDF 添加标签**。完成后,你将拥有一个可以交付给任何人的完整带标签的 PDF。 + +我们将从加载现有文件一直讲到保存最终输出,这样你无需再去别处搜索“如何添加图像”。内容简洁——只提供一个清晰、可运行的解决方案,适用于 Aspose.Pdf 23.8(撰写时的最新版本)。打开你的 IDE,开始吧。 + +--- + +## 您需要的条件 + +- **Aspose.Pdf for .NET**(NuGet 包 `Aspose.Pdf`)。 +- .NET 6+(或 .NET Framework 4.7.2+)。 +- 一个已经具有逻辑结构(即已带标签)的输入 PDF——如果没有,可以通过 `pdfDocument.TaggedContent = true` 启用标签。 +- 一个你想嵌入的图像文件(`image.png`)。 + +就这些。无需额外库,也不需要奇怪的配置文件。 + +--- + +## 步骤 1:加载现有 PDF 文档(创建带标签的 PDF 基础) + +我们首先打开要增强的 PDF。加载文件后即可访问其逻辑结构,这对**创建带标签的 PDF**工作流至关重要。 + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*为什么重要:* 没有标签树,PDF 将无法向屏幕阅读器传递结构信息。启用标签可确保我们添加的任何新元素(如图形)继承正确的层级。 + +--- + +## 步骤 2:访问逻辑结构根节点(如何为 PDF 添加标签) + +现在我们进入 PDF 的逻辑结构。根元素是所有标签的容器——可以把它看作文档的大纲。 + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*说明:* `logicalRoot` 让我们能够追加 `
` 或 `
` 等新标签。这是**如何为 PDF 添加标签**的核心。 + +--- + +## 步骤 3:创建 Figure 标签并设置其位置(设置 Figure 位置) + +*Figure* 标签将视觉内容与可选的说明文字组合在一起。我们将创建它、定位它,并将其附加到根节点。 + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*为何要设置位置:* **设置 Figure 位置** 的步骤决定了视觉元素在页面上的落点。如果跳过此步骤,图形可能出现在意外位置,或对辅助技术不可见。 + +--- + +## 步骤 4:添加可视化表示 – 插入图像(向 PDF 添加图像) + +标签就位后,我们需要实际的图像。这正是回答**向 PDF 添加图像**的问题所在。 + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*关键点:* 矩形坐标必须与前面定义的 `figureTag.Position` 相匹配;否则图形与其视觉内容会不同步,破坏可访问性。 + +--- + +## 步骤 5:保存更新后的 PDF(完成创建带标签的 PDF) + +最后,将更改持久化到新文件。保留原始文件不变是良好实践。 + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +此时你已经拥有一个**创建带标签的 PDF**文件,其中包含正确定位且被 `
` 标签包裹的图像。用 Adobe Acrobat 打开 `output.pdf` 并检查 *Tags* 面板——你应该能看到根节点下的 `Figure` 节点。 + +--- + +## 完整、可直接运行的示例 + +下面是可以直接复制粘贴到控制台应用中的完整程序。所有步骤已按正确顺序排列。 + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### 预期结果 + +- `output.pdf` 打开后,图像显示在 (100, 150) 点的位置,尺寸为 300 × 200 点。 +- *Tags* 面板显示一个包含该图像的 `Figure` 元素。 +- 屏幕阅读器在描述图片之前会先朗读 “Figure”,满足基本的可访问性标准。 + +--- + +## 常见问题与边缘情况 + +### 如果源 PDF 尚未带标签怎么办? + +Aspose.Pdf 允许通过设置 `pdfDocument.TaggedContent.IsTagged = true;` 来开启标签。库会生成默认的标签树,随后你可以按示例添加自定义标签。 + +### 能给 Figure 添加说明文字吗? + +可以。创建 `figureTag` 后,你可以附加一个包含 `TextFragment` 的 `Paragraph`,并将其 `Tag` 设置为 `Caption`。示例: + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### 如何将 Figure 放在其他页面上? + +将 `var firstPage = pdfDocument.Pages[1];` 替换为目标页面索引,例如 `pdfDocument.Pages[3]`。如果页面尺寸不同,请相应调整 `Position` 坐标。 + +### 如果需要为多个图像添加标签怎么办? + +为每个图像创建一个新的 `Figure`,为每个 `Figure` 设置唯一的 `Position`,并将对应的 `Image` 对象添加到相应页面。对图像集合进行循环即可。 + +### 这能满足 PDF/A 合规性吗? + +Aspose.Pdf 支持 PDF/A‑1b、PDF/A‑2b 和 PDF/A‑3b。生成 PDF/A 文档时,请在保存前设置合规模式: + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +标签逻辑保持不变。 + +--- + +## 专业提示与常见陷阱 + +- **专业提示:** 始终使用绝对路径或 `Path.Combine`,以避免运行时文件未找到错误。 +- **注意事项:** `Figure` 标签与 `Image` 矩形的坐标不匹配会导致辅助技术无法正确识别。 +- **性能提示:** 若处理大量页面,请在 `using` 块中包装图像流,以及时释放资源。 +- **版本检查:** 本示例代码适用于 Aspose.Pdf 23.8+。旧版本的类名可能略有不同(例如 `LogicalStructureElement` 而非 `FigureElement`)。 + +--- + +## 结论 + +我们已经从头到尾**创建了带标签的 PDF**,演示了**向 PDF 添加图像**,并展示了如何**设置 Figure 位置**,同时回答了**如何为 PDF 添加标签**以及**如何添加图像**等问题。代码可直接运行,解释覆盖了每一步的“为什么”,现在你拥有了在 C# 中构建可访问 PDF 的坚实基础。 + +准备好迎接下一个挑战了吗?尝试使用 `
` 标签添加表格,或嵌入 PDF/A‑2b 合规层以实现归档。相同的模式——加载、访问逻辑结构、创建标签、附加视觉内容、保存——适用于大多数 PDF 可访问性任务。 + +如果遇到问题或有未覆盖的使用场景,欢迎在下方留言。祝你标记愉快,享受构建人人可读的 PDF 的过程! + +![展示带有 Figure 标签和图像的 PDF 的示意图 – 说明如何创建带标签的 PDF](placeholder-image.png "创建带标签的 PDF 示例") + +{{< /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/digital-signatures/_index.md b/pdf/czech/net/digital-signatures/_index.md index 03cc67b29..0a71ca4bc 100644 --- a/pdf/czech/net/digital-signatures/_index.md +++ b/pdf/czech/net/digital-signatures/_index.md @@ -57,6 +57,9 @@ Naučte se, jak ověřovat digitální podpisy v souborech PDF pomocí Aspose.PD ### [Ověření podpisu PDF v C# – Kompletní průvodce validací digitálního podpisu PDF](./verify-pdf-signature-in-c-complete-guide-to-validate-digital/) Naučte se, jak ověřit digitální podpis PDF pomocí C# s Aspose.PDF pro .NET. Kompletní průvodce krok za krokem. +### [Jak číst podpisy v PDF pomocí C# – krok za krokem průvodce](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +Naučte se, jak pomocí C# načíst a analyzovat digitální podpisy v PDF souborech s Aspose.PDF. + ## Další zdroje - [Aspose.PDF pro síťovou dokumentaci](https://docs.aspose.com/pdf/net/) diff --git a/pdf/czech/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/czech/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..e60db6da8 --- /dev/null +++ b/pdf/czech/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-03-06 +description: Jak číst podpisy v PDF pomocí C#. Naučte se načíst PDF dokument v C#, + vypsat PDF podpisy a získat digitální podpisy PDF rychle a spolehlivě. +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: cs +og_description: Jak číst podpisy v PDF pomocí C#. Tento průvodce ukazuje, jak načíst + PDF dokument v C#, vypsat PDF podpisy a získat digitální podpisy PDF během několika + jednoduchých kroků. +og_title: Jak číst podpisy v PDF pomocí C# – Kompletní průvodce +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: Jak číst podpisy v PDF pomocí C# – krok za krokem průvodce +url: /cs/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak číst podpisy v PDF pomocí C# – Kompletní průvodce + +Už jste se někdy ptali, **jak číst podpisy**, které jsou již vloženy do PDF souboru? Možná vytváříte dashboard pro soulad, nebo jednoduše potřebujete auditovat podepsané smlouvy, než se dostanou do vaší databáze. Dobrou zprávou je, že s několika řádky C# a knihovnou Aspose.Pdf můžete získat názvy podpisů přímo ze souboru – bez nutnosti ruční kontroly. + +V tomto tutoriálu si projdeme načtení PDF dokumentu v C#, výpis PDF podpisů a získání informací o digitálních podepsaných PDF. Na konci budete mít připravenou konzolovou aplikaci, která vytiskne každý nalezený název podpisu, plus tipy pro zpracování okrajových případů, jako jsou soubory chráněné heslem. + +## Požadavky + +- .NET 6.0 nebo novější (kód funguje také s .NET Framework 4.6+) +- Aspose.Pdf pro .NET (můžete získat zdarma dočasnou licenci na webu Aspose) +- PDF, který již obsahuje jeden nebo více digitálních podpisů (vzorek `MultiSigned.pdf` je součástí repozitáře) + +> **Tip:** Pokud používáte Visual Studio, povolte *Nullable Reference Types*, abyste včas zachytili chyby související s null. + +## Krok 1: Načtení PDF dokumentu v C# + +Prvním, co potřebujeme, je objekt `Document`, který představuje PDF soubor na disku. Třída `Document` z Aspose.Pdf zpracovává vše od jednoduchého extrahování textu po složité zpracování formulářů. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**Proč je to důležité:** Načtení PDF ověří, že soubor existuje a je čitelný. Pokud je soubor poškozený nebo je cesta špatná, ukončíme provádění dříve, místo aby se později objevily nejasné chyby při výčtu podpisů. + +## Krok 2: Vytvoření pomocníka `PdfFileSignature` + +Aspose odděluje obecnou práci s PDF (`Document`) od operací specifických pro podpisy (`PdfFileSignature`). Vytvořením tohoto pomocníka získáme přístup k metodám jako `GetSignatureNames()`. + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**Proč je to důležité:** Třída `PdfFileSignature` umí parsovat položky slovníku `/Sig` v PDF, kde jsou uloženy digitální podpisy. Použitím této třídy zajistíme, že čteme podpisy přesně tak, jak byly přidány, a zachováme veškerá kryptografická metadata. + +## Krok 3: Získání všech názvů podpisů + +Nyní přichází jádro **jak číst podpisy**: zavolejte `GetSignatureNames()`. Tato metoda vrací pole řetězců obsahující *názvy polí* každého podpisu. + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**Co uvidíte:** Pokud `MultiSigned.pdf` obsahuje tři podpisy pojmenované `Signature1`, `Signature2` a `Signature3`, výstup v konzoli bude: + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## Krok 4: (Volitelné) Ověření platnosti každého podpisu + +Čtení názvů je často dostačující, ale mnoho projektů také potřebuje vědět, zda je každý podpis stále platný. Aspose umožňuje ověřit podpis podle jeho názvu pole: + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **Okrajový případ:** Pokud je PDF chráněno heslem, musíte heslo zadat před voláním `VerifySignature`. Použijte `pdfDocument.Encrypt.Password = "yourPassword";` hned po načtení dokumentu. + +## Kompletní funkční příklad + +Níže je kompletní program, který můžete zkopírovat a vložit do nového konzolového projektu (`dotnet new console`). Obsahuje všechny kroky, ošetření chyb a volitelné ověření. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**Očekávaný výstup** (při předpokladu tří platných podpisů): + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## Zpracování běžných variant + +| Situace | Co změnit | Proč | +|-----------|----------------|-----| +| **PDF chráněné heslem** | Set `pdfDocument.Encrypt.Password = "yourPwd";` before creating `PdfFileSignature`. | Bez hesla jsou slovníky podpisů šifrované a `GetSignatureNames()` vrací prázdné pole. | +| **Velké PDF ( > 100 MB )** | Use `pdfSigner.GetSignatureNames(0, 10)` to page through results (first parameter = start index). | Načtení celého seznamu podpisů najednou může spotřebovat hodně paměti. | +| **Žádné podpisy** | The code already prints a friendly warning. Consider logging this as an audit event. | Kód již vypisuje přátelské varování. Zvažte zaznamenání jako auditní událost. | +| **Vlastní názvy polí podpisů** | The method returns whatever field name was used during signing, e.g., `EmployeeApproval`. No extra work needed. | Metoda vrací jakýkoli název pole použitý při podpisu, např. `EmployeeApproval`. Žádná další práce není potřeba. | + +## Nejlepší postupy a tipy + +- **Uvolňovat objekty**: Vzor `using var pdfSigner` zajišťuje, že nativní zdroje jsou uvolněny okamžitě. +- **Licenci nastavit brzy**: Zavolejte `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` na začátku `Main`, aby se předešlo vodoznaku z evaluační verze. +- **Bezpečnost vláken**: Pokud zpracováváte mnoho PDF paralelně, vytvořte samostatný `PdfFileSignature` pro každé vlákno. Třída není thread‑safe. +- **Logování**: Pro produkci nahraďte `Console.WriteLine` strukturovaným loggerem (Serilog, NLog), abyste mohli zachytit přesné názvy podpisů pro auditní stopy. +- **Kontrola verze**: Kód funguje s Aspose.Pdf pro .NET 23.10 a novější. Starší verze mohou vyžadovat `PdfSignature` místo `PdfFileSignature`. + +## Závěr + +Probrali jsme **jak číst podpisy** z PDF pomocí C#. Načtením PDF dokumentu, vytvořením pomocníka `PdfFileSignature` a voláním `GetSignatureNames()` můžete vypsat každý digitální podpis vložený do souboru. Volitelné ověření přidává vrstvu důvěry a ukázkový kód vám přesně ukazuje, jak to integrovat do reálné konzolové aplikace. + +Jste připraveni na další krok? Zkuste kombinovat toto s `DigitalSignatureUtil` od Aspose pro extrakci certifikátů podepisujících, nebo vložte seznam podpisů do dashboardu pro soulad, který označuje nepodepsané smlouvy. Možnosti jsou nekonečné – jen si pamatujte **načíst PDF dokument C#**, **vypsat PDF podpisy** a **získat digitální podpisy PDF**, kdykoli potřebujete rychlý audit. + +Šťastné programování a ať jsou vaše PDF vždy bezpečně podepsané! + +{{< /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-conversion/_index.md b/pdf/czech/net/document-conversion/_index.md index bbd84a792..4b2fa26f4 100644 --- a/pdf/czech/net/document-conversion/_index.md +++ b/pdf/czech/net/document-conversion/_index.md @@ -21,41 +21,42 @@ Naučíte se, jak nastavit převod, extrahovat text a obrázky, zachovat původn ## Návody | Název | Popis | | --- | --- | +| [Aspose PDF tutoriál: Převod PDF na PDF/X‑4 v C#](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) | Naučte se, jak převést PDF na PDF/X‑4 pomocí Aspose.PDF pro .NET v C#. | | [Přidat přílohu k PDFA](./add-attachment-to-pdfa/) | Naučte se, jak přidávat přílohy k dokumentu PDF/A pomocí Aspose.PDF pro .NET s tímto podrobným návodem. | | [CGM do PDF souborů](./cgm-to-pdf/) | Naučte se, jak převést soubory CGM do PDF pomocí Aspose.PDF pro .NET s tímto podrobným návodem. Ideální pro vývojáře i designéry. | -| [EPUB do PDF](./epub-to-pdf/) Naučte se, jak převést EPUB do PDF pomocí Aspose.PDF pro .NET s tímto podrobným návodem. Snadné, efektivní a perfektní pro všechny uživatele. | +| [EPUB do PDF](./epub-to-pdf/) | Naučte se, jak převést EPUB do PDF pomocí Aspose.PDF pro .NET s tímto podrobným návodem. Snadné, efektivní a perfektní pro všechny uživatele. | | [Získat SVG rozměry](./get-svg-dimensions/) | Naučte se, jak pomocí tohoto podrobného návodu používat Aspose.PDF pro .NET k převodu souborů SVG do PDF. Ideální pro vývojáře, kteří chtějí manipulovat s PDF soubory. | | [Z HTML do PDF](./html-to-pdf/) | Naučte se, jak převést HTML do PDF pomocí Aspose.PDF pro .NET s tímto komplexním podrobným návodem. | | [Markdown do PDF](./markdown-to-pdf/) | V tomto podrobném návodu se naučte, jak převést Markdown do PDF pomocí Aspose.PDF pro .NET. Ideální pro vývojáře, kteří chtějí zefektivnit převod dokumentů. | | [MHT do PDF](./mht-to-pdf/) | Naučte se v tomto podrobném návodu, jak převést soubory MHT do PDF pomocí Aspose.PDF pro .NET. Snadná a efektivní konverze dokumentů. | -| [Orientace stránky podle rozměrů obrázku](./page-orientation-according-image-dimensions/) V tomto podrobném návodu se naučte, jak vytvářet PDF soubory pomocí Aspose.PDF pro .NET a jak nastavit orientaci stránky na základě rozměrů obrázku. | +| [Orientace stránky podle rozměrů obrázku](./page-orientation-according-image-dimensions/) | V tomto podrobném návodu se naučte, jak vytvářet PDF soubory pomocí Aspose.PDF pro .NET a jak nastavit orientaci stránky na základě rozměrů obrázku. | | [PCL do PDF](./pcl-to-pdf/) | Naučte se, jak převést soubory PCL do PDF pomocí Aspose.PDF pro .NET s tímto podrobným návodem. Ideální pro vývojáře i firmy. | | [PDFA do PDF](./pdfa-to-pdf/) | Naučte se, jak převést PDF/A do PDF pomocí Aspose.PDF pro .NET v tomto komplexním návodu krok za krokem. | | [PDF do DOC](./pdf-to-doc/) | Naučte se v tomto komplexním průvodci, jak převést PDF do DOC pomocí Aspose.PDF pro .NET. Součástí jsou podrobné pokyny a tipy. | | [PDF do EPUB](./pdf-to-epub/) | Naučte se v tomto podrobném návodu, jak převést PDF do EPUB pomocí Aspose.PDF pro .NET. Ideální pro vývojáře a tvůrce obsahu. | | [PDF do HTML](./pdf-to-html/) | Naučte se, jak převést PDF do HTML pomocí Aspose.PDF pro .NET s tímto podrobným návodem. Ideální pro vývojáře a tvůrce obsahu. | -| [PDF do PDFA](./pdf-to-pdfa/) Naučte se, jak převést soubory PDF do formátu PDF/A pomocí Aspose.PDF pro .NET v tomto podrobném návodu. | +| [PDF do PDFA](./pdf-to-pdfa/) | Naučte se, jak převést soubory PDF do formátu PDF/A pomocí Aspose.PDF pro .NET v tomto podrobném návodu. | | [PDF do PDFA3b](./pdf-to-pdfa3b/) | Naučte se bez námahy převádět soubory PDF do formátu PDF/A-3B pomocí Aspose.PDF pro .NET v tomto podrobném návodu. | | [Tipy pro převod písma z PDF do PNG](./pdf-to-png-font-hinting/) | Naučte se převádět PDF do PNG s hintingem fontů pomocí Aspose.PDF pro .NET v jednoduchém podrobném návodu. | | [PDF do PPT](./pdf-to-ppt/) | Naučte se, jak převést PDF do PPT pomocí Aspose.PDF pro .NET s tímto podrobným návodem. Snadné, efektivní a ideální pro prezentace. | | [PDF do formátu SVG](./pdf-to-svg/) | Naučte se v tomto podrobném návodu, jak převést soubory PDF do formátu SVG pomocí Aspose.PDF pro .NET. Ideální pro vývojáře a designéry. | | [PDF do TeXu](./pdf-to-tex/) | Naučte se, jak převést PDF do TeXu pomocí Aspose.PDF pro .NET s tímto podrobným návodem. Ideální pro vývojáře, kteří chtějí zlepšit své dovednosti v oblasti zpracování dokumentů. | -| [PDF do XLS](./pdf-to-xls/) Snadno převádějte soubory PDF do formátu XLS pomocí Aspose.PDF pro .NET. Postupujte podle našeho podrobného návodu pro bezproblémovou extrakci dat. | +| [PDF do XLS](./pdf-to-xls/) | Snadno převádějte soubory PDF do formátu XLS pomocí Aspose.PDF pro .NET. Postupujte podle našeho podrobného návodu pro bezproblémovou extrakci dat. | | [PDF do XML](./pdf-to-xml/) | V tomto komplexním tutoriálu se naučte, jak převést PDF do XML pomocí Aspose.PDF pro .NET. Podrobný návod s příklady kódu. | | [PDF do XPS](./pdf-to-xps/) | Naučte se, jak převést PDF do XPS pomocí Aspose.PDF pro .NET s tímto podrobným návodem. Ideální pro vývojáře a nadšence do zpracování dokumentů. | | [Postskriptum do PDF](./postscript-to-pdf/) | Naučte se v tomto podrobném návodu, jak převést soubory PostScript do PDF pomocí Aspose.PDF pro .NET. Ideální pro vývojáře všech úrovní. | | [Zadejte přihlašovací údaje během převodu HTML do PDF](./provide-credentials-during-html-to-pdf/) | Naučte se, jak převést HTML do PDF pomocí Aspose.PDF pro .NET s tímto podrobným návodem. Ideální pro vývojáře, kteří chtějí zefektivnit generování dokumentů. | -| [Odstranění hypertextových odkazů po převodu z HTML](./remove-hyperlinks-after-converting-from-html/) V tomto podrobném návodu se naučte, jak odstranit hypertextové odkazy z HTML dokumentů po převodu do PDF pomocí Aspose.PDF pro .NET. | +| [Odstranění hypertextových odkazů po převodu z HTML](./remove-hyperlinks-after-converting-from-html/) | V tomto podrobném návodu se naučte, jak odstranit hypertextové odkazy z HTML dokumentů po převodu do PDF pomocí Aspose.PDF pro .NET. | | [Nahradit chybějící písma](./replace-missing-fonts/) | Naučte se, jak nahradit chybějící písma v dokumentech PDF pomocí Aspose.PDF pro .NET s tímto podrobným návodem. | | [Nastavit výchozí název písma](./set-default-font-name/) | Naučte se, jak nastavit výchozí název písma při vykreslování PDF souborů do obrázků pomocí Aspose.PDF pro .NET. Tato příručka zahrnuje předpoklady, podrobné pokyny a nejčastější dotazy. | | [SVG do PDF](./svg-to-pdf/) | Naučte se v tomto podrobném návodu, jak převést SVG do PDF pomocí Aspose.PDF pro .NET. Ideální pro vývojáře a designéry. | | [Z TeXu do PDF](./tex-to-pdf/) | Naučte se, jak převést TeX do PDF pomocí Aspose.PDF pro .NET s tímto podrobným návodem krok za krokem. Ideální pro vývojáře a profesionály v oblasti dokumentů. | -| [Text do PDF](./text-to-pdf/) V tomto podrobném návodu se naučte, jak převádět textové soubory do PDF pomocí Aspose.PDF pro .NET. Ideální pro vývojáře, kteří chtějí vylepšit své aplikace. | +| [Text do PDF](./text-to-pdf/) | V tomto podrobném návodu se naučte, jak převádět textové soubory do PDF pomocí Aspose.PDF pro .NET. Ideální pro vývojáře, kteří chtějí vylepšit své aplikace. | | [Vylepšení výkonu převodu z TIFF do PDF](./tiff-to-pdf-performance-improvement/) | Efektivně převádějte obrázky TIFF do PDF pomocí Aspose.PDF pro .NET. Naučte se krok za krokem tipy pro optimalizaci výkonu, abyste hladce zvládali velké obrazové soubory. | | [Webová stránka do PDF](./web-page-to-pdf/) | Naučte se, jak převést webové stránky do PDF pomocí Aspose.PDF pro .NET v tomto podrobném návodu krok za krokem. | | [XML do PDF](./xml-to-pdf/) | Naučte se, jak převést XML do PDF pomocí Aspose.PDF pro .NET v tomto komplexním návodu krok za krokem, který obsahuje příklady kódu a podrobné vysvětlení. | | [Cesta k obrázku z XML do PDF](./xml-to-pdfset-image-path/) | Naučte se, jak snadno převést XML do PDF pomocí Aspose.PDF pro .NET. Tato podrobná příručka vás krok za krokem provede celým procesem, od nastavení až po dokončení. | -| [XPS do PDF](./xps-to-pdf/) Naučte se, jak převést soubory XPS do PDF pomocí Aspose.PDF pro .NET v tomto podrobném návodu. Ideální pro vývojáře a nadšence do dokumentů. | +| [XPS do PDF](./xps-to-pdf/) | Naučte se, jak převést soubory XPS do PDF pomocí Aspose.PDF pro .NET v tomto podrobném návodu. Ideální pro vývojáře a nadšence do dokumentů. | | [Převod PDF na PDF/X‑4 v C# – krok za krokem ASP.NET PDF tutoriál](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | Naučte se, jak převést PDF na PDF/X‑4 pomocí Aspose.PDF pro .NET v C# s podrobným krok za krokem návodem. | | [PDF na PNG tutoriál – Převod stránek PDF do PNG v C#](./pdf-to-png-tutorial-convert-pdf-pages-to-png-in-c/) | Naučte se, jak převést stránky PDF do formátu PNG pomocí Aspose.PDF pro .NET v C#. | diff --git a/pdf/czech/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/czech/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..42c14dd69 --- /dev/null +++ b/pdf/czech/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,224 @@ +--- +category: general +date: 2026-03-06 +description: Tutoriál Aspose PDF ukazuje, jak pomocí Aspose načíst PDF dokument v + C#, převést PDF na PDF/X‑4 a efektivně uložit převedený PDF. +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: cs +og_description: Návod Aspose PDF vysvětluje, jak načíst PDF dokument v C#, převést + jej do formátu PDF/X‑4 a uložit převedený PDF s jasnými ukázkami kódu. +og_title: 'Návod Aspose PDF: Převod PDF na PDF/X‑4 v C#' +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: 'Návod Aspose PDF: Převod PDF na PDF/X‑4 v C#' +url: /cs/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose PDF tutoriál: Převod PDF na PDF/X‑4 v C# + +Už jste se někdy zamysleli, jak použít Aspose k převodu běžného PDF souboru na PDF/X‑4 bez námahy? Nejste jediní – vývojáři často potřebují spolehlivý způsob, jak **load PDF document C#**‑style, převést jej a poté **save the converted PDF** pro následné pracovní postupy. V tomto průvodci projdeme kompletním, spustitelným příkladem, který přesně to dělá, s nejnovější verzí Aspose.Pdf pro .NET. + +Probereme vše od instalace knihovny, načtení zdrojového PDF, převodu na standard PDF/X‑4 a nakonec uložení výsledku na disk. Na konci budete mít pevné pochopení **how to use Aspose** pro tento běžný scénář převodu, plus tipy pro řešení okrajových případů. + +## Požadavky + +- .NET 6.0 nebo novější (kód funguje i na .NET Framework, ale .NET 6+ se doporučuje). +- Platný licenční soubor Aspose.Pdf pro .NET (nebo můžete spustit v režimu hodnocení pro rychlý test). +- Visual Studio 2022 nebo jakékoli IDE kompatibilní s C#. +- Vstupní PDF soubor umístěný v `YOUR_DIRECTORY/input.pdf`. + +Žádné další NuGet balíčky kromě `Aspose.Pdf` nejsou vyžadovány. + +## Instalace Aspose.Pdf přes NuGet + +Otevřete terminál nebo Package Manager Console a spusťte: + +```bash +dotnet add package Aspose.Pdf +``` + +Tím se stáhne nejnovější stabilní verze (k březnu 2026, verze 23.12). Pokud dáváte přednost UI, vyhledejte *Aspose.Pdf* v NuGet Package Manager a nainstalujte jej. + +## Krok 1: Načtení PDF dokumentu v C# pomocí Aspose + +Prvním krokem je načíst zdrojové PDF do paměti. Třída `Document` od Aspose je vstupním bodem. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**Proč je to důležité:** Načtení souboru ověří, že cesta existuje a že PDF není poškozené. Blok `try/catch` vám poskytne elegantní způsob, jak zobrazit chyby – užitečné, když soubor pochází od uživatelských nahrávek. + +## Krok 2: Převod PDF na formát PDF/X‑4 + +PDF/X‑4 je podmnožina PDF určená pro spolehlivý tisk a archivaci. Převod zajišťuje, že všechny fonty jsou vloženy a že soubor splňuje průmyslové standardy. + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**Proč zvolit `ConvertErrorAction.Delete`?** Některé starší PDF obsahují prvky (např. nepodporované anotace), které by jinak zastavily převod. Smazáním se proces zjednoduší, ale měli byste výstup zkontrolovat, pokud potřebujete tyto prvky zachovat. + +### Volitelné: Ověření úspěšnosti převodu + +Pokud chcete mít naprostou jistotu, můžete po převodu zkontrolovat `PdfFormat` dokumentu: + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## Krok 3: Uložení převedeného PDF souboru + +Nyní, když je dokument ve formátu PDF/X‑4, zapište jej zpět na disk. + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**Výsledek, který uvidíte:** V `YOUR_DIRECTORY` se objeví nový soubor s názvem `Converted_PDFX4.pdf`. Otevřete jej v libovolném PDF prohlížeči, který podporuje PDF/X‑4 (Adobe Acrobat, Foxit atd.) a všimnete si, že všechny fonty jsou vloženy a dokument splňuje specifikaci PDF/X‑4. + +![aspose pdf tutorial - converting PDF to PDF/X‑4](/images/aspose-pdf-conversion.png "aspose pdf tutorial showing PDF/X‑4 conversion result") + +*Alt text obrázku obsahuje hlavní klíčové slovo, splňující SEO požadavky.* + +## Kompletní příklad od začátku do konce + +Spojením všeho dohromady, zde je samostatná konzolová aplikace, kterou můžete zkopírovat a vložit do nového C# projektu: + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +Spusťte program a měli byste vidět zprávy v konzoli potvrzující každý krok. Pokud se něco pokazí, chybové zprávy vás nasměrují na konkrétní fázi. + +## Časté otázky a okrajové případy + +### Co když potřebuji zachovat anotace? + +`ConvertErrorAction.Delete` odstraňuje nepodporované objekty, včetně některých anotací. Přepněte na `ConvertErrorAction.Keep`, pokud je jejich zachování klíčové, ale otestujte výstup – některé anotace mohou stále způsobovat varování o souladu. + +### Jak zacházet s velkými PDF (stovky MB)? + +Aspose.Pdf soubor streamuje, takže využití paměti zůstává mírné. Přesto můžete zvýšit prahy `System.GC` nebo zpracovávat dokument po částech (např. převod stránka po stránce) pro extrémně velké soubory. + +### Můžu převádět více souborů najednou? + +Ano. Zabalte logiku načítání‑převodu‑ukládání do smyčky `foreach`, která prochází adresář s PDF soubory. Nezapomeňte ošetřit výjimky pro každý soubor, aby jeden špatný PDF neukončil celý batch. + +### Funguje to na .NET Core na Linuxu? + +Ano. Aspose.Pdf je multiplatformní. Jen se ujistěte, že je odkazován balíček `Aspose.Pdf` a že na Linuxovém hostiteli máte nainstalovány potřebné soubory fontů, pokud potřebujete vykreslování textu. + +## Profesionální tipy z praxe + +- **Nastavte licenci brzy**: `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` – tím se odstraní vodoznak z hodnocení a zlepší výkon. +- **Ověřte výstup**: Použijte `PdfFormatValidator` od Aspose k programovému potvrzení souladu s PDF/X‑4 před odesláním souboru. +- **Logujte čas převodu**: Velké dávky těží z měření času každého převodu (`Stopwatch`) pro odhalení regresí výkonu. +- **Vyhněte se pevně zakódovaným cestám**: Upřednostněte konfigurační soubory nebo proměnné prostředí pro `inputPath` a `outputPath` – zvyšuje přenositelnost aplikace. + +## Závěr + +V tomto **Aspose PDF tutoriálu** jsme ukázali čistý, end‑to‑end workflow pro **how to use Aspose** k **load PDF document C#**, převodu na standard **PDF/X‑4** a **save the converted PDF**. Úryvek je plně spustitelný, vysvětluje *proč* za každým krokem a upozorňuje na úskalí, která můžete potkat v reálných projektech. + +Nyní, když máte základy, můžete řešení rozšířit – dávkově zpracovávat desítky souborů, vkládat vlastní metadata nebo integrovat převod do webového API. Možnosti jsou široké a Aspose.Pdf vám poskytuje nástroje, jak to rychle dosáhnout. + +Máte další otázky ohledně zpracování PDF s Aspose? Zanechte komentář, prozkoumejte oficiální dokumentaci Aspose nebo experimentujte s výše uvedeným kódem. Šťastný převod! + +{{< /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-creation/_index.md b/pdf/czech/net/document-creation/_index.md index 8cbc6b4ac..ce06ab9bf 100644 --- a/pdf/czech/net/document-creation/_index.md +++ b/pdf/czech/net/document-creation/_index.md @@ -77,6 +77,12 @@ Výukový program pro kódování Aspose.PDF Net ### [Vytvořte PDF dokument pomocí Aspose.PDF – Přidejte stránku, tvar a uložte](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) Naučte se, jak vytvořit PDF, přidat stránku a tvar a soubor uložit pomocí Aspose.PDF. +### [Vytvořte PDF dokument pomocí Aspose.PDF – krok za krokem průvodce](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +Naučte se, jak pomocí Aspose.PDF vytvořit PDF dokument od začátku pomocí podrobných kroků a ukázek kódu. + +### [Vytvořte PDF dokument pomocí Aspose.PDF – Kompletní průvodce C#](./create-pdf-document-with-aspose-pdf-full-c-guide/) +Naučte se, jak kompletně vytvořit PDF dokument v C# pomocí Aspose.PDF s podrobnými ukázkami kódu. + ## Další zdroje - [Aspose.PDF pro síťovou dokumentaci](https://docs.aspose.com/pdf/net/) diff --git a/pdf/czech/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/czech/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..0bf968a15 --- /dev/null +++ b/pdf/czech/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-06 +description: Vytvořte PDF dokument v C# pomocí Aspose.PDF – naučte se, jak přidat + prázdné stránky PDF, textové pole, widget a rychle uložit PDF. +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: cs +og_description: Vytvořte PDF dokument v C# pomocí Aspose.PDF. Tento průvodce ukazuje, + jak přidat prázdné stránky PDF, textové pole, widget a jak uložit PDF. +og_title: Vytvořte PDF dokument pomocí Aspose.PDF – kompletní C# tutoriál +tags: +- pdf +- csharp +- aspose +- forms +title: Vytvoření PDF dokumentu pomocí Aspose.PDF – Kompletní C# průvodce +url: /cs/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Vytvoření PDF dokumentu pomocí Aspose.PDF – Kompletní průvodce v C# + +Už jste někdy potřebovali **vytvořit pdf dokument** od nuly v .NET projektu a přemýšleli, kde začít? Nejste v tom sami; mnoho vývojářů narazí na stejnou překážku, když první požadavek zní „vygenerovat vyplnitelný PDF se stejným textovým polem na třech stránkách.“ Dobrá zpráva? S Aspose.PDF můžete během několika řádků vytvořit profesionálně vypadající PDF. + +V tomto tutoriálu projdeme celý proces: od inicializace nového PDF, **přidání prázdných stránek pdf**, vložení **textboxu**, replikaci pomocí anotací **widget** a nakonec **uložení PDF** na disk. Na konci budete mít připravený soubor pojmenovaný *MultiWidgetField.pdf* a pevné pochopení, proč je každý krok důležitý. + +## Co tento průvodce pokrývá + +- Požadavky, které potřebujete před napsáním jediného řádku kódu. +- Krok za krokem vytvoření PDF dokumentu pomocí Aspose.PDF pro .NET. +- Jak přidat prázdné stránky, textové pole formuláře a další instance widgetů. +- Tipy pro řešení běžných úskalí (např. indexování stránek, kolize názvů polí). +- Kompletní C# program připravený ke zkopírování a vložení, který můžete spustit ještě dnes. + +Žádné externí odkazy na dokumentaci, žádné zkratky typu „viz API dokumentace“ – vše, co potřebujete, je zde. + +## Požadavky + +Před tím, než se ponoříte, ujistěte se, že máte: + +1. **.NET 6.0** (nebo jakákoli novější verze) nainstalovaná na vašem počítači. +2. Aktivní licence **Aspose.PDF for .NET** nebo dočasný evaluační klíč. +3. Vývojové prostředí jako **Visual Studio 2022** nebo **VS Code** s rozšířením C#. + +To je vše – nic dalšího není potřeba. + +## Krok 1: Inicializace PDF dokumentu a přidání prázdných stránek + +První věc, kterou uděláte, když programově **vytvoříte pdf dokument**, je vytvořit objekt `Document`. Představte si to jako otevření zcela nového zápisníku. Pak přidáte potřebné stránky; v našem případě tři prázdné stránky. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**Proč je to důležité:** Aspose.PDF interně zachází se stránkami jako s kolekcí indexovanou od nuly, ale jeho veřejné API je indexováno od jedné, takže `Pages[1]` je první stránka, kterou jste právě přidali. Přidání stránek předem vám poskytne plátno pro umístění formulářových polí později a je mnohem levnější než vkládání stránek za běhu po zvětšení dokumentu. + +> **Tip:** Pokud potřebujete jen jednu stránku, můžete přeskočit smyčku a zavolat `pdfDocument.Pages.Add()` jednou. Přidání více stránek ve smyčce udržuje kód škálovatelný. + +## Krok 2: Definování TextBox formulářového pole na první stránce + +Nyní, když máme tři prázdné listy, vložíme **textbox** na první. `TextBoxField` je formulářový prvek, do kterého uživatelé mohou psát, když je PDF otevřeno v Acrobat Readeru nebo jakémkoli PDF prohlížeči, který podporuje formuláře. + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**Proč jsou zde souřadnice obdélníku?** Aspose.PDF používá body (1/72 palce). Obdélník `(100, 700, 300, 730)` umístí textbox přibližně do poloviny stránky, šířka 200 pt a výška 30 pt. Upravením těchto čísel přizpůsobíte rozložení. + +> **Často kladená otázka:** *Musím nastavit vlastnost `Value`?* +> Ne, je volitelná. Pokud ji necháte prázdnou, zobrazí se prázdné pole; nastavení výchozí hodnoty může uživatele nasměrovat. + +## Krok 3: Přidání Widget anotací pro stejné pole na stránkách 2 a 3 + +**Widget** je vizuální reprezentace formulářového pole na konkrétní stránce. Ve výchozím nastavení se pole zobrazí jen na stránce, kde bylo vytvořeno. Chcete‑li znovu použít stejný textbox na dalších stránkách, připojíte další objekty `WidgetAnnotation` ke kolekci `Widgets` pole. + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**Proč widgety?** Bez nich by uživatel viděl textbox jen na stránce 1, i když podkladové pole existuje. Widgety vám umožní sdílet jedno logické pole napříč více stránkami, což zajišťuje, že zadaný text se zobrazí všude, kde je pole zobrazeno. + +> **Hraniční případ:** Pokud potřebujete textbox na různých souřadnicích na každé stránce, jednoduše změňte hodnoty `Rectangle` pro každý widget. + +## Krok 4: Registrace pole do kolekce formulářů dokumentu + +Aspose.PDF udržuje centrální registr všech formulářových polí. Přidání pole do kolekce `Form` jej zahrne do interaktivní struktury formuláře PDF. + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +Druhý argument (`"Comment"`) je **plně kvalifikovaný název** pole. Musí být v celém dokumentu jedinečný; jinak Aspose vyhodí výjimku. + +## Krok 5: Uložení výsledného PDF – Jak uložit PDF + +Nakonec uložíme dokument v paměti na disk. Toto je část **jak uložit pdf** v tutoriálu. + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**Proč zadávat absolutní cestu?** Použití absolutní cesty zabraňuje záměně pracovního adresáře, zejména při spouštění programu z debuggeru Visual Studia. Pokud dáváte přednost relativní cestě, ujistěte se, že složka existuje před voláním `Save`. + +### Očekávaný výsledek + +Otevřete *MultiWidgetField.pdf* v Adobe Acrobat Readeru. Uvidíte stejné textbox na stránkách 1, 2 a 3. Napište něco do pole na kterékoliv stránce – text se okamžitě objeví na ostatních stránkách, protože sdílejí stejné podkladové formulářové pole. + +![Příklad vytvoření PDF dokumentu zobrazující textové pole na třech stránkách](https://example.com/placeholder-image.png "Příklad vytvoření PDF dokumentu") + +*Text obrázku: Příklad vytvoření PDF dokumentu zobrazující textové pole na třech stránkách.* + +## Kompletní, připravený k spuštění příklad + +Níže je kompletní program, který můžete zkopírovat do nového konzolového projektu (`dotnet new console`) a spustit. Všechny kroky jsou již seřazeny a kód obsahuje komentáře pro přehlednost. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +Spusťte program, přejděte do `C:\Temp\` a otevřete vygenerovaný PDF. Uvidíte tři identická textová pole připravená pro vstup uživatele. + +## Běžné varianty a hraniční případy + +| Scénář | Co změnit | Proč | +|----------|----------------|-----| +| **Různá velikost textboxu na každé stránce** | Upravte hodnoty `Rectangle` pro každou `WidgetAnnotation`. | Umožňuje přizpůsobit pole různým rozvržením. | +| **Pole jen pro čtení** | Nastavte `commentField.ReadOnly = true;`. | Zabrání uživatelům upravovat obsah po počátečním vyplnění. | +| **Víceřádkový textbox** | Nastavte `commentField.Multiline = true;` a zvětšete výšku obdélníku. | Umožňuje delší komentáře bez posouvání. | +| **Přidání druhého pole** | Vytvořte další `TextBoxField` (nebo jakýkoli `FormField`) a opakujte kroky 2‑4 s novým názvem. | Můžete sbírat více informací v jednom PDF. | + +## Profesionální tipy a úskalí, kterým se vyhnout + +- **Indexování stránek:** Pamatujte, že `pdfDocument.Pages[1]` je první stránka, ne `[0]`. Míchání indexů od nuly a od jedné vede k výjimkám „Index out of range“. +- **Kolize názvů polí:** Dvě pole nemohou sdílet stejný plně kvalifikovaný název. Pokud získáte chybu o duplicitních názvech, zkontrolujte řetězec, který předáváte do `Form.Add`. +- **Licence vs. evaluační verze:** Evaluační verze přidává vodoznak na každou stránku. Nasazení platné licence jej v produkci odstraní. +- **Výkon:** Přidání stovek stránek ve smyčce je v pořádku, ale pokud potřebujete generovat obrovské PDF (tisíce stránek), zvažte použití + +{{< /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-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/czech/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..d4600e7f2 --- /dev/null +++ b/pdf/czech/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-03-06 +description: Vytvořte PDF dokument pomocí Aspose.PDF v C#. Naučte se, jak přidat stránku + PDF, nakreslit obdélník v PDF, přidat tvar do PDF a ovládat tloušťku okraje obdélníku + – vše v jednom tutoriálu. +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: cs +og_description: Vytvořte PDF dokument v C# pomocí Aspose.PDF. Tento tutoriál ukazuje, + jak přidat stránku PDF, nakreslit obdélník v PDF, přidat tvar do PDF a nastavit + tloušťku okraje obdélníku. +og_title: Vytvořte PDF dokument s Aspose.PDF – kompletní průvodce +tags: +- Aspose.PDF +- C# +- PDF generation +title: Vytvořte PDF dokument s Aspose.PDF – krok za krokem +url: /cs/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Vytvoření PDF dokumentu pomocí Aspose.PDF – krok za krokem + +Už jste někdy potřebovali **vytvořit PDF dokument** programově a nevěděli, kde začít? Nejste v tom sami — mnoho vývojářů narazí na stejný problém, když jejich aplikace potřebují během chodu vygenerovat faktury, zprávy nebo certifikáty. + +Dobrou zprávou je, že s Aspose.PDF pro .NET to můžete udělat během několika řádků a zároveň se naučíte, jak **add page PDF**, **draw rectangle PDF**, **add shape PDF** a upravit **rectangle border thickness**. Pojďme na to. + +## Co si vytvoříte + +Na konci tohoto návodu budete mít plně funkční C# konzolovou aplikaci, která: + +1. **Creates a PDF document** od nuly. +2. **Adds a page PDF** do dokumentu. +3. **Draws a rectangle PDF** na této stránce. +4. **Validates**, že obdélník zůstává uvnitř hranic stránky (**add shape PDF** krok). +5. Nastaví vlastní **rectangle border thickness**. +6. Uloží výsledek jako `ShapeValidated.pdf`. + +Žádné externí služby, žádná tajemná konfigurace — pouze čistý C# a Aspose.PDF. + +### Požadavky + +- .NET 6.0 nebo novější (kód funguje také s .NET Framework 4.6+). +- Odkaz na NuGet balíček `Aspose.Pdf`. Můžete jej přidat pomocí: + +```bash +dotnet add package Aspose.Pdf +``` + +- Textový editor nebo IDE — Visual Studio, VS Code, Rider, nebo cokoli, co preferujete. + +> **Pro tip:** Pokud pracujete na firemním počítači, ujistěte se, že NuGet feed není blokován; jinak obdržíte chybu „Package not found“. + +--- + +## Vytvoření PDF dokumentu – inicializace dokumentu + +Prvním krokem je vytvořit objekt `Document`. Považujte jej za prázdné plátno, na kterém budou umístěny všechny stránky a tvary. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +Proč potřebujeme tento objekt? Reprezentuje celý PDF soubor v paměti a poskytuje přístup ke kolekci `Pages`, metadatům a bezpečnostním nastavením. Jakmile máte dokument, můžete začít přidávat stránky, text, obrázky a vektorovou grafiku. + +--- + +## Přidání stránky do PDF (add page pdf) + +PDF bez stránek je v podstatě prázdný soubor — zbytečný. Přidání stránky je jednoduché a můžete si upravit její velikost, pokud chcete. Zde používáme výchozí velikost A4. + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +Metoda `Add()` vrací čerstvou instanci `Page`, která už je součástí kolekce `Pages`, takže můžete okamžitě začít kreslit. V reálných scénářích můžete v cyklu procházet datový soubor a přidávat desítky stránek; stejný jednorázový volání funguje pro každou iteraci. + +--- + +## Nakreslení obdélníkového tvaru (draw rectangle pdf) + +Nyní vizuální část: obdélník s viditelným okrajem. Zde vstupuje do hry **draw rectangle pdf**. + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +Několik poznámek: + +- `Rect` používá body (1 pt ≈ 1/72 palce). Souřadnice definují levý dolní a pravý horní roh, takže můžete přesně řídit šířku a výšku. +- `BorderInfo` vám umožňuje určit, které strany mají čáru a jak silná čára bude. Zde aplikujeme 2‑bodovou čáru na **all** strany, což dává obdélníku čistý, jednotný vzhled. + +--- + +## Ověření umístění tvaru (add shape pdf) + +Než obdélník přidáme na stránku, je rozumné ověřit, že se vejde do tiskové oblasti stránky. Aspose.PDF poskytuje k tomu praktickou pomocnou metodu. + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +Proč to dělat? Pokud omylem umístíte tvar částečně mimo obrazovku, PDF prohlížeč jej může oříznout, což vede k matoucímu uživatelskému zážitku. Tento **add shape pdf** guard clause zajišťuje, že přidáte jen obsah, který bude plně viditelný. + +--- + +## Uložení PDF (add page pdf) + +Nakonec uložíme dokument z paměti na disk. Můžete zvolit libovolné místo, kde máte oprávnění k zápisu. + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +Po spuštění programu otevřete `ShapeValidated.pdf` — měli byste vidět jedinou stránku s pěkně ohraničeným obdélníkem, který je přibližně uprostřed. + +--- + +## Očekávaný výsledek + +Když otevřete vygenerovaný PDF, uvidíte: + +- Jednu stránku formátu A4. +- Obdélník, jehož levý dolní roh začíná v (50 pt, 50 pt) a pravý horní končí v (600 pt, 800 pt). +- **2‑point thick** okraj obklopující obdélník. + +Pokud konzole vytiskla „PDF created successfully!“, víte, že kód proběhl bez chyb při kontrole hranic. + +![Diagram ukazující, jak vytvořit PDF dokument pomocí Aspose.PDF](https://example.com/diagram-create-pdf.png "Vytvoření PDF dokumentu – vizuální přehled") + +*Obrázek obsahuje primární klíčové slovo pro splnění SEO požadavků.* + +--- + +## Časté otázky a okrajové případy + +### Co když potřebuji jinou velikost stránky? + +Nahraďte výchozí stránku vlastní velikostí: + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### Jak změním barvu okraje? + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### Můžu přidat více tvarů na stejnou stránku? + +Určitě. Stačí zopakovat blok **add shape pdf** s novým `RectangleShape` (nebo jinými podtřídami `Shape`) a podle potřeby upravit souřadnice `Rect`. + +### Co když obdélník přesáhne okraje stránky? + +Volání `IsShapeWithinBounds` vrátí `false`. Ve výrobním kódu můžete chtít automaticky změnit velikost tvaru: + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +--- + +## Shrnutí + +Prošli jsme celým životním cyklem **creating a PDF document** s Aspose.PDF: + +1. Inicializujte `Document`. +2. **Add a page PDF** pomocí `Pages.Add()`. +3. **Draw a rectangle PDF** přes `RectangleShape`. +4. **Add shape PDF** pouze po potvrzení, že zůstává uvnitř stránky. +5. Ovládejte **rectangle border thickness** pomocí `BorderInfo`. +6. Uložte soubor. + +To je celý workflow v méně než 60 řádcích kódu. + +--- + +## Co dál? + +- **Add text**: Použijte `TextFragment` k umístění titulků nebo popisků uvnitř obdélníku. +- **Insert images**: Třída `Image` vám umožní vložit loga nebo grafy. +- **Create tables**: Ideální pro faktury nebo datové zprávy. +- **Apply security**: Chraňte PDF heslem, pokud obsahuje citlivá data. + +Každé z těchto témat staví na základech, které jsme zde probrali, takže jste dobře připraveni prozkoumat pokročilejší scénáře generování PDF. + +--- + +### Pokračujte v experimentování + +Nezůstávejte jen u jednoho obdélníku — hrajte si s různými tvary, barvami a styly čar. API Aspose.PDF je bohaté a čím více si s ním pohráváte, tím jistější budete. Pokud narazíte na problém, oficiální dokumentace Aspose je skvělým pomocníkem, ale pamatujte, že kód výše je kompletní, připravený ke zkopírování a spuštění ještě dnes. + +Šťastné programování a ať se vaše PDF soubory vždy vykreslí přesně tak, jak jste si představovali! + +{{< /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 609447a6d..a644ee0e2 100644 --- a/pdf/czech/net/document-manipulation/_index.md +++ b/pdf/czech/net/document-manipulation/_index.md @@ -311,13 +311,3139 @@ Naučte se, jak rozdělovat vícestránkové PDF soubory a vytvářet nové PDF ### [Ultimátní průvodce manipulací s PDF pomocí Aspose.PDF .NET: Efektivní načítání, ukládání a nahrazování textu](./master-pdf-manipulation-aspose-pdf-net/) Naučte se, jak zvládnout manipulaci s PDF pomocí Aspose.PDF pro .NET. Tato příručka se zabývá načítáním, ukládáním a nahrazováním textu v PDF souborech, což je ideální pro vývojáře, kteří hledají efektivitu. -## 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. + +### [Jak zakázat kompresi souborů v Aspose.PDF pro .NET: Podrobný návod](./disable-file-compression-aspose-pdf-net-guide/) +Naučte se, jak zakázat kompresi souborů v PDF pomocí Aspose.PDF pro .NET v tomto komplexním průvodci. Zlepšete si své dovednosti v práci s dokumenty ještě dnes. + +### [Jak extrahovat a ukládat konkrétní stránky PDF pomocí Aspose.PDF pro .NET - Komplexní průvodce](./extract-save-pdf-pages-aspose-net/) +Naučte se, jak efektivně extrahovat a ukládat konkrétní stránky z PDF souborů pomocí Aspose.PDF pro .NET ve vašich C# aplikacích. Zvládněte manipulaci s dokumenty s lehkostí. + +### [Jak extrahovat stránky z PDF pomocí streamů v .NET s Aspose.PDF](./extract-pages-pdf-aspose-net-streams/) +Naučte se, jak efektivně extrahovat konkrétní stránky ze souboru PDF pomocí C# a Aspose.PDF v .NET. Pro optimální manipulaci s dokumenty postupujte podle tohoto podrobného návodu. + +### [Jak implementovat skrytý a prohledávatelný text v PDF pomocí Aspose.PDF pro .NET](./aspose-pdf-dotnet-hidden-text-pdfs/) +Naučte se, jak spravovat skrytý text v dokumentech PDF pomocí Aspose.PDF pro .NET. Tato příručka se zabývá přidáváním, vyhledáváním a optimalizací viditelnosti textu. + +### [Jak vkládat stránky do PDF pomocí Aspose.PDF pro .NET: Podrobný návod](./insert-pages-into-pdf-aspose-net/) +Naučte se, jak vkládat konkrétní stránky z jednoho PDF do jiného pomocí Aspose.PDF pro .NET. Postupujte podle tohoto podrobného návodu a zlepšete si své dovednosti v manipulaci s dokumenty. + +### [Jak přidat a upravit čísla stránek v PDF pomocí Aspose.PDF pro .NET | Průvodce manipulací s dokumenty](./add-customize-page-numbers-aspose-pdf-dot-net/) +Naučte se, jak snadno přidávat a upravovat čísla stránek v PDF dokumentech pomocí Aspose.PDF pro .NET. Tato komplexní příručka zahrnuje instalaci, možnosti přizpůsobení a tipy pro zvýšení výkonu. + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se, jak přidávat a odebírat funkce JavaScriptu ve vašich PDF dokumentech pomocí Aspose.PDF pro .NET. Vylepšete interaktivitu a funkčnost vašich dokumentů s naším podrobným návodem. + +### [Jak připojit více PDF souborů pomocí Aspose.PDF pro .NET: Podrobný návod](./append-multiple-pdf-files-aspose-net/) +Naučte se, jak efektivně připojit více PDF souborů do jednoho dokumentu pomocí Aspose.PDF pro .NET, s podrobnými kroky a příklady kódu. + +### [Jak přidávat PDF soubory pomocí Aspose.PDF pro .NET: Komplexní průvodce](./append-pdf-files-aspose-pdf-net-guide/) +Naučte se, jak efektivně přidávat PDF soubory pomocí Aspose.PDF pro .NET s tímto podrobným návodem, který je ideální pro zefektivnění pracovních postupů s dokumenty v C#. + +### [Jak přidávat PDF soubory pomocí Aspose.PDF v .NET: Komplexní průvodce](./mastering-pdf-append-aspose-pdf-net/) +Naučte se, jak efektivně přidávat PDF soubory pomocí Aspose.PDF pro .NET s tímto podrobným návodem. Zvládněte manipulaci s dokumenty pro efektivní pracovní postupy. + +### [Jak přidat prázdnou stránku na konec PDF pomocí Aspose.PDF pro .NET | Podrobný návod](./add-empty-page-end-pdf-aspose-pdf-net/) +Naučte se, jak bez problémů přidat prázdnou stránku na konec PDF souboru pomocí Aspose.PDF pro .NET. Tento komplexní tutoriál zahrnuje nastavení, implementaci a osvědčené postupy. + +### [Jak přidat prázdnou stránku na konec PDF pomocí Aspose.PDF pro .NET | Podrobný návod](./add-empty-page-end-pdf-aspose-pdf-net/) +Naučte se, jak bez problémů přidat prázdnou stránku na konec PDF souboru pomocí Aspose.PDF pro .NET. Tento komplexní tutoriál zahrnuje nastavení, implementaci a osvědčené postupy. + +### [Jak přidat prázdnou stránku na konec PDF pomocí Aspose.PDF pro .NET | Podrobný návod](./add-empty-page-end-pdf-aspose-pdf-net/) +Naučte se, jak bez problémů přidat prázdnou stránku na konec PDF souboru pomocí Aspose.PDF pro .NET. + +### [Jak přidat a upravit čísla stránek v PDF pomocí Aspose.PDF pro .NET | Průvodce manipulací s dokumenty](./add-customize-page-numbers-aspose-pdf-dot-net/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat JavaScript v PDF pomocí Aspose.PDF .NET: Komplexní průvodce](./aspose-pdf-net-add-remove-javascript-pdfs/) +Naučte se ... + +### [Jak přidat a odebrat Java -- [Aspose.PDF pro síťovou dokumentaci](https://docs.aspose.com/pdf/net/) -- [Aspose.PDF pro referenční příručku Net API](https://reference.aspose.com/pdf/net/) -- [Stáhnout Aspose.PDF pro Net](https://releases.aspose.com/pdf/net/) -- [Bezplatná podpora](https://forum.aspose.com/) -- [Dočasná licence](https://purchase.aspose.com/temporary-license/) +### [Jak redigovat PDF v C# pomocí Aspose PDF – Kompletní průvodce](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) +Naučte se, jak pomocí Aspose PDF v C# provádět redakci PDF, odstraňovat citlivé informace a chránit dokumenty v tomto kompletním průvodci. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/czech/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/czech/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..f6445a686 --- /dev/null +++ b/pdf/czech/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,249 @@ +--- +category: general +date: 2026-03-06 +description: Naučte se, jak redigovat PDF pomocí Aspose PDF v C#. Tento krok‑za‑krokem + návod ukazuje, jak načíst PDF dokument v C#, přistoupit k první stránce PDF a odstranit + obrázek z PDF. +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: cs +og_description: Jak rychle redigovat PDF pomocí Aspose PDF v C#. Načtěte PDF dokument, + přistupte k první stránce PDF a odstraňte obrázek z PDF pomocí několika řádků kódu. +og_title: Jak cenzurovat PDF v C# – Tutoriál Aspose PDF +tags: +- Aspose PDF +- C# +- PDF Redaction +title: Jak cenzurovat PDF v C# s Aspose PDF – Kompletní průvodce +url: /cs/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak redigovat PDF v C# pomocí Aspose PDF – Kompletní průvodce + +Už jste se někdy zamýšleli **jak redigovat PDF** soubory bez zbytečného úsilí? Možná jste dostali smlouvu, která skrývá důvěrné logo, nebo zprávu, která stále zobrazuje zástupný obrázek, který musíte odstranit. V takových chvílích budete chtít spolehlivý programový způsob, jak tento obsah vymazat – bez ručního kouzlení v Acrobat. + +V tomto tutoriálu projdeme stručné, kompletní řešení, které **načte PDF dokument v C#**, **přistoupí k první stránce PDF** a poté **odstraní obrázek z PDF** pomocí výkonné knihovny **Aspose PDF**. Na konci budete mít plně redigované PDF připravené k distribuci a pochopíte, proč je každý řádek kódu důležitý. + +> **Pro tip:** Aspose PDF funguje s .NET Framework 4.6+ a .NET Core 3.1+, takže jste pokryti, ať už používáte Windows, Linux nebo macOS. + +--- + +![how to redact pdf example](redact-pdf-before-after.png){alt="jak redigovat pdf příklad"} + +## Co budete potřebovat + +- **Aspose.PDF for .NET** (nejnovější balíček NuGet) +- **Vývojové prostředí C#** (Visual Studio, Rider nebo VS Code) +- Vzorek PDF, který obsahuje obrázkový zdroj, který chcete odstranit (nazveme ho `Sensitive.pdf`) + +Žádné další nástroje třetích stran, žádné OCR, jen čistý kód. + +--- + +## Krok 1: Načtení PDF dokumentu v C# – První krok + +Než budete moci něco redigovat, musíte soubor načíst do paměti. Třída `Document` je vstupním bodem pro každou operaci Aspose PDF. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**Proč je to důležité:** +`Document` parsuje celou strukturu PDF, vytváří objektový model, který vám umožňuje manipulovat se stránkami, zdroji a anotacemi. Pokud soubor nelze načíst (špatná cesta, poškozené PDF), okamžitě se vyhodí výjimka – takže brzy zjistíte, že něco není v pořádku. + +### Častý úskalí + +> *„Dostávám `FileNotFoundException`, i když soubor existuje.“* +> Ujistěte se, že cesta je absolutní nebo že pracovní adresář projektu odpovídá umístění `Sensitive.pdf`. Použití `Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")` může pomoci vyhnout se problémům s relativními cestami. + +--- + +## Krok 2: Přístup k první stránce PDF – Kde se nachází obrázek + +Obrázky jsou uloženy jako zdroje na úrovni jednotlivých stránek. V mnoha jednoduchých PDF je viníkem první stránka, takže si ji načteme. + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**Proč je to důležité:** +Aspose PDF používá pro stránky indexování od 1, což je poněkud neobvyklé ve srovnání s většinou .NET kolekcí. Přístup k nesprávné stránce může znamenat, že redigujete špatný obsah – nebo ještě hůř, že citlivý obrázek zůstane nedotčen. + +### Úvaha o okrajových případech + +Pokud váš dokument nemá žádné stránky (prázdné PDF), pokus o `pdfDocument.Pages[1]` vyvolá `IndexOutOfRangeException`. Rychlá ochrana vám může ušetřit problémy: + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +--- + +## Krok 3: Odstranění obrázku z PDF – Redigování zdroje + +Aspose PDF vám umožňuje smazat zdroj podle jména. Většina obrázků je pojmenována `Im1`, `Im2` atd., ale můžete zkontrolovat `firstPage.Resources.Images`, abyste si byli jisti. + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**Proč je to důležité:** +`RedactResource` odstraní obrázek *a* všechny odkazy na něj na stránce, čímž zajistí, že vizuální mezera bude vyplněna prázdnou oblastí místo poškozeného odkazu. Je to čistý, PDF‑standardní způsob, jak vymazat obsah. + +### Jak najít správné jméno obrázku + +Pokud si nejste jisti, zda se obrázek jmenuje `"Im1"`: + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +Spusťte tento úryvek, podívejte se na výstup v konzoli a nahraďte `"Im1"` skutečným klíčem, který vidíte. + +--- + +## Krok 4: Uložení redigovaného PDF – Dokončení úkolu + +Nyní, když je nežádoucí obrázek pryč, zapište změny zpět na disk. + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**Proč je to důležité:** +Uložení do **nového** souboru ponechá originál nedotčený – bezpečnostní síť pro případ, že budete potřebovat vrátit změny. Pokud musíte přepsat, stačí nasměrovat metodu `Save` na původní cestu, ale uvědomte si, že operace je nevratná. + +### Ověření výsledku + +Otevřete `Redacted.pdf` v libovolném prohlížeči PDF. Místo obrázku by mělo být prázdné a zbytek dokumentu by měl vypadat identicky jako originál. Pokud se rozložení stránky zdá posunuté, zkontrolujte, že jste odstranili jen zamýšlený zdroj a ne sdílený XObject. + +--- + +## Kompletní funkční příklad + +Spojením všech částí získáte kompletní, připravený k spuštění program: + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**Očekávaný výstup** (v konzoli): + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +Když otevřete `Redacted.pdf`, obrázek, který byl dříve `Im1`, bude pryč a zůstane čistá stránka. + +--- + +## Často kladené otázky + +### Funguje to s šifrovanými PDF? + +Pokud je zdrojové PDF chráněno heslem, předávejte heslo konstruktoru `Document`: + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### Co když se obrázek objeví na více stránkách? + +Projděte každou stránku a zavolejte `RedactResource` se stejným jménem obrázku (nebo zjistěte jméno pro každou stránku). Příklad: + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### Můžu redigovat text stejným způsobem? + +Ano – použijte `page.Contents.RedactText("confidential")` nebo využijte třídu `Redactor` pro pokročilejší vzory. To je samostatný tutoriál, ale princip je stejný jako u obrázků. + +--- + +## Závěr – Co jsme dosáhli + +Odpověděli jsme na **jak redigovat PDF** soubory programově tím, že: + +1. **Načtení PDF dokumentu v C#** pomocí Aspose PDF. +2. **Přístup k první stránce PDF** pro nalezení cílového zdroje. +3. **Odstranění obrázku z PDF** pomocí `RedactResource`. +4. **Uložení** vyčištěné verze bezpečně. + +Tento přístup je rychlý, opakovatelný a funguje v dávkových úlohách – ideální pro souladové pipeline nebo automatizovanou generaci zpráv. + +Pokud jste připraveni posunout věci dál, zvažte prozkoumání: + +- **Dávkové redigování** napříč celou složkou PDF souborů. +- **Redigování textu** pomocí regex vzorů s využitím `Redactor`. +- **Vložení vodoznaku** po redigování pro označení „očistěno“. + +Vyzkoušejte to, upravte logiku názvů obrázků pro své soubory, + +{{< /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/performance-optimization/_index.md b/pdf/czech/net/performance-optimization/_index.md index c074ed8c5..6df3c457b 100644 --- a/pdf/czech/net/performance-optimization/_index.md +++ b/pdf/czech/net/performance-optimization/_index.md @@ -50,6 +50,9 @@ Zvládněte umění převodu souborů SVG do PDF s přesností a efektivitou pom ### [Odebrání vložených písem z PDF pomocí Aspose.PDF pro .NET: Zmenšení velikosti souboru a zlepšení výkonu](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) Naučte se, jak odebrat vložené fonty ze souborů PDF pomocí Aspose.PDF pro .NET. Optimalizujte výkon PDF, zmenšete velikost souboru a zlepšete dobu načítání s tímto podrobným návodem. +### [Jak komprimovat PDF pomocí Aspose.PDF – rychlý průvodce](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) +Rychlý návod, jak pomocí Aspose.PDF komprimovat PDF soubory a snížit jejich velikost. + ## Další zdroje - [Aspose.PDF pro síťovou dokumentaci](https://docs.aspose.com/pdf/net/) diff --git a/pdf/czech/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/czech/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..2c0514d6c --- /dev/null +++ b/pdf/czech/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,204 @@ +--- +category: general +date: 2026-03-06 +description: Naučte se okamžitě komprimovat PDF pomocí Aspose.Pdf. Tento průvodce + ukazuje, jak snížit velikost souboru PDF bezeztrátovou kompresí. +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: cs +og_description: Jak komprimovat PDF pomocí Aspose.Pdf? Postupujte podle tohoto krok‑za‑krokem + tutoriálu, abyste snížili velikost PDF souboru, dosáhli bezztrátové komprese PDF + a uložili optimalizované PDF soubory. +og_title: Jak komprimovat PDF pomocí Aspose.Pdf – rychlý průvodce +tags: +- pdf +- aspnet +- csharp +title: Jak komprimovat PDF pomocí Aspose.Pdf – rychlý průvodce +url: /cs/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# jak komprimovat pdf pomocí Aspose.Pdf – rychlý průvodce + +Už jste se někdy zamýšleli **jak komprimovat pdf** soubory, aniž by se změnily v rozmazaný nepořádek? Nejste sami. Většina vývojářů narazí na problém, když potřebují **zmenšit velikost pdf souboru** pro e‑mailové přílohy, nahrávání na web nebo omezení úložiště, a zároveň se obávají ztráty kvality obrázků. + +V tomto tutoriálu projdeme kompletním, připraveným příkladem, který vám ukáže přesně **jak komprimovat pdf** pomocí vestavěného optimalizátoru Aspose.Pdf. Na konci budete vědět, jak **zmenšit velikost pdf souboru**, udržet obrázky ostré pomocí **bezeztrátové komprese pdf** a nakonec **uložit optimalizovaný pdf** soubor, který bude fungovat v jakémkoli prohlížeči. + +## Co se naučíte + +- Načíst těžký PDF (např. plný vysoce rozlišených obrázků) do paměti. +- Použít optimalizátor Aspose.Pdf s výchozími bezeztrátovými nastaveními. +- Uložit výsledek jako nový, menší soubor. +- Tipy, jak upravit kompresi, pokud potřebujete ještě větší úsporu. + +Žádné externí nástroje, žádné tajemné příkazy v terminálu — jen čistý C# kód a srozumitelná vysvětlení. + +## Předpoklady + +Než se pustíme dál, ujistěte se, že máte: + +| Požadavek | Proč je důležitý | +|-------------|----------------| +| .NET 6.0 nebo novější (nebo .NET Framework 4.6+) | Aspose.Pdf podporuje obojí; novější runtime poskytuje lepší výkon. | +| NuGet balíček Aspose.Pdf pro .NET (`Aspose.Pdf`) | Třída `Document` se nachází zde. | +| PDF s velkými obrázky (např. `HeavyImages.pdf`) | Dává vám něco konkrétního, co můžete zmenšit. | +| Visual Studio, Rider nebo jakýkoli C# editor, který preferujete | Pohodlí je klíč — vyberte si to, co vám nejlépe vyhovuje. | + +> **Pro tip:** Pokud používáte CI/CD pipeline, přidejte odkaz na NuGet balíček do svého `.csproj`, aby build nikdy nezapomněl na tuto závislost. + +```xml + + + +``` + +## Krok 1: Načtěte PDF, které chcete komprimovat + +Nejprve potřebujeme objekt `Document`, který ukazuje na zdrojový soubor. Představte si to jako otevření knihy před tím, než začnete upravovat kapitoly. + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*Proč je to důležité:* Načtení souboru dává Aspose.Pdf možnost přečíst všechny vložené zdroje (obrázky, fonty atd.). Bez tohoto kroku není co **zmenšit velikost pdf souboru**. + +## Krok 2: Použijte bezeztrátovou kompresi PDF + +Aspose.Pdf obsahuje metodu `Optimize`, která ve výchozím nastavení spouští **bezeztrátovou kompresi pdf**. Odstraňuje nadbytečné objekty, znovu komprimuje obrázky při zachování vizuální kvality a odstraňuje nepoužívané fonty. + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*Proč je to důležité:* Výchozí optimalizátor je navržen tak, aby **zmenšil velikost pdf souboru** a přitom zachoval každý pixel. Pokud později rozhodnete, že můžete tolerovat mírný pokles kvality, odkomentovaná část `OptimizationOptions` vám umožní vyměnit pár kilobajtů za rychlost. + +## Krok 3: Uložte optimalizovaný PDF + +Nyní, když je dokument štíhlejší, zapíšeme jej do nového souboru. Zachovat originál nedotčený je dobrý zvyk, zejména když testujete různá nastavení. + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +Po uložení porovnejte velikosti souborů: + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +Měli byste vidět výrazný pokles — často **30‑70 %** v závislosti na tom, kolik vysoce rozlišených obrázků bylo ve zdroji. + +![ilustrace jak komprimovat pdf](image.png "jak komprimovat pdf") + +*Alternativní text obrázku:* jak komprimovat pdf – před a po optimalizaci + +## Pokročilé: Ladění komprese pro specifické scénáře + +Zatímco výchozí optimalizátor je skvělý pro většinu případů, někdy potřebujete **zmenšit velikost pdf souboru** ještě více: + +| Scénář | Nastavení k úpravě | Efekt | +|----------|-------------------|--------| +| PDF s mnoha rastrovými obrázky | `CompressImages = true` + nižší `ImageQuality` (např. 70) | Sníží počet bajtů obrázku, mírná ztráta vizuální kvality. | +| PDF obsahující duplicitní fonty | `RemoveUnusedObjects = true` | Odstraní fonty, které nejsou odkazovány. | +| PDF s velkými metadaty | `RemoveMetadata = true` | Vyjme skryté XML/metadatové bloky. | + +Tyto volby můžete zkombinovat v objektu `OptimizationOptions` a předat jej metodě `pdfDoc.Optimize(options)`. + +## Často kladené otázky a okrajové případy + +**Co když je PDF už optimalizované?** +Aspose.Pdf stále dokument prohledá, ale změna velikosti bude minimální. Spuštění optimalizátoru na již štíhlém souboru je bezpečné; nic nepoškodí. + +**Mohu komprimovat šifrované PDF?** +Ano, ale před voláním `Optimize` musíte zadat heslo. Příklad: + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**Co s PDF obsahujícími vektorovou grafiku?** +Vektorové objekty jsou už od přírody lehké, takže optimalizátor se soustředí na rastrové obrázky a metadata. Očekávejte skromné úspory u souborů, které jsou čistě vektorové. + +## Kompletní, spustitelný příklad + +Níže je samostatná konzolová aplikace, kterou můžete zkopírovat do nového `.csproj`. Ukazuje vše, o čem jsme mluvili — od načtení po ověření. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +Spusťte program, otevřete `Optimized.pdf` v libovolném prohlížeči a uvidíte stejný rozvržení stránky, stejné ostré obrázky, ale menší soubor. To je kouzlo **bezeztrátové komprese pdf**. + +## Závěr + +Probrali jsme **jak komprimovat pdf** soubory pomocí vestavěného optimalizátoru Aspose.Pdf, představili praktický **workflow pro snížení velikosti pdf souboru** a vysvětlili důvody každého kroku. Dodržením tří‑krokového vzoru — načíst, optimalizovat, uložit — můžete **zmenšit velikost pdf souboru** za běhu, udržet obrázky nedotčené díky **bezeztrátové kompresi pdf** a sebejistě **uložit optimalizovaný pdf** pro další spotřebu. + +Jste připraveni na další výzvu? Zkuste tento optimalizátor propojit s dávkovým skriptem, který zpracuje celý adresář, nebo experimentujte s volitelným `OptimizationOptions`, abyste vytlačili poslední kilobajty. Stejné principy platí, ať už pracujete na desktopovém nástroji, webovém API nebo serverové dávce. + +Máte další otázky ohledně práce s PDF, zvláštností Aspose.Pdf nebo .NET I/O? Zanechte komentář níže a pojďme konverzaci posunout dál. Šťastné komprimování! + +{{< /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/programming-with-security-and-signatures/_index.md b/pdf/czech/net/programming-with-security-and-signatures/_index.md index 88545748d..8bb2c2fb3 100644 --- a/pdf/czech/net/programming-with-security-and-signatures/_index.md +++ b/pdf/czech/net/programming-with-security-and-signatures/_index.md @@ -34,6 +34,8 @@ Tento tutoriál vám poskytne podrobný přehled metod a technik pro zajištěn | [Podepsat pomocí čipové karty s použitím podpisu v souboru PDF](./sign-with-smart-card-using-pdf-file-signature/) | Naučte se, jak podepisovat soubory PDF pomocí čipové karty s Aspose.PDF pro .NET. Postupujte podle tohoto podrobného návodu pro zabezpečené digitální podpisy. | | [Podepisujte pomocí čipové karty s použitím pole pro podpis](./sign-with-smart-card-using-signature-field/) | Naučte se, jak bezpečně podepisovat PDF soubory pomocí čipové karty s Aspose.PDF pro .NET. Pro snadnou implementaci postupujte podle našeho podrobného návodu. | | [Kontrola podpisů PDF v C# – Jak číst podepsané PDF soubory](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) | Naučte se, jak v C# číst a ověřovat digitální podpisy v PDF souborech pomocí Aspose.PDF pro .NET. | +| [Jak ověřit podpis v PDF pomocí C# – Kompletní průvodce Aspose](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) | Naučte se, jak ověřit digitální podpisy v PDF pomocí C# s kompletním návodem Aspose. | +| [Přidat digitální podpis PDF v C# – Kompletní průvodce krok za krokem](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) | Naučte se, jak v C# přidat digitální podpis do PDF souboru pomocí Aspose.PDF krok za krokem. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/czech/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/czech/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..757b86921 --- /dev/null +++ b/pdf/czech/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-03-06 +description: Přidejte digitální podpis PDF pomocí Aspose.PDF. Naučte se vytvořit oddělený + podpis PKCS7 a podepsat PDF pomocí souboru PFX s vlastním zpětným voláním. +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: cs +og_description: Rychle přidejte digitální podpis do PDF. Tento návod ukazuje, jak + vytvořit oddělený podpis pkcs7 a podepsat PDF pomocí pfx v C#. +og_title: Přidání digitálního podpisu PDF v C# – Kompletní programovací tutoriál +tags: +- Aspose.PDF +- C# +- Digital Signature +title: Přidání digitálního podpisu do PDF v C# – Kompletní průvodce krok za krokem +url: /cs/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Přidání digitálního podpisu PDF – Kompletní průvodce krok za krokem + +Už jste někdy potřebovali **add digital signature pdf** soubory, ale nevedeli jste, kde začít? Nejste sami; mnoho vývojářů narazí na stejnou překážku, když papírování vyžaduje právně závazný podpis a kódová základna umí jen generovat obyčejné PDF. + +V tomto tutoriálu vás provedeme praktickým řešením, které vám umožní **add digital signature pdf** dokumenty pomocí Aspose.PDF pro .NET, vytvořit oddělený podpis PKCS#7 a podepsat PDF certifikátem PFX – vše v čistém C#. Na konci budete mít připravený úryvek k okamžitému spuštění, pochopíte „proč“ za každým voláním a budete vědět, jak přizpůsobit přístup pro okrajové případy. + +## Co se naučíte + +- Jak načíst nepodepsaný PDF a připravit jej k podepsání. +- Mechanika **create pkcs7 detached signature** a proč můžete upřednostnit oddělený před vloženým. +- Přesné kroky k **sign pdf using pfx** s vlastním callbackem, který vám dává plnou kontrolu nad kryptografickým procesem. +- Tipy pro odstraňování běžných problémů (chybějící certifikát, špatný hash algoritmus, atd.). + +### Požadavky + +| Požadavek | Důvod | +|-------------|--------| +| .NET 6.0 nebo novější | Moderní jazykové funkce a lepší správa paměti. | +| Aspose.PDF pro .NET (NuGet balíček) | Poskytuje `PdfFileSignature`, `PKCS7Detached` a další PDF utility. | +| Platný PFX soubor (`.pfx`) s privátním klíčem | Potřebný pro krok **sign pdf using pfx**. | +| Základní znalost C# | Kód je přímočarý, ale pochopení `using` příkazů pomáhá. | + +> **Tip:** Uchovávejte heslo k PFX mimo zdrojový kód – používejte proměnné prostředí nebo Azure Key Vault pro produkci. + +--- + +## Jak přidat digitální podpis PDF pomocí Aspose.PDF + +Níže rozdělujeme proces do pěti stravitelných kroků. Každý krok obsahuje úryvek kódu, vysvětlení *proč* je důležitý, a rychlou kontrolu. + +![Snímek obrazovky podepsaného PDF ve vieweru, zobrazující viditelné pole podpisu](/images/add-digital-signature-pdf.png "příklad add digital signature pdf") + +### Krok 1 – Načtení nepodepsaného PDF dokumentu + +Nejprve potřebujeme objekt `Document`, který představuje PDF, které chcete podepsat. Použití `using var` zajišťuje automatické uvolnění souborového handle. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**Proč?** +Aspose zachází s PDF jako s objektovým grafem; jeho načtení vám poskytuje přístup k stránkám, anotacím a internímu bytovému proudu, který bude později hashován pro podpis. + +### Krok 2 – Inicializace pomocníka PdfFileSignature + +`PdfFileSignature` je třída, která skutečně aplikuje kryptografický obal. Pracuje ruku v ruce s `PKCS7Detached`. + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**Proč?** +Oddělení podepisujícího od dokumentu vám umožňuje znovu použít stejnou instanci `Document` pro jiné operace (např. přidání vodoznaků) před finálním podpisem. + +### Krok 3 – Vytvoření odděleného podpisu PKCS#7 (Create PKCS7 Detached Signature) + +A **PKCS#7 detached signature** ukládá pouze hash PDF, nikoli samotné PDF. To je ideální pro velké dokumenty nebo když potřebujete zachovat původní soubor beze změny. + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**Proč vlastní callback?** +Někdy je podepisovací klíč uložen v HSM nebo Azure Key Vault a nemůžete přímo získat privátní klíč. Poskytnutím `CustomSignHash` předáte hash službě, která klíč drží, a tím udržíte soukromý materiál v bezpečí. + +**Co když nepotřebujete vlastní callback?** +Můžete vynechat `CustomSignHash`; Aspose automaticky použije privátní klíč uvnitř PFX. Přesto je vlastní cesta flexibilnější a lépe vyhovuje požadavkům na shodu. + +### Krok 4 – Aplikace podpisu na konkrétní stránku (Sign PDF Using PFX) + +Nyní skutečně umístíme viditelné pole podpisu na stránku. Obdélník určuje umístění a velikost (v bodech). + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**Proč specifikovat obdélník?** +Viditelný podpis pomáhá koncovým uživatelům vidět, že dokument je podepsán. Pokud nastavíte `isVisible` na `false`, podpis se stane neviditelným – stále platný, ale těžší k objevení. + +**Okrajový případ:** Pokud PDF nemá žádné stránky (prázdný soubor), volání vyhodí `ArgumentOutOfRangeException`. Vždy před podpisem ověřte `pdfDocument.Pages.Count > 0`. + +### Krok 5 – Uložení podepsaného PDF + +Nakonec uložte podepsaný dokument na disk. Můžete jej také streamovat přímo do odpovědi v ASP.NET Core. + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**Tip pro ověření:** Otevřete výsledný soubor v Adobe Acrobat Reader. Panel podpisů by měl zobrazovat zelenou fajfku (pokud je certifikát na stroji důvěryhodný). + +--- + +## Kompletní funkční příklad + +Spojením všeho dohromady získáte samostatný konzolový program, který můžete zkopírovat a spustit (po úpravě cest a hesel). + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**Očekávaný výstup:** Konzole vypíše “✅ PDF signed successfully!” a soubor `CustomSigned.pdf` se objeví ve stejné složce. Po otevření uvidíte widget podpisu na souřadnicích (100,100)-(300,200). + +## Často kladené otázky a okrajové případy + +### Co když je můj PFX chráněn smart kartou? + +Použijte delegáta `CustomSignHash` k předání hashe ovladači smart‑card. Ovladač vrátí bajty podpisu a Aspose je vloží, aniž by kdykoli odhalil privátní klíč. + +### Můžu podepsat více stránek najednou? + +Ano. Zavolejte `pdfSigner.Sign` uvnitř smyčky, upravující `pageNumber` a případně obdélník pro každou stránku. Pamatujte, že každé volání přidá samostatný objekt podpisu; některé prohlížeče je mohou zobrazovat jednotlivě. + +### Jak změnit hash algoritmus? + +`PKCS7Detached` defaultně používá SHA‑256, ale můžete nastavit vlastnost `HashAlgorithm`: + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +Ujistěte se, že váš poskytovatel podpisu podporuje zvolený algoritmus. + +### Co když řetězec certifikátů není na klientském počítači důvěryhodný? + +Zahrňte celý řetězec do PFX, nebo distribuujte kořenový certifikát do úložiště důvěry koncového uživatele. Jinak Acrobat zobrazí „Signature is unknown“. + +### Je oddělený podpis kompatibilní s PDF/A‑3? + +PDF/A‑3 vyžaduje vložené podpisy, takže oddělený PKCS#7 nemusí být v souladu. V takovém případě vynechte delegáta `CustomSignHash` a nechte Aspose provést podpis interně, což vytvoří vložený podpis. + +## Nejlepší postupy pro produkci + +1. **Nikdy nezakódujte hesla přímo v kódu.** Získejte je z proměnných prostředí nebo správce tajemství. +2. **Ověřte PDF před podpisem.** Poškozené soubory způsobí `PdfFileSignatureException`. +3. **Zaznamenejte hash algoritmus a otisk certifikátu** pro auditní záznamy. +4. **Testujte s více PDF prohlížeči** (Adobe Reader, Foxit, Chrome), aby podpis vypadal podle očekávání. +5. **Zvažte časové razítkování** přidáním požadavku na TSA (Time‑Stamp Authority), což dále posiluje právní platnost podpisu. + +## Závěr + +Právě jsme vám ukázali, jak **add digital signature pdf** soubory pomocí Aspose.PDF, vytvořit **PKCS#7 detached signature** a **sign pdf using pfx** s vlastním callbackem. Kompletní příklad funguje ihned po spuštění a vysvětlení vám dávají jistotu upravit proces pro HSM, služby časových razítek nebo shodu s PDF/A. + +Dále můžete zkoumat **signing multiple documents in batch**, integraci **Azure Key Vault** pro bezpečné úložiště klíčů, nebo přidání **visual customization** do vzhledu podpisu. Každé z těchto témat staví přímo na zde položeném základu. + +Pokud jste prošli kroky, máte nyní solidní, citovatelně hodnotné řešení, které můžete sdílet s kolegy – nebo dokonce citovat v odpovědi AI‑asistenta. Šťastné podepisování a neváhejte zanechat komentář, pokud něco není naprosto jasné! + +{{< /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/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/czech/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..6de383157 --- /dev/null +++ b/pdf/czech/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,199 @@ +--- +category: general +date: 2026-03-06 +description: Naučte se, jak ověřit podpis v PDF pomocí Aspose PDF v C#. Krok za krokem + ověřování podpisu PDF, validace podpisu PDF a zacházení s kompromitovanými podpisy. +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: cs +og_description: Jak ověřit podpis v PDF pomocí Aspose PDF. Postupujte podle tohoto + průvodce k provedení ověření podpisu v PDF, validaci podpisu PDF a detekci kompromitovaných + podpisů v C#. +og_title: Jak ověřit podpis v PDF pomocí C# – Kompletní průvodce Aspose +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: Jak ověřit podpis v PDF pomocí C# – Kompletní průvodce Aspose +url: /cs/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak ověřit podpis v PDF pomocí C# – Kompletní průvodce Aspose + +Už jste se někdy zamysleli nad **tím, jak ověřit podpis** v PDF, aniž byste si trhali vlasy? Nejste sami. Mnoho vývojářů narazí na problém, když potřebují **ověření podpisu PDF** z důvodu souladu nebo auditu, a běžný přístup „prostě důvěřovat knihovně“ může mít opačný efekt. + +V tomto tutoriálu projdeme praktické, end‑to‑end řešení, které nejen **validuje pdf signature**, ale také vám řekne, zda byl podpis pozměněn. Použijeme knihovnu **Aspose PDF**, což znamená, že kód funguje na .NET 6+, .NET Framework 4.6+ i .NET Core. Na konci budete mít připravený útržek kódu, který můžete vložit do libovolného C# projektu. + +## Co budete potřebovat + +- **Aspose.Pdf** NuGet balíček (nejnovější verze v době psaní – 23.12). +- .NET vývojové prostředí (Visual Studio, Rider nebo VS Code). +- Podepsaný PDF soubor (budeme jej nazývat `Signed.pdf`). +- Základní znalost C# – nic složitého, jen běžné `using` příkazy a vstup/výstup přes `Console`. + +To je vše. Žádné další služby, žádné skryté konfigurační soubory. Připravení? Ponořme se do toho. + +![diagram ověření podpisu](image.png "ověření podpisu") + +## Krok 1: Nastavte svůj projekt pro ověření podpisu PDF + +Než budete moci volat jakékoli Aspose API, musíte odkazovat na knihovnu. Otevřete terminál nebo Package Manager Console a spusťte: + +```bash +dotnet add package Aspose.Pdf +``` + +Nebo, pokud dáváte přednost UI, vyhledejte **Aspose.Pdf** v NuGet Package Manager a nainstalujte jej. Tento krok je zásadní, protože bez sestavení **aspose pdf signature** nebudete moci později přistupovat ke třídě `PdfFileSignature`. + +> **Pro tip:** Cílová verze .NET 6 nebo vyšší poskytne nejlepší výkon a vyhne se varováním o kompatibilitě se staršími verzemi. + +## Krok 2: Načtěte PDF dokument + +Nyní, když je balíček nainstalován, můžeme načíst PDF, které chceme zkontrolovat. Třída `Document` představuje celý soubor v paměti. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**Proč je to důležité:** Načtení dokumentu nám poskytuje přístup k jeho vnitřním strukturám, včetně polí podpisu. Pokud soubor chybí nebo je poškozený, `Document` vyhodí výjimku, kterou můžete zachytit a poskytnout tak uživateli přívětivější zážitek. + +## Krok 3: Vytvořte objekt Aspose PdfFileSignature + +S dokumentem v ruce je dalším krokem vytvořit instanci `PdfFileSignature`. Tato fasádní třída umí číst, ověřovat a manipulovat s digitálními podpisy vloženými do PDF. + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**Vysvětlení:** Konstruktor `PdfFileSignature` přijímá načtený `Document`. Interně parsuje slovník podpisu, což zpřístupňuje metody jako `VerifySignature` a `IsSignatureCompromised`. + +## Krok 4: Ověřte integritu podpisu + +Jádrem **pdf signature verification** je metoda `VerifySignature`. Vrací `true`, pokud kryptografický hash odpovídá uložené hodnotě a řetězec certifikátů je důvěryhodný (za předpokladu, že jste nastavili trust manager, což zde vynecháme). + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +Pokud máte více podpisů, stačí změnit index (`0`, `1`, …). Metoda kontroluje jak integritu, tak důvěru najednou, což z ní dělá preferovanou volbu pro většinu scénářů. + +## Krok 5: Detekujte poškozený podpis + +I „platný“ podpis může být poškozený, pokud byl dokument po podepsání změněn. Aspose nám poskytuje `IsSignatureCompromised` k detekci tohoto jemného případu. + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**Kdy jej použít:** Představte si, že PDF je podepsáno, poté uživatel přidá komentář nebo změní stránku. Hash se liší a `IsSignatureCompromised` vrátí `true`, zatímco `VerifySignature` může stále být `true`, pokud je certifikát v pořádku. Kontrola obou příznaků vám poskytne kompletní obrázek. + +## Krok 6: Interpretujte výsledky + +Nyní máme dvě booleovské hodnoty: `isSignatureValid` a `isSignatureCompromised`. Převedeme je na přátelský výstup v konzoli. + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### Očekávaný výstup + +| Scénář | Výstup v konzoli | +|----------------------------------------|---------------------------------| +| Platný a nepoškozený | `Signature OK` | +| Platný, ale poškozený (dokument změněn) | `Signature compromised!` | +| Neplatný (certifikát není důvěryhodný, nesoulad hash) | `Signature verification failed` | + +Tato tabulka vám pomůže rychle přiřadit boolean výsledky k lidsky čitelným zprávám. + +## Kompletní funkční příklad + +Sestavte vše dohromady, zde je kompletní, připravený program: + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +Zkopírujte, vložte, upravte `pdfPath` a spusťte. Pokud je vše nastaveno správně, uvidíte jednu ze tří výše uvedených zpráv. + +## Časté problémy a tipy pro ověření podpisu PDF + +| Problém | Proč se vyskytuje | Jak opravit / vyhnout se | +|---------|-------------------|--------------------------| +| **Chybějící licence Aspose** | Bezplatná zkušební verze přidává vodoznak a může omezovat některé API volání. | Zaregistrujte licenci (`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`). | +| **Více podpisů, ale špatný index** | Můžete kontrolovat nesprávný podpis, což vede k falešným negativům. | Procházejte `signatureVerifier.GetSignatureCount()` a kontrolujte každý. | +| **Řetězec certifikátů není důvěryhodný** | `VerifySignature` selže, pokud kořenová CA není v důvěryhodném úložišti. | Přidejte podepisující CA do Windows Trusted Root úložiště nebo nakonfigurujte vlastní `CertificateValidator`. | +| **Soubor uzamčen jiným procesem** | Otevření PDF, které je stále otevřeno jinde, může vyvolat `IOException`. | Použijte `FileStream` s `FileShare.ReadWrite` nebo nejprve zkopírujte do dočasného souboru. | +| **Nesprávná cesta k PDF** | Jednoduchá překlep vede k `FileNotFoundException`. | Ověřte cestu pomocí `File.Exists(pdfPath)` před načtením. | + +### Okrajové případy, na které můžete narazit + +- **Odpojené podpisy**: Některé PDF ukládají podpisy externě. `PdfFileSignature` od Aspose v současnosti podporuje jen vložené podpisy. +- **Časově razítkované podpisy**: Pokud potřebujete ověřit autoritu časového razítka (TSA), musíte zavolat `VerifySignature` s vlastním objektem `VerificationOptions` – mimo rozsah tohoto rychlého průvodce, ale stojí za zmínku u projektů s vysokými požadavky na soulad. + +## Další kroky – rozšíření vaší validační logiky + +Nyní, když ovládáte základy **jak ověřit podpis**, můžete: + +1. **Validovat PDF podpis** proti seznamu důvěryhodných certifikátů (např. firemní PKI). +2. **Exportovat podrobnosti o podpisu** (jméno podepisujícího, čas podpisu, otisk certifikátu) pomocí `GetSignatureInfo`. +3. **Zpracovat hromadně více PDF** ve složce, zaznamenávat výsledky do CSV pro auditní účely. + +Všechny tyto možnosti jsou jednoduchými rozšířeními kódu, který jsme právě probrali, a zůstávají v ekosystému **aspose pdf signature**. + +--- + +**Stručně řečeno**, nyní přesně víte **jak ověřit podpis** v PDF pomocí C# a Aspose, jak detekovat poškozený podpis a co dělat, když ověření selže. Přístup je robustní, funguje s více podpisy a lze jej integrovat do větších pipeline pro zpracování dokumentů. + +Máte jiný scénář? Možná potřebujete podepisovat PDF místo ověřování, nebo pracujete s šifrovanými PDF. Zanechte komentář a prozkoumáme tyto možnosti společně. Šťastné programování! + +{{< /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/programming-with-stamps-and-watermarks/_index.md b/pdf/czech/net/programming-with-stamps-and-watermarks/_index.md index ee21de8c5..c6e7fc933 100644 --- a/pdf/czech/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/czech/net/programming-with-stamps-and-watermarks/_index.md @@ -39,6 +39,7 @@ Výukové programy „Programování s razítky a vodoznaky“ pro .NET od Aspos | [Tabulka v sekci záhlaví a zápatí](./table-in-header-footer-section/) | Naučte se, jak snadno přidat text do zápatí PDF souboru pomocí Aspose.PDF pro .NET. Součástí je podrobný návod pro bezproblémovou integraci. | | [Text v zápatí PDF souboru](./text-in-footer/) | Naučte se, jak přidat text do zápatí PDF souboru pomocí Aspose.PDF pro .NET. | | [Text v záhlaví PDF souboru](./text-in-header/) | Naučte se přidávat textové záhlaví do PDF souborů pomocí Aspose.PDF pro .NET s tímto podrobným návodem. Vylepšete své dokumenty efektivně a účinně. | +| [Vytvořit PDF dokument s Batesovým číslováním v C# – Kompletní průvodce](./create-pdf-document-with-bates-numbering-in-c-full-guide/) Naučte se, jak vytvořit PDF dokument s Batesovým číslováním pomocí Aspose.PDF pro .NET v C# s podrobným návodem. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/czech/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/czech/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..b0965cd2a --- /dev/null +++ b/pdf/czech/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,182 @@ +--- +category: general +date: 2026-03-06 +description: Vytvořte PDF dokument v C# a snadno přidejte Batesovo číslování. Naučte + se, jak přidat prázdnou stránku do PDF, umístit razítko na stránku a implementovat + Batesovo číslování. +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: cs +og_description: Vytvořte PDF dokument v C# a přidejte Batesovo číslování. Tento průvodce + ukazuje, jak přidat prázdnou stránku PDF, umístit razítko na stránku a aplikovat + Batesovo číslování. +og_title: Vytvořte PDF dokument s Batesovým číslováním – C# tutoriál +tags: +- Aspose.Pdf +- C# +- PDF automation +title: Vytvořte PDF dokument s Batesovým číslováním v C# – Kompletní průvodce +url: /cs/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Vytvoření PDF dokumentu s Bates číslováním v C# + +Už jste někdy potřebovali **create PDF document** v C# a přemýšleli, jak přidat Bates číslo, aniž byste si trhali vlasy? Nejste v tom sami — advokátní kanceláře, soudy i některé týmy pro firemní soulad čelí tomuto problému každý den. Dobrá zpráva? S několika řádky kódu Aspose.Pdf můžete vytvořit zcela nový PDF, přidat prázdnou stránku a otisknout správné Bates číslo v jednom plynulém postupu. + +V tomto tutoriálu projdeme celý proces: od nastavení projektu, přes přidání prázdné stránky PDF, až po zjištění **how to add bates numbering**, a nakonec **place stamp on page** a uložení výsledku. Na konci budete mít připravený úryvek, který můžete vložit do jakékoli .NET aplikace. Žádné vágní odkazy, jen kompletní, spustitelný příklad. + +## Co budete potřebovat + +- **.NET 6+** (nebo .NET Framework 4.6+ — Aspose.Pdf funguje s oběma) +- **Aspose.Pdf for .NET** NuGet balíček (`Install-Package Aspose.Pdf`) +- Slušné IDE (Visual Studio, Rider nebo VS Code s rozšířením C#) + +To je vše. Žádné extra DLL, žádné externí služby. Ponořme se. + +## Krok 1: Vytvoření PDF dokumentu — Počáteční nastavení + +Nejprve potřebujeme čerstvý objekt `Document`. Představte si ho jako prázdné plátno, na kterém bude vše ostatní. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **Proč je to důležité:** Třída `Document` je vstupním bodem pro každou operaci Aspose. Její vytvoření vám poskytne přístup ke kolekci `Pages`, metadatům a bezpečnostním nastavením — všechny stavební bloky pro profesionální PDF. + +## Krok 2: Přidání prázdné stránky PDF + +PDF bez stránek je jako kniha bez listů — docela k ničemu. Přidání prázdné stránky je jednoduché a poskytne nám plochu, na kterou můžeme otisknout Bates číslo. + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **Tip:** Pokud potřebujete více stránek, stačí v cyklu volat `pdfDocument.Pages.Add()`. Každé volání vrátí nový objekt `Page`, který můžete nezávisle přizpůsobit. + +## Krok 3: Jak přidat Bates číslování — Vytvoření TextStamp + +Nyní přichází jádro záležitosti: **Bates number**. V Aspose.Pdf je to jen `TextStamp` se speciálním příznakem artifact. + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **Proč nastavujeme `Artifact`**: Některé PDF čtečky zobrazují Bates čísla jako prohledávatelná metadata. Označením razítka jako `BatesNumbering` artifact zajistíme, že následné nástroje jej automaticky rozpoznají. + +## Krok 4: Umístění razítka na stránku + +S připraveným razítkem nyní **place stamp on page**. Toto je krok, kde se vizuální číslo skutečně objeví v PDF. + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **Hraniční případ:** Pokud potřebujete, aby se číslo zvyšovalo na každé stránce, projdete `pdfDocument.Pages` v cyklu a před voláním `AddStamp` aktualizujete `batesStamp.Value`. V tomto příkladu je to zjednodušené statickým „Bates‑001“. + +## Krok 5: Uložení a ověření výsledku + +Nakonec PDF uložíme na disk. Vyberte složku, do které máte právo zápisu; jinak narazíte na `UnauthorizedAccessException`. + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +Když otevřete `BatesStamped.pdf` v libovolném prohlížeči, měli byste vidět drobné „Bates‑001“ umístěné úhledně v pravém dolním rohu prázdné stránky. + +> **Očekávaný výstup:** +> ![PDF s Bates číslem](image-placeholder.png "PDF s Bates číslem") +> *Alternativní text: PDF s Bates číslem v pravém dolním rohu.* + +Pokud se číslo nezobrazuje, zkontrolujte hodnoty okrajů a ujistěte se, že velikost stránky není příliš malá (výchozí A4 funguje dobře). Také ověřte, že příznak `Artifact` není odstraňován žádnými nástroji pro následné zpracování. + +## Kompletní funkční příklad + +Níže je kompletní program připravený ke zkopírování a vložení. Obsahuje všechny `using` direktivy a komentáře, aby vás udržel v orientaci. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +Spusťte program, otevřete PDF a uvidíte Bates číslo přesně tam, kam jsme ho umístili. 🎉 + +## Běžné varianty a úskalí + +| Scénář | Co změnit | Proč | +|----------|----------------|-----| +| **Více stránek, inkrementální čísla** | Projít `pdfDocument.Pages` v cyklu, nastavit `batesStamp.Value = $"Bates-{i:D3}"` před `AddStamp` | Dává každé stránce jedinečný identifikátor, typické pro právní svazky | +| **Jiné umístění (nahoře vlevo)** | Změnit `HorizontalAlignment = HorizontalAlignment.Left` a `VerticalAlignment = VerticalAlignment.Top` | Některé organizace upřednostňují číslo v hlavičce místo v patičce | +| **Vlastní font nebo barva** | Nastavit `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` | Zlepšuje čitelnost nebo splňuje brandingové směrnice | +| **Přidání existujícího PDF jako pozadí** | Načíst zdrojové PDF pomocí `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` | Užitečné, když potřebujete razítko na předem vygenerovaném formuláři | + +## Závěr + +Právě jsme ukázali, jak **create PDF document**, **add blank page pdf** a **add bates number** pomocí Aspose.Pdf pro .NET, poté **place stamp on page** a uložit soubor. Kód je úmyslně stručný, aby ho šlo přizpůsobit větším pracovním postupům — ať už zpracováváte desítky souborů najednou nebo jej integrujete do webové služby. + +- Automatizace logiky inkrementace pro velké spisy. +- Vložení generování PDF do ASP.NET Core API. +- Přidání zabezpečení (ochrana heslem) pomocí `pdfDocument.Encrypt(...)`. + +Neváhejte experimentovat, zkoušet nové věci a klást otázky v komentářích. Šťastné programování a ať jsou vaše PDF vždy perfektně razítkovaná! + +{{< /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/programming-with-tagged-pdf/_index.md b/pdf/czech/net/programming-with-tagged-pdf/_index.md index 81622a6da..432393675 100644 --- a/pdf/czech/net/programming-with-tagged-pdf/_index.md +++ b/pdf/czech/net/programming-with-tagged-pdf/_index.md @@ -45,6 +45,7 @@ Výukové programy „Programování s tagovanými PDF“ v knihovně Aspose.PDF | [Prvky textové struktury v souboru PDF](./text-structure-elements/) Naučte se manipulovat s prvky textové struktury v PDF pomocí Aspose.PDF pro .NET. Tato podrobná příručka zahrnuje vše, co potřebujete k vytvoření strukturovaných PDF. | | [Ověřit PDF soubor](./validate-pdf/) | Naučte se, jak ověřit soubor PDF pomocí Aspose.PDF pro .NET. Zkontrolujte jeho soulad se standardy a vygenerujte ověřovací zprávu. | | [Vytvořit tagovaný PDF v C# – Kompletní průvodce krok za krokem](./create-tagged-pdf-in-c-complete-step-by-step-guide/) | Naučte se, jak pomocí Aspose.PDF pro .NET vytvořit tagovaný PDF soubor v C# pomocí podrobného krok‑za‑krokem návodu. | +| [Vytvořit tagovaný PDF v C# – Průvodce krok za krokem](./create-tagged-pdf-in-c-step-by-step-guide/) | Naučte se vytvořit tagovaný PDF v C# pomocí Aspose.PDF pro .NET v podrobném průvodci krok za krokem. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/czech/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/czech/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..d87fa8f80 --- /dev/null +++ b/pdf/czech/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-03-06 +description: Vytvořte označený PDF pomocí Aspose.Pdf v C#. Naučte se, jak přidat obrázek + do PDF, nastavit pozici obrázku a označit PDF pro přístupnost. +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: cs +og_description: Vytvořte označený PDF pomocí Aspose.Pdf. Tento průvodce ukazuje, jak + přidat obrázek do PDF, nastavit pozici obrázku a označit PDF pro přístupnost. +og_title: Vytvoření tagovaného PDF v C# – Kompletní tutoriál +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: Vytvoření označeného PDF v C# – krok za krokem +url: /cs/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Vytvoření označeného PDF v C# – Kompletní tutoriál + +Už jste někdy potřebovali **vytvořit označené PDF** v C#, ale nevedeli jste, kde začít? Nejste sami; přístupnost je dnes nutností a označené PDF je páteří dokumentu splňujícího požadavky. V tomto tutoriálu projdeme reálný příklad, který **přidá obrázek do PDF**, nastaví pozici figure a ukáže **jak označit PDF** pomocí Aspose.Pdf. Na konci budete mít plně označené PDF, které můžete poslat komukoli. + +Probereme vše od načtení existujícího souboru až po uložení finálního výstupu, takže nebudete muset hledat „jak přidat obrázek“ jinde. Žádné zbytečnosti – jen jasné, spustitelné řešení, které funguje s Aspose.Pdf 23.8 (nejnovější verze v době psaní). Vezměte si IDE a pojďme na to. + +--- + +## Co budete potřebovat + +- **Aspose.Pdf for .NET** (NuGet balíček `Aspose.Pdf`). +- .NET 6+ (nebo .NET Framework 4.7.2+). +- Vstupní PDF, který již má logickou strukturu (tj. je již označen) – pokud ne, můžete povolit označování pomocí `pdfDocument.TaggedContent = true`. +- Soubor s obrázkem (`image.png`), který chcete vložit. + +To je vše. Žádné další knihovny, žádné nejasné konfigurační soubory. + +--- + +## Krok 1: Načtení existujícího PDF dokumentu (Vytvoření základny označeného PDF) + +První věc, kterou uděláme, je otevřít PDF, které chceme vylepšit. Načtení souboru nám poskytne přístup k jeho logické struktuře, což je nezbytné pro **vytvoření označeného pdf** workflow. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*Proč je to důležité:* Bez stromu značek PDF nebude předávat strukturální informace čtečkám obrazovky. Povolení označování zajišťuje, že jakékoli nové prvky, které přidáme (např. figure), zdědí správnou hierarchii. + +--- + +## Krok 2: Přístup k kořenu logické struktury (Jak označit PDF) + +Nyní se ponoříme do logické struktury PDF. Kořenový prvek je kontejner pro všechny značky – představte si ho jako osnovu dokumentu. + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*Vysvětlení:* `logicalRoot` nám umožňuje připojit nové značky jako `
` nebo `
`. To je jádro **jak označit PDF** programově. + +--- + +## Krok 3: Vytvoření značky Figure a nastavení její pozice (Nastavení pozice Figure) + +Značka *Figure* seskupuje vizuální obsah s volitelným popiskem. Vytvoříme ji, nastavíme její pozici a připojíme ke kořenu. + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*Proč nastavujeme pozici:* Krok **nastavení pozice figure** určuje, kde se vizuální prvek objeví na stránce. Pokud to přeskočíte, figure se může objevit na neočekávaném místě nebo být neviditelná pro asistivní technologie. + +--- + +## Krok 4: Přidání vizuální reprezentace – vložení obrázku (Přidání obrázku do PDF) + +Po vytvoření značky potřebujeme skutečný obrázek. To je část, která odpovídá na **přidat obrázek do pdf**. + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*Klíčový bod:* Souřadnice obdélníku musí odpovídat `figureTag.Position`, kterou jsme definovali dříve; jinak budou figure a její vizuální obsah nesynchronizované, což naruší přístupnost. + +--- + +## Krok 5: Uložení aktualizovaného PDF (Dokončení vytváření označeného PDF) + +Nakonec změny uložíme do nového souboru. Zachovat originál nedotčený je dobrá praxe. + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +V tomto okamžiku máte **vytvořený označený pdf** soubor, který obsahuje správně umístěný obrázek zabalený do značky `
`. Otevřete `output.pdf` v Adobe Acrobat a zkontrolujte panel *Tags* – měli byste vidět uzel `Figure` pod kořenem. + +--- + +## Úplný, připravený k spuštění příklad + +Níže je kompletní program, který můžete zkopírovat a vložit do konzolové aplikace. Všechny kroky jsou již ve správném pořadí. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### Očekávaný výsledek + +- `output.pdf` se otevře s obrázkem zobrazeným na souřadnicích (100, 150) bodů, velikost 300 × 200 bodů. +- Panel *Tags* ukazuje element `Figure`, který obaluje obrázek. +- Nástroje pro čtení obrazovky oznamují „Figure“ před popisem obrázku, čímž splňují základní standardy přístupnosti. + +--- + +## Často kladené otázky a okrajové případy + +### Co když zdrojové PDF není již označené? + +Aspose.Pdf vám umožní zapnout označování nastavením `pdfDocument.TaggedContent.IsTagged = true;`. Knihovna vygeneruje výchozí strom značek, po kterém můžete přidávat vlastní značky, jak je ukázáno výše. + +### Mohu přidat popisek k figure? + +Ano. Po vytvoření `figureTag` můžete připojit `Paragraph` s `TextFragment` a nastavit jeho `Tag` na `Caption`. Příklad: + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### Jak umístit figure na jinou stránku? + +Nahraďte `var firstPage = pdfDocument.Pages[1];` požadovaným indexem stránky, např. `pdfDocument.Pages[3]`. Nezapomeňte upravit souřadnice `Position`, pokud se velikost stránky liší. + +### Co když potřebuji označit více obrázků? + +Vytvořte novou `Figure` pro každý obrázek, přiřaďte každé unikátní `Position` a přidejte odpovídající objekt `Image` na příslušnou stránku. Smyčka přes kolekci obrázků funguje výborně. + +### Funguje to s kompatibilitou PDF/A? + +Aspose.Pdf podporuje PDF/A‑1b, PDF/A‑2b a PDF/A‑3b. Při generování PDF/A dokumentu nezapomeňte nastavit režim kompatibility před uložením: + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +Logika označování zůstává stejná. + +--- + +## Profesionální tipy a úskalí + +- **Tip:** Vždy používejte absolutní cesty nebo `Path.Combine`, abyste se vyhnuli chybám „soubor nenalezen“ během běhu. +- **Dejte si pozor na:** Nesoulad souřadnic mezi značkou `Figure` a obdélníkem `Image` – asistivní technologie na tuto zarovnání spoléhají. +- **Poznámka o výkonu:** Pokud zpracováváte mnoho stránek, zabalte stream obrázku do bloku `using`, aby se prostředky uvolnily okamžitě. +- **Kontrola verze:** Ukázané API funguje s Aspose.Pdf 23.8+. Starší verze mohou mít mírně odlišné názvy tříd (např. `LogicalStructureElement` místo `FigureElement`). + +--- + +## Závěr + +Právě jsme **vytvořili označený pdf** od začátku až do konce, demonstrovali **přidání obrázku do pdf** a ukázali, jak **nastavit pozici figure**, zatímco jsme odpověděli na **jak označit pdf** a **jak přidat obrázek** v jednom koherentním příkladu. Kód je připravený ke spuštění, vysvětlení pokrývají „proč“ každého kroku a nyní máte solidní základ pro tvorbu přístupných PDF v C#. + +Jste připraveni na další výzvu? Zkuste přidat tabulky se značkami `
` nebo vložit vrstvu kompatibility PDF/A‑2b pro archivaci. Stejný vzor – načíst, přistoupit k logické struktuře, vytvořit značku, připojit vizuální obsah, uložit – platí pro většinu úkolů souvisejících s přístupností PDF. + +Pokud narazíte na problém nebo máte případ použití, který zde není pokryt, zanechte komentář níže. Šťastné označování a užívejte si tvorbu PDF, které může číst každý! + +![Diagram showing a PDF with a Figure tag and image – illustrates how to create tagged pdf](placeholder-image.png "příklad vytvoření označeného pdf") + +{{< /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/digital-signatures/_index.md b/pdf/dutch/net/digital-signatures/_index.md index a794c4030..6eff44ca3 100644 --- a/pdf/dutch/net/digital-signatures/_index.md +++ b/pdf/dutch/net/digital-signatures/_index.md @@ -26,6 +26,9 @@ Leer hoe u een PDF digitaal ondertekent met een aangepaste vormgeving met Aspose ### [Digitale handtekeninginformatie uit PDF's extraheren met Aspose.PDF](./extract-digital-signature-info-from-pdfs-aspose-pdf/) Een codetutorial voor Aspose.PDF Net +### [Hoe handtekeningen lezen in PDF met C# – Stapsgewijze handleiding](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +Leer hoe u digitale handtekeningen uit PDF‑bestanden kunt uitlezen met C# en Aspose.PDF voor .NET in een duidelijke stap‑voor‑stap gids. + ### [Hoe u de PDF-handtekeningtaal kunt wijzigen met Aspose.PDF voor .NET](./change-pdf-signature-language-aspose-net/) Leer hoe u de tekst van digitale handtekeningen in PDF's kunt aanpassen met Aspose.PDF voor .NET. Perfect voor het voorbereiden en lokaliseren van meertalige documenten. diff --git a/pdf/dutch/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/dutch/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..19d97f406 --- /dev/null +++ b/pdf/dutch/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-06 +description: Hoe handtekeningen in een PDF te lezen met C#. Leer hoe je een PDF‑document + laadt met C#, PDF‑handtekeningen opsomt en digitale handtekeningen in PDF snel en + betrouwbaar verkrijgt. +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: nl +og_description: Hoe handtekeningen in een PDF te lezen met C#. Deze gids laat zien + hoe je een PDF-document laadt met C#, PDF-handtekeningen opsomt en digitale handtekeningen + uit een PDF haalt in een paar eenvoudige stappen. +og_title: Hoe handtekeningen in PDF te lezen met C# – Complete gids +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: Hoe handtekeningen in PDF lezen met C# – Stapsgewijze handleiding +url: /nl/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe handtekeningen in PDF lezen met C# – Complete gids + +Heb je je ooit afgevraagd **hoe handtekeningen te lezen** die al in een PDF‑bestand zijn ingebed? Misschien bouw je een compliance‑dashboard, of moet je ondertekende contracten auditen voordat ze in je database terechtkomen. Het goede nieuws is dat je met een paar regels C# en de Aspose.Pdf‑bibliotheek de namen van de handtekeningen direct uit het bestand kunt halen – zonder handmatige inspectie. + +In deze tutorial lopen we door het laden van een PDF‑document in C#, het opsommen van PDF‑handtekeningen en het verkrijgen van digitale handtekeningen‑informatie. Aan het einde heb je een kant‑klaar console‑appje dat elke gevonden handtekeningnaam afdrukt, plus tips voor het omgaan met randgevallen zoals wachtwoord‑beveiligde bestanden. + +## Vereisten + +- .NET 6.0 of hoger (de code werkt ook met .NET Framework 4.6+) +- Aspose.Pdf for .NET (je kunt een gratis tijdelijke licentie halen van de Aspose‑website) +- Een PDF die al één of meer digitale handtekeningen bevat (het voorbeeld `MultiSigned.pdf` staat in de repo) + +> **Pro tip:** Als je Visual Studio gebruikt, schakel *Nullable Reference Types* in om null‑gerelateerde bugs vroegtijdig te detecteren. + +## Stap 1: Laad het PDF‑document in C# + +Het eerste wat we nodig hebben is een `Document`‑object dat het PDF‑bestand op schijf representeert. De `Document`‑klasse van Aspose.Pdf regelt alles van eenvoudige tekst‑extractie tot complexe formulierverwerking. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**Waarom dit belangrijk is:** Het laden van de PDF controleert of het bestand bestaat en leesbaar is. Als het bestand corrupt is of het pad onjuist, stoppen we vroegtijdig in plaats van later cryptische fouten te krijgen bij het opsommen van handtekeningen. + +## Stap 2: Maak een `PdfFileSignature`‑helper + +Aspose scheidt algemene PDF‑verwerking (`Document`) van handtekening‑specifieke bewerkingen (`PdfFileSignature`). Het instantieren van deze helper geeft ons toegang tot methoden zoals `GetSignatureNames()`. + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**Waarom dit belangrijk is:** De `PdfFileSignature`‑klasse weet hoe de `/Sig`‑dictionary‑entries van de PDF geparseerd moeten worden, waar digitale handtekeningen zich bevinden. Het gebruik ervan zorgt ervoor dat we de handtekeningen precies lezen zoals ze zijn toegevoegd, met behoud van alle cryptografische metadata. + +## Stap 3: Haal alle handtekeningnamen op + +Nu volgt de kern van **hoe handtekeningen te lezen**: roep `GetSignatureNames()` aan. Deze methode retourneert een string‑array met de *veld‑namen* van elke handtekening. + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**Wat je zult zien:** Als `MultiSigned.pdf` drie handtekeningen bevat met de namen `Signature1`, `Signature2` en `Signature3`, ziet de console‑output er als volgt uit: + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## Stap 4: (Optioneel) Verifieer de geldigheid van elke handtekening + +Het lezen van de namen is vaak voldoende, maar veel projecten moeten ook weten of elke handtekening nog geldig is. Aspose laat je een handtekening valideren op basis van de veld‑naam: + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **Randgeval:** Als de PDF met een wachtwoord is beveiligd, moet je het wachtwoord opgeven voordat je `VerifySignature` aanroept. Gebruik `pdfDocument.Encrypt.Password = "yourPassword";` direct na het laden van het document. + +## Volledig werkend voorbeeld + +Hieronder staat het complete programma dat je kunt kopiëren‑plakken in een nieuw console‑project (`dotnet new console`). Het bevat alle stappen, foutafhandeling en optionele verificatie. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**Verwachte output** (ervan uitgaande dat er drie geldige handtekeningen zijn): + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## Veelvoorkomende variaties afhandelen + +| Situatie | Wat te wijzigen | Waarom | +|----------|----------------|--------| +| **Wachtwoord‑beveiligde PDF** | Stel `pdfDocument.Encrypt.Password = "yourPwd";` in vóór het maken van `PdfFileSignature`. | Zonder het wachtwoord zijn de handtekening‑dictionaries versleuteld en retourneert `GetSignatureNames()` een lege array. | +| **Grote PDF’s ( > 100 MB )** | Gebruik `pdfSigner.GetSignatureNames(0, 10)` om de resultaten te pagineren (eerste parameter = start‑index). | Het in één keer laden van de volledige handtekeninglijst kan veel geheugen verbruiken. | +| **Geen handtekeningen** | De code geeft al een vriendelijke waarschuwing. Overweeg dit te loggen als een audit‑event. | Helpt downstream‑processen beslissen of het bestand moet worden afgewezen of de gebruiker moet vragen om een ondertekende versie. | +| **Aangepaste handtekening‑veld‑namen** | De methode retourneert precies de veld‑naam die tijdens het ondertekenen is gebruikt, bv. `EmployeeApproval`. Geen extra werk nodig. | Maakt het mogelijk om handtekeningen terug te koppelen aan zakelijke rollen. | + +## Best practices & tips + +- **Objecten vrijgeven**: Het `using var pdfSigner`‑patroon zorgt ervoor dat native resources direct worden vrijgegeven. +- **Licentie vroegtijdig laden**: Roep `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` aan het begin van `Main` aan om het evaluatiewatermerk te vermijden. +- **Thread‑veiligheid**: Als je veel PDF’s parallel verwerkt, maak dan een aparte `PdfFileSignature` per thread. De klasse is niet thread‑safe. +- **Logging**: Vervang in productie `Console.WriteLine` door een gestructureerde logger (Serilog, NLog) zodat je de exacte handtekeningnamen kunt vastleggen voor audit‑trails. +- **Versie‑check**: De code werkt met Aspose.Pdf for .NET 23.10 en nieuwer. Oudere versies kunnen `PdfSignature` in plaats van `PdfFileSignature` vereisen. + +## Conclusie + +We hebben behandeld **hoe handtekeningen te lezen** uit een PDF met C#. Door het PDF‑document te laden, een `PdfFileSignature`‑helper te maken en `GetSignatureNames()` aan te roepen, kun je elke digitale handtekening in het bestand opsommen. Optionele verificatie voegt een extra vertrouwenslaag toe, en de voorbeeldcode laat zien hoe je dit in een real‑world console‑app integreert. + +Klaar voor de volgende stap? Combineer dit met Aspose’s `DigitalSignatureUtil` om ondertekenaar‑certificaten te extraheren, of voer de handtekeninglijst in een compliance‑dashboard dat niet‑ondertekende contracten markeert. De mogelijkheden zijn eindeloos – onthoud alleen om **PDF‑document laden C#**, **PDF‑handtekeningen opsommen** en **digitale handtekeningen PDF** te gebruiken wanneer je een snelle audit nodig hebt. + +Happy coding, en moge je PDF‑bestanden altijd veilig ondertekend blijven! + +{{< /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-conversion/_index.md b/pdf/dutch/net/document-conversion/_index.md index fafa691fa..fdfe6b29c 100644 --- a/pdf/dutch/net/document-conversion/_index.md +++ b/pdf/dutch/net/document-conversion/_index.md @@ -36,7 +36,8 @@ leert hoe u conversie-instellingen opgeeft, tekst en afbeeldingen extraheert, de | [PDF naar HTML](./pdf-to-html/) | Leer hoe je PDF naar HTML converteert met Aspose.PDF voor .NET met deze stapsgewijze handleiding. Perfect voor ontwikkelaars en content creators. | | [PDF naar PDFA](./pdf-to-pdfa/) Leer hoe u PDF-bestanden naar PDF/A-formaat kunt converteren met Aspose.PDF voor .NET met deze stapsgewijze tutorial. | | [PDF naar PDFA3b](./pdf-to-pdfa3b/) | Leer hoe u moeiteloos PDF-bestanden naar PDF/A-3B-formaat kunt converteren met Aspose.PDF voor .NET in deze stapsgewijze handleiding. | -| [PDF naar PDF/X‑4 converteren in C# – Stapsgewijze ASP.NET PDF-tutorial](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | Leer hoe u PDF-bestanden naar PDF/X‑4-formaat converteert met Aspose.PDF voor .NET in C#. | +| [PDF naar PDF/X‑4 converteren in C# – Stapsgewijze ASP.NET PDF-tutorial](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | Leer hoe u PDF-bestanden naar PDF/X‑4-formaat converteert met Aspose.PDF voor .NET in C#. | +| [Aspose PDF-tutorial: PDF naar PDF/X‑4 converteren in C#](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) | Leer hoe u PDF-bestanden naar PDF/X‑4 converteert met Aspose.PDF voor .NET in C# met deze stapsgewijze handleiding. | | [PDF naar PNG-lettertypehints](./pdf-to-png-font-hinting/) | Leer hoe u PDF naar PNG kunt converteren met lettertypehints met Aspose.PDF voor .NET in een eenvoudige stapsgewijze handleiding. | | [PDF naar PPT](./pdf-to-ppt/) | Leer hoe u PDF naar PPT converteert met Aspose.PDF voor .NET met deze stapsgewijze handleiding. Eenvoudig, efficiënt en perfect voor presentaties. | | [PDF naar SVG](./pdf-to-svg/) | Leer in deze stapsgewijze tutorial hoe u PDF-bestanden naar SVG-formaat converteert met Aspose.PDF voor .NET. Perfect voor ontwikkelaars en ontwerpers. | diff --git a/pdf/dutch/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/dutch/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..364412e3e --- /dev/null +++ b/pdf/dutch/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-03-06 +description: De Aspose PDF‑tutorial laat zien hoe je Aspose gebruikt om een PDF‑document + te laden in C#, PDF naar PDF/X‑4 te converteren en de geconverteerde PDF efficiënt + op te slaan. +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: nl +og_description: Aspose PDF Tutorial legt uit hoe je een PDF‑document in C# laadt, + converteert naar PDF/X‑4‑formaat en de geconverteerde PDF opslaat met duidelijke + codevoorbeelden. +og_title: 'Aspose PDF‑handleiding: Converteer PDF naar PDF/X‑4 in C#' +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: 'Aspose PDF-tutorial: PDF naar PDF/X‑4 converteren in C#' +url: /nl/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose PDF Tutorial: PDF naar PDF/X‑4 converteren in C# + +Heb je je ooit afgevraagd hoe je Aspose kunt gebruiken om een gewone PDF om te zetten naar een PDF/X‑4‑bestand zonder moeite? Je bent niet de enige—ontwikkelaars hebben vaak een betrouwbare manier nodig om **load PDF document C#**‑style, het te converteren en vervolgens **save the converted PDF** voor downstream‑workflows. In deze gids lopen we een volledig, uitvoerbaar voorbeeld door dat precies dat doet, met de nieuwste Aspose.Pdf voor .NET. + +We behandelen alles, van het installeren van de bibliotheek, het laden van een bron‑PDF, het converteren naar de PDF/X‑4‑standaard, en uiteindelijk het opslaan van het resultaat op schijf. Aan het einde heb je een goed begrip van **how to use Aspose** voor dit veelvoorkomende conversiescenario, plus tips voor het omgaan met randgevallen. + +## Vereisten + +- .NET 6.0 of later (de code werkt ook op .NET Framework, maar .NET 6+ wordt aanbevolen). +- Een geldig Aspose.Pdf for .NET licentiebestand (of je kunt in evaluatiemodus draaien voor een snelle test). +- Visual Studio 2022 of een andere C#‑compatibele IDE. +- Een invoer‑PDF‑bestand geplaatst in `YOUR_DIRECTORY/input.pdf`. +- Geen extra NuGet‑pakketten naast `Aspose.Pdf` zijn vereist. + +## Installeer Aspose.Pdf via NuGet + +Open je terminal of Package Manager Console en voer uit: + +```bash +dotnet add package Aspose.Pdf +``` + +Dat haalt de nieuwste stabiele versie op (vanaf maart 2026, versie 23.12). Als je de UI verkiest, zoek dan naar *Aspose.Pdf* in de NuGet Package Manager en installeer het. + +## Stap 1: PDF‑document laden in C# met Aspose + +Het eerste wat je moet doen is de bron‑PDF in het geheugen laden. De `Document`‑klasse van Aspose is het startpunt. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**Waarom dit belangrijk is:** Het laden van het bestand controleert of het pad bestaat en of de PDF niet corrupt is. Het `try/catch`‑blok biedt een nette manier om fouten weer te geven—handig wanneer het bestand afkomstig is van gebruikers‑uploads. + +## Stap 2: PDF converteren naar PDF/X‑4‑formaat + +PDF/X‑4 is een subset van PDF ontworpen voor betrouwbare afdrukken en archivering. Converteren zorgt ervoor dat alle lettertypen zijn ingesloten en dat het bestand voldoet aan de industriestandaarden. + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**Waarom `ConvertErrorAction.Delete` kiezen?** Sommige legacy‑PDF’s bevatten elementen (zoals niet‑ondersteunde annotaties) die anders de conversie zouden stoppen. Het verwijderen ervan houdt het proces soepel, maar je moet de output controleren als je die elementen wilt behouden. + +### Optioneel: Conversiesucces verifiëren + +Als je extra zeker wilt zijn, kun je het `PdfFormat` van het document inspecteren na de conversie: + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## Stap 3: Het geconverteerde PDF‑bestand opslaan + +Nu het document in PDF/X‑4‑vorm is, schrijf je het terug naar schijf. + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**Resultaat dat je ziet:** Een nieuw bestand met de naam `Converted_PDFX4.pdf` verschijnt in `YOUR_DIRECTORY`. Open het met een PDF‑viewer die PDF/X‑4 ondersteunt (Adobe Acrobat, Foxit, enz.) en je zult merken dat alle lettertypen zijn ingesloten en dat het document voldoet aan de PDF/X‑4‑specificatie. + +![aspose pdf tutorial - PDF naar PDF/X‑4 converteren](/images/aspose-pdf-conversion.png "aspose pdf tutorial toont PDF/X‑4 conversieresultaat") + +*De alt‑tekst van de afbeelding bevat het primaire zoekwoord, wat voldoet aan SEO‑vereisten.* + +## Volledig end‑to‑end voorbeeld + +Alles samengevoegd, hier is een zelfstandige console‑app die je kunt kopiëren‑plakken in een nieuw C#‑project: + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +Voer het programma uit, en je zou console‑berichten moeten zien die elke stap bevestigen. Als er iets misgaat, wijzen de foutmeldingen je naar de exacte fase. + +## Veelgestelde vragen & randgevallen + +### Wat als ik annotaties moet behouden? + +`ConvertErrorAction.Delete` verwijdert niet‑ondersteunde objecten, inclusief sommige annotaties. Schakel over naar `ConvertErrorAction.Keep` als het behouden ervan cruciaal is, maar test de output—sommige annotaties kunnen nog steeds compliance‑waarschuwingen veroorzaken. + +### Hoe ga ik om met grote PDF’s (honderden MB)? + +Aspose.Pdf streamt het bestand, dus het geheugenverbruik blijft bescheiden. Je kunt echter de `System.GC`‑drempels verhogen of het document in delen verwerken (bijv. pagina‑voor‑pagina converteren) voor extreem grote bestanden. + +### Kan ik meerdere bestanden in één batch converteren? + +Zeker. Plaats de laad‑conversie‑opsla‑logica in een `foreach`‑lus die over een map met PDF’s itereren. Zorg ervoor dat je per bestand uitzonderingen afhandelt zodat één slechte PDF de hele batch niet onderbreekt. + +### Werkt dit op .NET Core op Linux? + +Ja. Aspose.Pdf is cross‑platform. Zorg er alleen voor dat het `Aspose.Pdf` NuGet‑pakket is gerefereerd en dat je de juiste lettertype‑bestanden op de Linux‑host hebt geïnstalleerd als je tekstweergave nodig hebt. + +## Pro‑tips uit de praktijk + +- **Stel een licentie vroeg in**: `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` – dit verwijdert het evaluatiewatermerk en verbetert de prestaties. +- **Valideer de output**: Gebruik Aspose’s `PdfFormatValidator` om programmatisch PDF/X‑4‑conformiteit te bevestigen voordat je het bestand levert. +- **Log conversietijd**: Grote batches profiteren van het timen van elke conversie (`Stopwatch`) om prestatie‑regressies te detecteren. +- **Vermijd hard‑gecodeerde paden**: Geef de voorkeur aan configuratie‑bestanden of omgevingsvariabelen voor `inputPath` en `outputPath`—maakt de app draagbaar. + +## Conclusie + +In deze **Aspose PDF Tutorial** hebben we een duidelijke, end‑to‑end‑workflow gedemonstreerd voor **how to use Aspose** om **load PDF document C#** te **convert** naar de **PDF/X‑4**‑standaard, en **save the converted PDF**. Het fragment is volledig uitvoerbaar, legt het *waarom* achter elke stap uit, en belicht valkuilen die je in real‑world projecten kunt tegenkomen. + +Nu je de basis onder de knie hebt, kun je de oplossing uitbreiden—batch‑verwerking van tientallen bestanden, aangepaste metadata insluiten, of de conversie integreren in een web‑API. De mogelijkheden zijn eindeloos, en Aspose.Pdf biedt de tools om daar snel te komen. + +Heb je meer vragen over PDF‑verwerking met Aspose? Laat een reactie achter, bekijk de officiële Aspose‑documentatie, of experimenteer met de bovenstaande code. Veel plezier met converteren! + +{{< /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-creation/_index.md b/pdf/dutch/net/document-creation/_index.md index 6d1bbb04c..297c6e97f 100644 --- a/pdf/dutch/net/document-creation/_index.md +++ b/pdf/dutch/net/document-creation/_index.md @@ -77,6 +77,12 @@ Een codetutorial voor Aspose.PDF Net ### [PDF-document maken met Aspose.PDF – Pagina toevoegen, vorm toevoegen & opslaan](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) Leer hoe u met Aspose.PDF een PDF maakt, een pagina en vorm toevoegt en het document opslaat. +### [PDF-document maken met Aspose.PDF – Stapsgewijze handleiding](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +Leer hoe u een PDF-document maakt met Aspose.PDF in een stapsgewijze handleiding. + +### [PDF-document maken met Aspose.PDF – volledige C#-handleiding](./create-pdf-document-with-aspose-pdf-full-c-guide/) +Leer stap voor stap hoe u een PDF-document maakt met Aspose.PDF in C#, inclusief codevoorbeelden en best practices. + ## Aanvullende bronnen - [Aspose.PDF voor Netdocumentatie](https://docs.aspose.com/pdf/net/) diff --git a/pdf/dutch/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/dutch/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..abfd66c8c --- /dev/null +++ b/pdf/dutch/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-06 +description: Maak een pdf‑document in C# met Aspose.PDF – leer hoe je lege pdf‑pagina’s, + een tekstvak, een widget toevoegt en de pdf snel opslaat. +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: nl +og_description: Maak een PDF-document in C# met Aspose.PDF. Deze gids laat zien hoe + je lege PDF‑pagina's, een tekstvak, een widget toevoegt en hoe je de PDF opslaat. +og_title: PDF-document maken met Aspose.PDF – Complete C#-tutorial +tags: +- pdf +- csharp +- aspose +- forms +title: PDF-document maken met Aspose.PDF – Volledige C#-gids +url: /nl/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF‑document maken met Aspose.PDF – Volledige C#‑gids + +Heb je ooit een **pdf‑document** vanaf nul moeten **maken** in een .NET‑project en je afgevraagd waar je moet beginnen? Je bent niet de enige; veel ontwikkelaars lopen tegen dezelfde muur aan wanneer de eerste eis luidt “genereer een invulbaar PDF‑bestand met hetzelfde tekstvak op drie pagina’s.” Het goede nieuws? Met Aspose.PDF kun je in slechts een handvol regels een professioneel ogend PDF‑bestand genereren. + +In deze tutorial lopen we het volledige proces door: van het initialiseren van een nieuw PDF, **lege pagina's pdf toevoegen**, een **tekstvak** invoegen, het repliceren met **widget**‑annotaties, en uiteindelijk **het PDF‑bestand opslaan** op schijf. Aan het einde heb je een kant‑klaar bestand met de naam *MultiWidgetField.pdf* en een goed begrip van waarom elke stap belangrijk is. + +## Wat deze gids behandelt + +- Vereisten die je nodig hebt voordat je een enkele regel code schrijft. +- Stap‑voor‑stap creatie van een PDF‑document met Aspose.PDF voor .NET. +- Hoe je lege pagina’s, een tekstvak‑formulierveld en extra widget‑instanties toevoegt. +- Tips voor het omgaan met veelvoorkomende valkuilen (bijv. paginering, naamconflicten van velden). +- Een compleet, kant‑klaar C#‑programma dat je vandaag nog kunt uitvoeren. + +Geen externe documentatielinks, geen “zie de API‑docs” shortcuts—alles wat je nodig hebt staat hier. + +## Vereisten + +Voordat je begint, zorg dat je het volgende hebt: + +1. **.NET 6.0** (of een latere versie) geïnstalleerd op je machine. +2. Een actieve **Aspose.PDF for .NET**‑licentie of een tijdelijke evaluatiesleutel. +3. Een ontwikkelomgeving zoals **Visual Studio 2022** of **VS Code** met de C#‑extensie. + +Dat is alles—geen extra zaken nodig. + +## Stap 1: Initialiseer het PDF‑document en voeg lege pagina’s toe + +Het eerste wat je doet wanneer je **pdf document** programmatically **maakt**, is een `Document`‑object instantieren. Beschouw het als het openen van een gloednieuw notitieboek. Vervolgens voeg je de pagina’s toe die je nodig hebt; in ons geval drie lege pagina’s. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**Waarom dit belangrijk is:** Aspose.PDF behandelt pagina’s intern als een nul‑gebaseerde collectie, maar de openbare API is 1‑gebaseerd, dus `Pages[1]` is de eerste pagina die je zojuist hebt toegevoegd. Pagina’s vooraf toevoegen geeft je een canvas om later formuliervelden te plaatsen, en het is veel goedkoper dan pagina’s on‑the‑fly in te voegen nadat het document is gegroeid. + +> **Pro tip:** Als je slechts één pagina nodig hebt, kun je de lus overslaan en één keer `pdfDocument.Pages.Add()` aanroepen. Meerdere pagina’s in een lus toevoegen houdt de code schaalbaar. + +## Stap 2: Definieer een TextBox‑formulierveld op de eerste pagina + +Nu we drie lege bladen hebben, laten we een **textbox** op de eerste plaatsen. Een `TextBoxField` is een formelement waarin eindgebruikers kunnen typen wanneer het PDF‑bestand wordt geopend in Acrobat Reader of een andere PDF‑viewer die formulieren ondersteunt. + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**Waarom de rechthoekcoördinaten?** Aspose.PDF gebruikt punten (1/72 van een inch). De rechthoek `(100, 700, 300, 730)` plaatst het tekstvak ongeveer halverwege de pagina, 200 pt breed en 30 pt hoog. Pas deze getallen aan om bij je lay‑out te passen. + +> **Veelgestelde vraag:** *Moet ik de `Value`‑eigenschap instellen?* +> Nee, dat is optioneel. Leeg laten toont een blanco veld; een standaardwaarde kan de gebruiker begeleiden. + +## Stap 3: Voeg Widget‑annotaties toe voor hetzelfde veld op pagina 2 en 3 + +Een **widget** is de visuele weergave van een formulierveld op een specifieke pagina. Standaard verschijnt een veld alleen op de pagina waar het is aangemaakt. Om hetzelfde tekstvak op andere pagina’s te hergebruiken, koppel je extra `WidgetAnnotation`‑objecten aan de `Widgets`‑collectie van het veld. + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**Waarom widgets?** Zonder widgets zou de gebruiker het tekstvak alleen op pagina 1 zien, hoewel het onderliggende veld bestaat. Widgets laten je één logisch veld delen over meerdere pagina’s, waardoor de ingevoerde tekst overal wordt weergegeven waar het veld wordt getoond. + +> **Randgeval:** Als je het tekstvak op verschillende coördinaten op elke pagina wilt, wijzig je simpelweg de `Rectangle`‑waarden voor elke widget. + +## Stap 4: Registreer het veld bij de Form‑collectie van het document + +Aspose.PDF houdt een centrale registratie bij van alle formuliervelden. Het veld toevoegen aan de `Form`‑collectie maakt het onderdeel van de interactieve formstructuur van het PDF‑bestand. + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +Het tweede argument (`"Comment"`) is de **volledig gekwalificeerde naam** van het veld. Het moet uniek zijn binnen het document; anders gooit Aspose een uitzondering. + +## Stap 5: Sla het resulterende PDF‑bestand op – Hoe PDF opslaan + +Tot slot persisteren we het in‑memory document naar schijf. Dit is het **hoe PDF opslaan**‑deel van de tutorial. + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**Waarom een absoluut pad opgeven?** Een absoluut pad voorkomt verwarring over de werkmap, vooral wanneer je het programma vanuit de debugger van Visual Studio uitvoert. Als je een relatief pad verkiest, zorg er dan voor dat de map bestaat voordat je `Save` aanroept. + +### Verwacht resultaat + +Open *MultiWidgetField.pdf* in Adobe Acrobat Reader. Je ziet hetzelfde tekstvak op pagina 1, 2 en 3. Typ iets in het veld op een willekeurige pagina—de tekst verschijnt direct op de andere pagina’s omdat ze hetzelfde onderliggende formulierveld delen. + +![Voorbeeld van PDF‑document maken met een tekstvak op drie pagina’s](https://example.com/placeholder-image.png "Voorbeeld van PDF‑document maken met een tekstvak op drie pagina’s") + +*Afbeeldings‑alt‑tekst: Voorbeeld van PDF‑document maken met een tekstvak op drie pagina’s.* + +## Volledig, kant‑klaar voorbeeld + +Hieronder staat het complete programma dat je kunt kopiëren naar een nieuw console‑project (`dotnet new console`) en uitvoeren. Alle stappen staan al op volgorde, en de code bevat commentaar voor duidelijkheid. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +Voer het programma uit, navigeer naar `C:\Temp\`, en open het gegenereerde PDF‑bestand. Je ziet de drie identieke tekstvakken klaar voor invoer door de gebruiker. + +## Veelvoorkomende variaties & randgevallen + +| Scenario | Wat te wijzigen | Waarom | +|----------|----------------|--------| +| **Verschillende tekstvakgrootte op elke pagina** | Pas de `Rectangle`‑waarden aan voor elke `WidgetAnnotation`. | Hiermee kun je het veld in verschillende lay‑outs passen. | +| **Alleen‑lezen veld** | Stel `commentField.ReadOnly = true;` in. | Voorkomt dat gebruikers de inhoud na de eerste invulling aanpassen. | +| **Meerdere regels tekstvak** | Stel `commentField.Multiline = true;` in en vergroot de hoogte van de rechthoek. | Maakt langere opmerkingen mogelijk zonder scrollen. | +| **Een tweede veld toevoegen** | Maak een nieuw `TextBoxField` (of een ander `FormField`) en herhaal stappen 2‑4 met een nieuwe naam. | Je kunt meerdere gegevensstukken verzamelen in hetzelfde PDF‑bestand. | + +## Pro‑tips & valkuilen om te vermijden + +- **Paginanummering:** Onthoud dat `pdfDocument.Pages[1]` de eerste pagina is, niet `[0]`. Het mixen van 0‑gebaseerde en 1‑gebaseerde indexen leidt tot “Index out of range”‑exceptions. +- **Naamconflicten van velden:** Twee velden kunnen niet dezelfde volledig gekwalificeerde naam delen. Als je een fout krijgt over dubbele namen, controleer dan de string die je aan `Form.Add` doorgeeft. +- **Licentie vs. evaluatie:** De evaluatieversie voegt een watermerk toe op elke pagina. Deploy een geldige licentie om dit in productie te verwijderen. +- **Prestaties:** Het toevoegen van honderden pagina’s in een lus is prima, maar als je enorme PDF’s (duizenden pagina’s) moet genereren, overweeg dan het gebruik van + +{{< /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-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/dutch/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..1e6699264 --- /dev/null +++ b/pdf/dutch/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-03-06 +description: Maak een PDF-document met Aspose.PDF in C#. Leer hoe je een PDF-pagina + toevoegt, een rechthoek in een PDF tekent, een vorm aan een PDF toevoegt en de dikte + van de rechthoekrand regelt — allemaal in één tutorial. +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: nl +og_description: Maak PDF-document in C# met Aspose.PDF. Deze tutorial laat zien hoe + je een PDF-pagina toevoegt, een rechthoek in PDF tekent, een vorm aan PDF toevoegt + en de dikte van de rechthoekrand instelt. +og_title: PDF-document maken met Aspose.PDF – Complete gids +tags: +- Aspose.PDF +- C# +- PDF generation +title: PDF-document maken met Aspose.PDF – Stapsgewijze handleiding +url: /nl/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Maak PDF-document met Aspose.PDF – Stapsgewijze gids + +Heb je ooit **een PDF-document maken** programmatically nodig gehad en wist je niet waar te beginnen? Je bent niet alleen—veel ontwikkelaars lopen tegen dezelfde muur aan wanneer hun apps facturen, rapporten of certificaten on‑the‑fly moeten genereren. + +Het goede nieuws is dat je met Aspose.PDF voor .NET dit in een handvol regels kunt doen, en je leert ook hoe je **add page PDF**, **draw rectangle PDF**, **add shape PDF** kunt toevoegen, en de **rectangle border thickness** kunt aanpassen terwijl je bezig bent. Laten we duiken. + +## Wat je gaat bouwen + +Aan het einde van deze gids heb je een volledig functionele C# console‑app die: + +1. **Creates a PDF document** vanaf nul. +2. **Adds a page PDF** aan het document. +3. **Draws a rectangle PDF** op die pagina. +4. **Validates** dat het rechthoek binnen de paginagrenzen blijft (**add shape PDF** stap). +5. Stelt een aangepaste **rectangle border thickness** in. +6. Slaat het resultaat op als `ShapeValidated.pdf`. + +Geen externe services, geen mysterieuze configuratie—alleen plain C# en Aspose.PDF. + +### Vereisten + +- .NET 6.0 of later (de code werkt ook met .NET Framework 4.6+). +- Een referentie naar het `Aspose.Pdf` NuGet‑pakket. Je kunt het toevoegen via: + +```bash +dotnet add package Aspose.Pdf +``` + +- Een teksteditor of IDE—Visual Studio, VS Code, Rider, wat je ook verkiest. + +> **Pro tip:** Als je op een bedrijfscomputer werkt, zorg er dan voor dat de NuGet‑feed niet geblokkeerd is; anders krijg je een “Package not found” fout. + +--- + +## PDF-document maken – Document initialiseren + +De allereerste stap is het aanmaken van een `Document`‑object. Beschouw het als het lege canvas waarop elke pagina en vorm zal leven. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +Waarom hebben we dit object nodig? Het vertegenwoordigt het volledige PDF‑bestand in het geheugen, en geeft ons toegang tot de `Pages`‑collectie, metadata en beveiligingsinstellingen. Zodra je het document hebt, kun je beginnen met het stapelen van pagina’s, tekst, afbeeldingen en vector‑graphics. + +--- + +## Een pagina toevoegen aan de PDF (add page pdf) + +Een PDF zonder pagina’s is in feite een leeg bestand—zinnig. Het toevoegen van een pagina is eenvoudig, en je kunt de grootte aanpassen indien gewenst. Hier blijven we bij de standaard A4‑grootte. + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +De `Add()`‑methode retourneert een nieuw `Page`‑object dat al deel uitmaakt van de `Pages`‑collectie, zodat je meteen kunt beginnen met tekenen erop. In real‑world scenario’s kun je over een dataset itereren en tientallen pagina’s toevoegen; dezelfde één‑regelige aanroep werkt voor elke iteratie. + +--- + +## Een rechthoekige vorm tekenen (draw rectangle pdf) + +Nu het visuele deel: een rechthoek met een zichtbare rand. Hier komt **draw rectangle pdf** in beeld. + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +Een paar dingen om op te merken: + +- `Rect` gebruikt points (1 pt ≈ 1/72 inch). De coördinaten definiëren de linker‑onder‑ en rechter‑boven‑hoeken, zodat je breedte en hoogte nauwkeurig kunt regelen. +- `BorderInfo` laat je specificeren welke zijden een lijn krijgen en hoe dik die lijn is. Hier passen we een 2‑point lijn toe op **all** zijden, waardoor de rechthoek een nette, uniforme uitstraling krijgt. + +--- + +## Vormplaatsing valideren (add shape pdf) + +Voordat we de rechthoek op de pagina plaatsen, is het verstandig te verifiëren dat deze binnen het afdrukbare gebied van de pagina past. Aspose.PDF biedt daarvoor een handige hulpmethode. + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +Waarom de moeite? Als je per ongeluk een vorm gedeeltelijk buiten het scherm plaatst, kan de PDF‑viewer deze afsnijden, wat leidt tot een verwarrende gebruikerservaring. Deze **add shape pdf** guard clause zorgt ervoor dat je alleen inhoud toevoegt die volledig zichtbaar zal zijn. + +--- + +## De PDF opslaan (add page pdf) + +Tot slot slaan we het in‑memory document op naar schijf. Je kunt elke locatie kiezen waarvoor je schrijfrechten hebt. + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +Na het uitvoeren van het programma, open `ShapeValidated.pdf`—je zou een enkele pagina moeten zien met een net omrande rechthoek, ongeveer in het midden gecentreerd. + +--- + +## Verwacht resultaat + +Wanneer je de gegenereerde PDF opent, zie je: + +- Een A4‑formaat pagina. +- Een rechthoek waarvan de linker‑onder‑hoek begint op (50 pt, 50 pt) en de rechter‑boven‑hoek eindigt op (600 pt, 800 pt). +- Een **2‑point thick** rand rondom de rechthoek. + +Als de console “PDF created successfully!” afdrukte, weet je dat de code is uitgevoerd zonder de grenscontrole te raken. + +![Diagram dat laat zien hoe je een PDF-document maakt met Aspose.PDF](https://example.com/diagram-create-pdf.png "PDF-document maken – visueel overzicht") + +*Afbeeldings‑alt‑tekst bevat het primaire zoekwoord om te voldoen aan SEO‑vereisten.* + +--- + +## Veelgestelde vragen & randgevallen + +### Wat als ik een andere paginagrootte nodig heb? + +Vervang de standaardpagina door een aangepaste grootte: + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### Hoe wijzig ik de randkleur? + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### Kan ik meerdere vormen op dezelfde pagina toevoegen? + +Zeker. Herhaal gewoon het **add shape pdf**‑blok met een nieuwe `RectangleShape` (of andere `Shape`‑subklassen) en pas de `Rect`‑coördinaten dienovereenkomstig aan. + +### Wat als de rechthoek de paginagrenzen overschrijdt? + +De `IsShapeWithinBounds`‑aanroep zal `false` retourneren. In productiecodel kun je de vorm automatisch willen schalen: + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +--- + +## Samenvatting + +We hebben de volledige levenscyclus van **creating a PDF document** met Aspose.PDF doorlopen: + +1. Initialiseert het `Document`. +2. **Add a page PDF** met `Pages.Add()`. +3. **Draw a rectangle PDF** via `RectangleShape`. +4. **Add shape PDF** alleen nadat bevestigd is dat het binnen de pagina blijft. +5. Beheer de **rectangle border thickness** met `BorderInfo`. +6. Sla het bestand op. + +Dat is de volledige workflow in minder dan 60 regels code. + +--- + +## Wat is de volgende stap? + +- **Add text**: Gebruik `TextFragment` om titels of labels binnen de rechthoek te plaatsen. +- **Insert images**: De `Image`‑klasse laat je logo’s of grafieken insluiten. +- **Create tables**: Perfect voor facturen of data‑rapporten. +- **Apply security**: Beveilig de PDF met een wachtwoord als deze gevoelige gegevens bevat. + +Elk van deze onderwerpen bouwt voort op de hier behandelde fundamentals, dus je bent goed gepositioneerd om meer geavanceerde PDF‑generatiescenario's te verkennen. + +--- + +### Blijf experimenteren + +Stop niet bij één rechthoek—speel met verschillende vormen, kleuren en lijntypen. De Aspose.PDF‑API is uitgebreid, en hoe meer je experimenteert, hoe comfortabeler je wordt. Als je een probleem tegenkomt, is de officiële Aspose‑documentatie een goede metgezel, maar onthoud dat de code hierboven een complete, copy‑and‑paste‑klare oplossing is die je vandaag kunt uitvoeren. + +Veel plezier met coderen, en moge je PDF’s altijd precies renderen zoals je je voorstelde! + +{{< /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 cd05fdffa..419ee0e33 100644 --- a/pdf/dutch/net/document-manipulation/_index.md +++ b/pdf/dutch/net/document-manipulation/_index.md @@ -191,6 +191,9 @@ Leer hoe u efficiënt alle tekst uit een PDF verwijdert met Aspose.PDF .NET. Ide ### [PDF-openacties verwijderen met Aspose.PDF voor .NET: een complete handleiding](./remove-pdf-open-action-aspose-dotnet-guide/) Leer hoe u ongewenste geopende acties uit PDF-bestanden verwijdert met Aspose.PDF voor .NET. Deze handleiding biedt stapsgewijze instructies en aanbevolen procedures. +### [Hoe PDF te redigeren in C# met Aspose PDF – Complete gids](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) +Leer hoe u gevoelige informatie uit PDF's kunt verwijderen met Aspose PDF in C#. + ### [PDF-pagina's splitsen met Aspose.PDF voor .NET: een complete handleiding](./mastering-pdf-page-splitting-aspose-pdf-net/) Leer hoe u PDF-pagina's efficiënt kunt opsplitsen in afzonderlijke bestanden met Aspose.PDF voor .NET met deze uitgebreide handleiding. Verbeter vandaag nog uw vaardigheden in documentverwerking. @@ -278,7 +281,7 @@ Een codetutorial voor Aspose.PDF Net ### [PDF's samenvoegen in .NET met Aspose.PDF: een uitgebreide handleiding](./merge-pdfs-net-aspose-pdf-tutorial/) Leer hoe u PDF-bestanden naadloos kunt samenvoegen met Aspose.PDF voor .NET. Deze stapsgewijze handleiding behandelt de installatie, implementatie en praktische toepassingen. -### [PDF-formuliervelden verplaatsen in .NET met Aspose.PDF: een stapsgewijze handleiding](./move-pdf-fields-aspose-pdf-dotnet-guide/) +### [PDF-formuliervelden verplaatsen in .NET met Aspose.PDF voor .NET: een stapsgewijze handleiding](./move-pdf-fields-aspose-pdf-dotnet-guide/) Leer hoe u moeiteloos PDF-formuliervelden kunt verplaatsen en herpositioneren met Aspose.PDF voor .NET. Deze handleiding behandelt de installatie, stapsgewijze instructies en tips voor probleemoplossing. ### [PDF-manipulatie eenvoudig gemaakt: Aspose.PDF .NET-handleiding voor het laden, opslaan en zoomen van configuraties](./master-pdf-manipulation-aspose-dotnet-load-save-configure-page-zoom/) diff --git a/pdf/dutch/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/dutch/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..20c761e97 --- /dev/null +++ b/pdf/dutch/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,236 @@ +--- +category: general +date: 2026-03-06 +description: Leer hoe je PDF kunt redigeren met Aspose PDF in C#. Deze stapsgewijze + gids laat zien hoe je een PDF‑document laadt in C#, de eerste PDF‑pagina opent en + een afbeelding uit de PDF verwijdert. +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: nl +og_description: Hoe PDF snel kunt redigeren met Aspose PDF in C#. Laad PDF‑document, + krijg toegang tot de eerste PDF‑pagina en verwijder een afbeelding uit de PDF in + slechts een paar regels code. +og_title: Hoe PDF te redigeren in C# – Aspose PDF-handleiding +tags: +- Aspose PDF +- C# +- PDF Redaction +title: Hoe PDF te redigeren in C# met Aspose PDF – Complete gids +url: /nl/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe PDF te redigeren in C# met Aspose PDF – Complete gids + +Heb je je ooit afgevraagd **hoe je PDF**‑bestanden kunt redigeren zonder al te veel moeite? Misschien heb je een contract gekregen waarin een vertrouwelijk logo verborgen is, of een rapport dat nog een tijdelijke afbeelding toont die je moet verwijderen. In die momenten wil je een betrouwbare, programmeerbare manier om die inhoud te verwijderen—zonder handmatige Acrobat‑trucs. + +In deze tutorial lopen we een beknopte, end‑to‑end oplossing door die **PDF‑document laadt C#**, de **eerste PDF‑pagina benadert**, en vervolgens **afbeelding uit PDF verwijdert** met behulp van de krachtige **Aspose PDF**‑bibliotheek. Aan het einde heb je een volledig geredigeerde PDF klaar voor distributie, en begrijp je waarom elke regel code belangrijk is. + +> **Pro tip:** Aspose PDF werkt met .NET Framework 4.6+ en .NET Core 3.1+, dus je bent gedekt, of je nu op Windows, Linux of macOS werkt. + +--- + +![voorbeeld van hoe PDF te redigeren](redact-pdf-before-after.png){alt="voorbeeld van hoe PDF te redigeren"} + +## Wat je nodig hebt + +- **Aspose.PDF for .NET** (laatste NuGet‑pakket) +- Een **C#‑ontwikkelomgeving** (Visual Studio, Rider of VS Code) +- Een voorbeeld‑PDF die een afbeeldingsresource bevat die je wilt verwijderen (we noemen het `Sensitive.pdf`) + +Geen extra tools van derden, geen OCR, alleen pure code. + +## Stap 1: PDF‑document laden C# – De eerste stap + +Voordat je iets kunt redigeren, moet je het bestand in het geheugen laden. De `Document`‑klasse is het startpunt voor elke Aspose PDF‑bewerking. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**Waarom dit belangrijk is:** +`Document` parseert de volledige PDF‑structuur en bouwt een objectmodel dat je in staat stelt pagina's, resources en annotaties te manipuleren. Als het bestand niet kan worden geladen (verkeerd pad, corrupte PDF), wordt er onmiddellijk een uitzondering gegooid—zodat je vroegtijdig weet dat er iets mis is. + +### Veelvoorkomende valkuil + +> *“Ik krijg een `FileNotFoundException` hoewel het bestand bestaat.”* +> Zorg ervoor dat het pad absoluut is of dat de werkmap van je project overeenkomt met de locatie van `Sensitive.pdf`. Het gebruik van `Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")` kan relatieve‑padproblemen voorkomen. + +## Stap 2: Eerste PDF‑pagina benaderen – Waar de afbeelding zich bevindt + +Afbeeldingen worden per pagina als resources opgeslagen. In veel eenvoudige PDF's is de eerste pagina de boosdoener, dus laten we die pakken. + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**Waarom dit belangrijk is:** +Aspose PDF gebruikt een 1‑gebaseerde index voor pagina's, wat enigszins ongebruikelijk is vergeleken met de meeste .NET‑collecties. Het benaderen van de verkeerde pagina kan betekenen dat je de verkeerde inhoud redigeert—of erger, de gevoelige afbeelding onaangeroerd laat. + +### Overweging van randgevallen + +Als je document geen pagina's heeft (een lege PDF), zal het proberen van `pdfDocument.Pages[1]` een `IndexOutOfRangeException` veroorzaken. Een snelle controle kan je redden: + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +## Stap 3: Afbeelding uit PDF verwijderen – De resource redigeren + +Aspose PDF laat je een resource op naam verwijderen. De meeste afbeeldingen heten `Im1`, `Im2`, enz., maar je kunt `firstPage.Resources.Images` inspecteren om dit te bevestigen. + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**Waarom dit belangrijk is:** +`RedactResource` verwijdert de afbeelding *en* alle verwijzingen ernaar op de pagina, waardoor de visuele leemte wordt opgevuld met een lege ruimte in plaats van een kapotte link. Het is een nette, PDF‑standaard manier om inhoud te wissen. + +### Hoe de juiste afbeeldingsnaam te vinden + +Als je niet zeker weet of de afbeelding `"Im1"` heet: + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +Voer dit fragment uit, controleer de console‑output, en vervang `"Im1"` door de daadwerkelijke sleutel die je ziet. + +## Stap 4: De geredigeerde PDF opslaan – De klus afronden + +Nu de ongewenste afbeelding verdwenen is, schrijf je de wijzigingen terug naar schijf. + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**Waarom dit belangrijk is:** +Opslaan naar een **nieuw** bestand houdt het origineel onaangeroerd—een vangnet voor het geval je moet terugdraaien. Als je moet overschrijven, wijs je de `Save`‑methode gewoon naar het originele pad, maar wees je ervan bewust dat de bewerking onomkeerbaar is. + +### Het resultaat verifiëren + +Open `Redacted.pdf` in een PDF‑viewer. Het gebied waar de afbeelding stond moet leeg zijn, en de rest van het document moet er identiek uitzien als het origineel. Als de paginalay-out verschoven lijkt, controleer dan dubbel of je alleen de bedoelde resource hebt verwijderd en niet een gedeeld XObject. + +## Volledig werkend voorbeeld + +Alles bij elkaar, hier is het volledige, kant‑klaar programma: + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**Verwachte output** (in de console): + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +Wanneer je `Redacted.pdf` opent, zal de afbeelding die `Im1` was verdwenen zijn, waardoor een schone pagina overblijft. + +## Veelgestelde vragen + +### Werkt dit met versleutelde PDF's? + +Als de bron‑PDF met een wachtwoord beschermd is, geef dan het wachtwoord door aan de `Document`‑constructor: + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### Wat als de afbeelding op meerdere pagina's voorkomt? + +Loop door elke pagina en roep `RedactResource` aan met dezelfde afbeeldingsnaam (of ontdek de naam per pagina). Voorbeeld: + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### Kan ik tekst op dezelfde manier redigeren? + +Ja—gebruik `page.Contents.RedactText("confidential")` of gebruik de `Redactor`‑klasse voor meer geavanceerde patronen. Dat is een eigen tutorial, maar het principe weerspiegelt wat we voor afbeeldingen deden. + +## Samenvatting – Wat we bereikt hebben + +We hebben beantwoord **hoe je PDF**‑bestanden programmatically kunt redigeren door: + +1. **PDF‑document laden C#** met Aspose PDF. +2. **Eerste PDF‑pagina benaderen** om de doel‑resource te vinden. +3. **Afbeelding uit PDF verwijderen** via `RedactResource`. +4. **Opslaan** van de opgeschoonde versie veilig. + +Deze aanpak is snel, herhaalbaar en werkt in batch‑taken—perfect voor compliance‑pijplijnen of geautomatiseerde rapportgeneratie. + +Als je klaar bent om verder te gaan, overweeg dan: + +- **Batch‑redactie** over een volledige map PDF's. +- **Tekst redigeren** met regex‑patronen via `Redactor`. +- **Een watermerk toevoegen** na redactie om “gesanitiseerd” aan te geven. + +Probeer het, pas de logica voor afbeeldingsnamen aan voor je eigen bestanden, + +{{< /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/performance-optimization/_index.md b/pdf/dutch/net/performance-optimization/_index.md index 97572c2e5..506270125 100644 --- a/pdf/dutch/net/performance-optimization/_index.md +++ b/pdf/dutch/net/performance-optimization/_index.md @@ -50,6 +50,9 @@ Leer de kunst van het nauwkeurig en efficiënt converteren van SVG-bestanden naa ### [Niet-ingebedde lettertypen in PDF's met Aspose.PDF voor .NET: verklein de bestandsgrootte en verbeter de prestaties](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) Leer hoe u lettertypen uit uw PDF-bestanden verwijdert met Aspose.PDF voor .NET. Optimaliseer de PDF-prestaties, verklein de bestandsgrootte en verkort de laadtijden met deze stapsgewijze handleiding. +### [Snelle handleiding: PDF comprimeren met Aspose.PDF](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) +Leer hoe u PDF-bestanden snel kunt comprimeren met Aspose.PDF voor .NET, inclusief codevoorbeelden en prestatie‑tips. + ## Aanvullende bronnen - [Aspose.PDF voor Netdocumentatie](https://docs.aspose.com/pdf/net/) diff --git a/pdf/dutch/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/dutch/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..8250a6ba0 --- /dev/null +++ b/pdf/dutch/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,202 @@ +--- +category: general +date: 2026-03-06 +description: Leer hoe je PDF direct kunt comprimeren met Aspose.Pdf. Deze gids laat + zien hoe je de PDF-bestandsgrootte kunt verkleinen met verliesloze PDF-compressie. +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: nl +og_description: Hoe pdf comprimeren met Aspose.Pdf? Volg deze stapsgewijze tutorial + om de pdf‑grootte te verkleinen, verliesloze pdf‑compressie te bereiken en geoptimaliseerde + pdf‑bestanden op te slaan. +og_title: Hoe PDF te comprimeren met Aspose.Pdf – snelle gids +tags: +- pdf +- aspnet +- csharp +title: hoe pdf te comprimeren met Aspose.Pdf – snelle gids +url: /nl/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# hoe pdf comprimeren met Aspose.Pdf – snelle gids + +Heb je je ooit afgevraagd **hoe je pdf** bestanden kunt comprimeren zonder ze in een wazige rommel te veranderen? Je bent niet de enige. De meeste ontwikkelaars lopen tegen een muur aan wanneer ze **pdf bestandsgrootte moeten verkleinen** voor e‑mailbijlagen, webuploads of opslaglimieten, maar ze vrezen kwaliteitsverlies van afbeeldingen. + +In deze tutorial lopen we een volledig, kant‑klaar voorbeeld door dat je precies laat zien **hoe je pdf** comprimeert met de ingebouwde optimizer van Aspose.Pdf. Aan het einde weet je hoe je **pdf bestandsgrootte kunt verkleinen**, je afbeeldingen scherp houdt met **lossless pdf compression**, en uiteindelijk **geoptimaliseerde pdf** bestanden opslaat die goed werken met elke viewer. + +## Wat je zult leren + +- Laad een zware PDF (bijv. een met hoge resolutie afbeeldingen) in het geheugen. +- Pas de optimizer van Aspose.Pdf toe met de standaard lossless instellingen. +- Sla het resultaat op als een nieuw, kleiner bestand. +- Tips voor het aanpassen van compressie als je een nog kleinere bestandsgrootte nodig hebt. + +Geen externe tools, geen mysterieuze command‑line trucjes—alleen schone C# code en duidelijke uitleg. + +## Vereisten + +| Vereiste | Waarom het belangrijk is | +|----------|--------------------------| +| .NET 6.0 of later (of .NET Framework 4.6+) | Aspose.Pdf ondersteunt beide; nieuwere runtimes geven betere prestaties. | +| Aspose.Pdf for .NET NuGet‑pakket (`Aspose.Pdf`) | De `Document`‑klasse bevindt zich hier. | +| Een PDF met grote afbeeldingen (bijv. `HeavyImages.pdf`) | Geeft je iets concreets om te verkleinen. | +| Visual Studio, Rider, of elke C#‑editor die je prefereert | Comfort is belangrijk—kies wat natuurlijk aanvoelt. | + +> **Pro tip:** Als je een CI/CD‑pipeline gebruikt, voeg dan de NuGet‑referentie toe in je `.csproj` zodat de build het nooit vergeet. + +```xml + + + +``` + +## Stap 1: Laad de PDF die je wilt comprimeren + +Eerst hebben we een `Document`‑object nodig dat naar het bronbestand wijst. Beschouw het als het openen van een boek voordat je de hoofdstukken gaat bewerken. + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*Waarom dit belangrijk is:* Het laden van het bestand geeft Aspose.Pdf de kans om alle ingebedde resources (afbeeldingen, lettertypen, enz.) te lezen. Zonder deze stap is er niets om **pdf bestandsgrootte te verkleinen**. + +## Stap 2: Pas lossless PDF compressie toe + +Aspose.Pdf wordt geleverd met een `Optimize`‑methode die standaard een **lossless pdf compression**‑routine uitvoert. Het verwijdert overbodige objecten, recomprimeert afbeeldingen met dezelfde visuele kwaliteit, en verwijdert ongebruikte lettertypen. + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*Waarom dit belangrijk is:* De standaard optimizer is ontworpen om **pdf bestandsgrootte te verkleinen** terwijl elke pixel behouden blijft. Als je later besluit een kleine kwaliteitsvermindering te tolereren, laat de uitgecommentarieerde `OptimizationOptions` je een paar extra kilobytes ruilen voor snelheid. + +## Stap 3: Sla de geoptimaliseerde PDF op + +Nu het document slanker is, schrijven we het naar een nieuw bestand. Het origineel ongewijzigd laten is een goede gewoonte, vooral wanneer je verschillende instellingen test. + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +Na het opslaan, vergelijk de bestandsgroottes: + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +Je zou een merkbare daling moeten zien—vaak **30‑70 %** afhankelijk van hoeveel hoge‑resolutie afbeeldingen er in de bron zaten. + +![hoe pdf comprimeren illustratie](image.png "hoe pdf comprimeren") + +*Afbeelding alt-tekst:* hoe pdf comprimeren – voor en na optimalisatie + +## Geavanceerd: Compressie aanpassen voor specifieke scenario's + +Hoewel de standaard optimizer uitstekend is voor de meeste gevallen, moet je soms **pdf bestandsgrootte nog verder verkleinen**: + +| Scenario | Aan te passen instelling | Effect | +|----------|--------------------------|--------| +| PDF's met veel rasterafbeeldingen | `CompressImages = true` + lagere `ImageQuality` (bijv. 70) | Vermindert het aantal bytes van afbeeldingen, lichte visuele verlies. | +| PDF's met dubbele lettertypen | `RemoveUnusedObjects = true` | Verwijdert lettertypen die niet worden gerefereerd. | +| PDF's met grote metadata | `RemoveMetadata = true` | Verwijdert verborgen XML/metadata blokken. | + +Je kunt deze combineren in een `OptimizationOptions`‑object en doorgeven aan `pdfDoc.Optimize(options)`. + +## Veelgestelde vragen & randgevallen + +**Wat als de PDF al geoptimaliseerd is?** +Aspose.Pdf zal het document nog steeds scannen, maar de grootte‑verandering zal minimaal zijn. Het uitvoeren van de optimizer op een al slank bestand is veilig; het zal niets beschadigen. + +**Kan ik versleutelde PDF's comprimeren?** +Ja, maar je moet het wachtwoord opgeven voordat je `Optimize` aanroept. Voorbeeld: + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**Hoe zit het met PDF's met vectorafbeeldingen?** +Vectorobjecten zijn al lichtgewicht, dus de optimizer richt zich op rasterafbeeldingen en metadata. Verwacht bescheiden winst voor pure‑vector bestanden. + +## Volledig, uitvoerbaar voorbeeld + +Hieronder staat een zelfstandige console‑app die je kunt kopiëren‑plakken in een nieuw `.csproj`. Het demonstreert alles wat besproken is—van laden tot verificatie. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +Voer het programma uit, open `Optimized.pdf` in een willekeurige viewer, en je ziet dezelfde paginalay-out, dezelfde scherpe afbeeldingen, maar een slanker bestand. Dat is de magie van **lossless pdf compression**. + +## Conclusie + +We hebben **hoe je pdf** bestanden behandeld met de ingebouwde optimizer van Aspose.Pdf, een praktische **pdf bestandsgrootte verkleinen** workflow gedemonstreerd, en de onderliggende redenen voor elke stap uitgelegd. Door het drie‑stappenpatroon te volgen—laden, optimaliseren, opslaan—kun je **pdf bestandsgrootte verkleinen** on‑the‑fly, je afbeeldingen intact houden met **lossless pdf compression**, en vol vertrouwen **geoptimaliseerde pdf** bestanden opslaan voor downstream consumptie. + +Klaar voor de volgende uitdaging? Probeer deze optimizer te koppelen met een batch‑script om een hele map te verwerken, of experimenteer met de optionele `OptimizationOptions` om die laatste kilobytes eruit te persen. Dezelfde principes gelden of je nu werkt aan een desktop‑tool, een web‑API, of een server‑side batch‑taak. + +Heb je meer vragen over PDF‑verwerking, Aspose.Pdf eigenaardigheden, of .NET bestand‑I/O? Laat een reactie achter hieronder, en laten we het gesprek voortzetten. Veel plezier met comprimeren! + +{{< /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/programming-with-security-and-signatures/_index.md b/pdf/dutch/net/programming-with-security-and-signatures/_index.md index e62bf39d7..1454140e6 100644 --- a/pdf/dutch/net/programming-with-security-and-signatures/_index.md +++ b/pdf/dutch/net/programming-with-security-and-signatures/_index.md @@ -34,6 +34,8 @@ De tutorial geeft u een gedetailleerd overzicht van methoden en technieken om de | [Ondertekenen met smartcard met behulp van PDF-bestandshandtekening](./sign-with-smart-card-using-pdf-file-signature/) | Leer hoe u PDF-bestanden ondertekent met een smartcard met Aspose.PDF voor .NET. Volg deze stapsgewijze handleiding voor veilige digitale handtekeningen. | | [Ondertekenen met smartcard met behulp van handtekeningveld](./sign-with-smart-card-using-signature-field/) | Leer hoe u PDF's veilig kunt ondertekenen met een smartcard met Aspose.PDF voor .NET. Volg onze stapsgewijze handleiding voor eenvoudige implementatie. | | [PDF-handtekeningen controleren in C# – Hoe ondertekende PDF-bestanden te lezen](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) | Leer hoe u ondertekende PDF-bestanden kunt lezen en handtekeningen kunt verifiëren met Aspose.PDF voor .NET in C#. | +| [Hoe handtekening te verifiëren in PDF met C# – Complete Aspose-gids](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) | Leer hoe u PDF-handtekeningen kunt verifiëren met C# en Aspose.PDF. Stapsgewijze handleiding voor authenticiteit van documenten. | +| [Digitale handtekening toevoegen aan PDF in C# – Complete stap‑voor‑stap gids](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) | Leer hoe u een digitale handtekening toevoegt aan een PDF in C# met Aspose.PDF voor .NET. Volg de volledige stap‑voor‑stap gids. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/dutch/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/dutch/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..562975cb7 --- /dev/null +++ b/pdf/dutch/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-03-06 +description: Digitale handtekening toevoegen aan PDF met Aspose.PDF. Leer hoe je een + PKCS7 detached-handtekening maakt en een PDF ondertekent met een pfx via een aangepaste + callback. +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: nl +og_description: Voeg snel een digitale handtekening toe aan PDF. Deze gids laat zien + hoe je een PKCS7 detached-handtekening maakt en een PDF ondertekent met een PFX + in C#. +og_title: Digitale handtekening toevoegen aan PDF in C# – Volledige programmeertutorial +tags: +- Aspose.PDF +- C# +- Digital Signature +title: Digitale handtekening toevoegen aan PDF in C# – Complete stapsgewijze handleiding +url: /nl/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Digitale Handtekening PDF Toevoegen – Complete Stapsgewijze Gids + +Heb je ooit **add digital signature pdf** bestanden moeten toevoegen maar wist je niet waar te beginnen? Je bent niet de enige; veel ontwikkelaars lopen tegen dezelfde muur aan wanneer de papierwerk een juridisch bindende handtekening vereist en de codebasis alleen weet hoe platte PDF's te genereren. + +In deze tutorial lopen we stap voor stap door een praktische oplossing waarmee je **add digital signature pdf** documenten kunt toevoegen met Aspose.PDF voor .NET, een PKCS#7 detached signature kunt maken en de PDF kunt ondertekenen met een PFX‑certificaat – allemaal in pure C#. Aan het einde heb je een kant‑klaar fragment, begrijp je het “waarom” achter elke aanroep, en weet je hoe je de aanpak kunt aanpassen voor randgevallen. + +## Wat je zult leren + +- Hoe een niet‑ondertekende PDF te laden en voor te bereiden op ondertekening. +- De werking van een **create pkcs7 detached signature** en waarom je een detached boven een embedded zou kunnen verkiezen. +- De exacte stappen om **sign pdf using pfx** te gebruiken met een aangepaste callback, waardoor je volledige controle krijgt over het cryptografische proces. +- Tips voor het oplossen van veelvoorkomende valkuilen (ontbrekend certificaat, verkeerd hash‑algoritme, enz.). + +### Vereisten + +| Vereiste | Reden | +|----------|-------| +| .NET 6.0 or later | Moderne taalfeatures en beter geheugenbeheer. | +| Aspose.PDF for .NET (NuGet package) | Biedt `PdfFileSignature`, `PKCS7Detached` en andere PDF‑hulpmiddelen. | +| A valid PFX file (`.pfx`) with private key | Nodig voor de **sign pdf using pfx** stap. | +| Basic C# knowledge | De code is eenvoudig, maar begrip van `using`‑statements helpt. | + +> **Pro tip:** Houd je PFX‑wachtwoord buiten versiebeheer — gebruik omgevingsvariabelen of Azure Key Vault voor productie. + +--- + +## Hoe Digitale Handtekening PDF Toevoegen met Aspose.PDF + +Hieronder splitsen we het proces in vijf behapbare stappen. Elke stap bevat een codefragment, een uitleg *waarom* het belangrijk is, en een snelle controle. + +![Screenshot of signed PDF in a viewer, showing a visible signature field](/images/add-digital-signature-pdf.png "add digital signature pdf example") + +### Stap 1 – Laad het Niet‑ondertekende PDF‑Document + +Eerst hebben we een `Document`‑object nodig dat de PDF vertegenwoordigt die je wilt ondertekenen. Het gebruik van `using var` zorgt ervoor dat de bestandshandle automatisch wordt vrijgegeven. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**Waarom?** +Aspose behandelt een PDF als een objectgrafiek; het laden ervan geeft je toegang tot pagina's, annotaties en de interne byte‑stroom die later wordt gehasht voor de handtekening. + +### Stap 2 – Initialise de PdfFileSignature Helper + +`PdfFileSignature` is de klasse die daadwerkelijk de cryptografische envelop toepast. Het werkt hand‑in‑hand met `PKCS7Detached`. + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**Waarom?** +Door de ondertekenaar van het document te scheiden kun je dezelfde `Document`‑instantie hergebruiken voor andere bewerkingen (bijv. watermerken toevoegen) voordat je de handtekening afrondt. + +### Stap 3 – Maak PKCS#7 Detached Signature (Create PKCS7 Detached Signature) + +Een **PKCS#7 detached signature** slaat alleen de hash van de PDF op, niet de PDF zelf. Dit is ideaal voor grote documenten of wanneer je het originele bestand ongewijzigd wilt houden. + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**Waarom een aangepaste callback?** +Soms bevindt de ondertekeningssleutel zich in een HSM of Azure Key Vault, en kun je de privésleutel niet direct extraheren. Door `CustomSignHash` te leveren geef je de hash door aan welke service de sleutel ook heeft, waardoor het private materiaal veilig blijft. + +**Wat als je geen aangepaste callback nodig hebt?** +Je kunt `CustomSignHash` weglaten; Aspose zal automatisch de privésleutel in de PFX gebruiken. De aangepaste route is echter flexibeler en voldoet beter aan compliance‑vereisten. + +### Stap 4 – Pas de Handtekening toe op een Specifieke Pagina (Sign PDF Using PFX) + +Nu plaatsen we daadwerkelijk een zichtbaar handtekeningveld op de pagina. Het rechthoek definieert de locatie en grootte (in points). + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**Waarom een rechthoek specificeren?** +Een zichtbare handtekening helpt eindgebruikers te zien dat het document is ondertekend. Als je `isVisible` op `false` zet, wordt de handtekening onzichtbaar — nog steeds geldig, maar moeilijker te ontdekken. + +**Randgeval:** Als de PDF geen pagina's heeft (leeg bestand) gooit de oproep een `ArgumentOutOfRangeException`. Controleer altijd `pdfDocument.Pages.Count > 0` vóór het ondertekenen. + +### Stap 5 – Sla de Ondertekende PDF op + +Tot slot, sla het ondertekende document op schijf op. Je kunt het ook direct naar een response streamen in ASP.NET Core. + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**Verificatietip:** Open het resulterende bestand in Adobe Acrobat Reader. Het handtekeningpaneel zou een groen vinkje moeten tonen (mits het certificaat vertrouwd is op de machine). + +## Volledig Werkend Voorbeeld + +Alles samenvoegend, hier is een zelfstandige console‑applicatie die je kunt kopiëren‑en‑plakken en uitvoeren (na het aanpassen van paden en wachtwoorden). + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**Verwachte output:** De console print “✅ PDF signed successfully!” en het bestand `CustomSigned.pdf` verschijnt in dezelfde map. Bij openen zie je een handtekeningwidget op de coördinaten (100,100)‑(300,200). + +## Veelgestelde Vragen & Randgevallen + +### Wat als mijn PFX beschermd is met een smartcard? + +Gebruik de `CustomSignHash`‑delegate om de hash door te sturen naar de smart‑card driver. De driver retourneert de handtekeningbytes, en Aspose embedt ze zonder de privésleutel ooit bloot te stellen. + +### Kan ik meerdere pagina's tegelijk ondertekenen? + +Ja. Roep `pdfSigner.Sign` aan binnen een lus, waarbij je `pageNumber` aanpast en eventueel de rechthoek voor elke pagina. Onthoud dat elke oproep een apart handtekeningobject toevoegt; sommige viewers kunnen ze afzonderlijk weergeven. + +### Hoe wijzig ik het hash‑algoritme? + +`PKCS7Detached` defaults to SHA‑256, but you can set `HashAlgorithm` property: + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +Zorg ervoor dat je ondertekeningsprovider het gekozen algoritme ondersteunt. + +### Wat als de certificaatketen niet vertrouwd wordt op de clientmachine? + +Neem de volledige keten op in de PFX, of distribueer het root‑certificaat naar de trust‑store van de eindgebruiker. Anders zal Acrobat “Signature is unknown” melden. + +### Is een detached signature compatibel met PDF/A‑3? + +PDF/A‑3 vereist embedded signatures, dus een detached PKCS#7 is mogelijk niet conform. In dat geval laat je de `CustomSignHash`‑delegate weg en laat je Aspose de ondertekening intern afhandelen, wat een embedded signature creëert. + +## Best Practices voor Productie + +1. **Hardcode nooit wachtwoorden.** Haal ze op uit omgevingsvariabelen of een secret manager. +2. **Valideer de PDF vóór ondertekening.** Beschadigde bestanden veroorzaken `PdfFileSignatureException`. +3. **Log het hash‑algoritme en de certificaat‑thumbprint** voor audit‑trails. +4. **Test met meerdere PDF‑viewers** (Adobe Reader, Foxit, Chrome) om te verzekeren dat de handtekening verschijnt zoals bedoeld. +5. **Overweeg timestamping** door een TSA‑verzoek (Time‑Stamp Authority) toe te voegen, wat de juridische status van de handtekening verder versterkt. + +## Conclusie + +We hebben je net laten zien hoe je **add digital signature pdf** bestanden kunt gebruiken met Aspose.PDF, een **PKCS#7 detached signature** kunt maken, en **sign pdf using pfx** met een aangepaste callback. Het volledige voorbeeld werkt direct, en de uitleg geeft je het vertrouwen om het proces aan te passen voor HSM's, timestamp‑services of PDF/A‑compliance. + +Vervolgens kun je **meerdere documenten in batch ondertekenen**, **Azure Key Vault** integreren voor veilige sleutelopslag, of **visuele aanpassing** toevoegen aan de handtekeningweergave. Elk van die onderwerpen bouwt direct voort op de hier gelegde basis. + +Als je de stappen hebt gevolgd, heb je nu een solide, citeerbare oplossing die je kunt delen met teamgenoten — of zelfs kunt refereren in een AI‑aangedreven assistent‑antwoord. Veel succes met ondertekenen, en voel je vrij een reactie achter te laten als iets niet helemaal duidelijk is! + +{{< /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/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/dutch/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..34a526e11 --- /dev/null +++ b/pdf/dutch/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,200 @@ +--- +category: general +date: 2026-03-06 +description: Leer hoe u een handtekening in een PDF kunt verifiëren met Aspose PDF + in C#. Stapsgewijze PDF‑handtekeningverificatie, valideer PDF‑handtekening en behandel + gecompromitteerde handtekeningen. +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: nl +og_description: Hoe een handtekening in een PDF te verifiëren met Aspose PDF. Volg + deze gids om pdf-handtekeningverificatie uit te voeren, pdf-handtekening te valideren + en gecompromitteerde handtekeningen te detecteren in C#. +og_title: Hoe een handtekening in PDF te verifiëren met C# – Complete Aspose-gids +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: Hoe een handtekening in PDF te verifiëren met C# – Complete Aspose-gids +url: /nl/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe een handtekening in PDF te verifiëren met C# – Complete Aspose‑gids + +Heb je je ooit afgevraagd **hoe je een handtekening** in een PDF kunt verifiëren zonder je haar uit te trekken? Je bent niet de enige. Veel ontwikkelaars lopen tegen een muur aan wanneer ze **pdf signature verification** nodig hebben voor compliance‑ of auditdoeleinden, en de gebruikelijke “vertrouw gewoon op de bibliotheek” aanpak kan averechts werken. + +In deze tutorial lopen we een praktische, end‑to‑end oplossing door die niet alleen **validate pdf signature** uitvoert, maar je ook vertelt of de handtekening is gemanipuleerd. We gebruiken de **Aspose PDF**‑bibliotheek, wat betekent dat de code werkt op .NET 6+, .NET Framework 4.6+ en zelfs .NET Core. Aan het einde heb je een kant‑klaar‑te‑run‑snippet die je in elk C#‑project kunt plaatsen. + +## Wat je nodig hebt + +- **Aspose.Pdf** NuGet‑package (nieuwste versie op het moment van schrijven – 23.12). +- .NET‑ontwikkelomgeving (Visual Studio, Rider of VS Code). +- Een ondertekend PDF‑bestand (we noemen het `Signed.pdf`). +- Basiskennis van C# – niets bijzonders, alleen de gebruikelijke `using`‑statements en `Console`‑I/O. + +Dat is alles. Geen extra services, geen obscure configuratiebestanden. Klaar? Laten we beginnen. + +![diagram hoe een handtekening te verifiëren](image.png "hoe een handtekening te verifiëren") + +## Stap 1: Stel je project in voor PDF‑handtekeningverificatie + +Voordat je een Aspose‑API kunt aanroepen, moet je de bibliotheek refereren. Open je terminal of Package Manager Console en voer uit: + +```bash +dotnet add package Aspose.Pdf +``` + +Of, als je de UI verkiest, zoek naar **Aspose.Pdf** in de NuGet Package Manager en installeer het. Deze stap is cruciaal omdat je zonder de **aspose pdf signature**‑assembly later de `PdfFileSignature`‑klasse niet kunt gebruiken. + +> **Pro tip:** Target .NET 6 of hoger om de beste prestaties te krijgen en legacy‑compatibiliteitswaarschuwingen te vermijden. + +## Stap 2: Laad het PDF‑document + +Nu het package geïnstalleerd is, kunnen we de PDF die we willen controleren laden. De `Document`‑klasse vertegenwoordigt het volledige bestand in het geheugen. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**Waarom dit belangrijk is:** Het laden van het document geeft ons toegang tot de interne structuren, inclusief de handtekeningvelden. Als het bestand ontbreekt of corrupt is, zal `Document` een uitzondering gooien, die je kunt opvangen voor een meer vriendelijke gebruikerservaring. + +## Stap 3: Maak het Aspose PdfFileSignature‑object aan + +Met het document in de hand, is de volgende stap het instantieren van `PdfFileSignature`. Deze façade‑klasse weet hoe digitale handtekeningen die in PDF’s zijn ingebed gelezen, geverifieerd en gemanipuleerd moeten worden. + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**Uitleg:** De `PdfFileSignature`‑constructor neemt het geladen `Document`. Intern parseert hij het handtekening‑dictionary, waardoor methoden zoals `VerifySignature` en `IsSignatureCompromised` beschikbaar worden. + +## Stap 4: Verifieer de integriteit van de handtekening + +Het hart van **pdf signature verification** is de `VerifySignature`‑methode. Deze retourneert `true` als de cryptografische hash overeenkomt met de opgeslagen waarde en de certificaatketen vertrouwd is (mits je een trust‑manager hebt ingesteld, wat we hier overslaan). + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +Als je meerdere handtekeningen hebt, wijzig dan eenvoudig de index (`0`, `1`, …). De methode controleert zowel integriteit als vertrouwen in één stap, waardoor het de go‑to is voor de meeste scenario’s. + +## Stap 5: Detecteer een gecompromitteerde handtekening + +Zelfs een “geldige” handtekening kan gecompromitteerd zijn als het document na ondertekening is aangepast. Aspose biedt `IsSignatureCompromised` om dat subtiele geval te detecteren. + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**Wanneer te gebruiken:** Stel, een PDF is ondertekend, daarna voegt een gebruiker een opmerking toe of wijzigt een pagina. De hash zal verschillen, en `IsSignatureCompromised` zal `true` teruggeven terwijl `VerifySignature` nog steeds `true` kan zijn als het certificaat zelf in orde is. Door beide vlaggen te controleren krijg je een volledig beeld. + +## Stap 6: Interpreteer de resultaten + +Nu hebben we twee booleans: `isSignatureValid` en `isSignatureCompromised`. Laten we ze omzetten naar een vriendelijke console‑output. + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### Verwachte uitvoer + +| Scenario | Console‑output | +|---------------------------------------------------|-------------------------------| +| Geldig en niet gecompromitteerd | `Signature OK` | +| Geldig maar gecompromitteerd (document gewijzigd) | `Signature compromised!` | +| Ongeldig (certificaat niet vertrouwd, hash mismatch) | `Signature verification failed` | + +Die tabel helpt je snel de booleaanse resultaten te vertalen naar menselijk leesbare berichten. + +## Volledig werkend voorbeeld + +Alles bij elkaar genomen, hier is het complete, kant‑klaar‑te‑run‑programma: + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +Kopieer, plak, pas de `pdfPath` aan en voer uit. Als alles correct is ingesteld, zie je een van de drie berichten die hierboven staan. + +## Veelvoorkomende valkuilen en tips voor PDF‑handtekeningverificatie + +| Probleem | Waarom het gebeurt | Hoe op te lossen / te vermijden | +|--------------------------------------------|---------------------------------------------------------------|---------------------------------| +| **Missing Aspose license** | De gratis evaluatie voegt een watermerk toe en kan sommige API‑calls beperken. | Registreer een licentie (`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`). | +| **Multiple signatures but wrong index** | Je controleert mogelijk de verkeerde handtekening, wat leidt tot valse negatieven. | Loop door `signatureVerifier.GetSignatureCount()` en inspecteer elke handtekening. | +| **Certificate chain not trusted** | `VerifySignature` faalt als de root‑CA niet in de vertrouwde store staat. | Voeg de ondertekenende CA toe aan de Windows Trusted Root store of configureer een aangepaste `CertificateValidator`. | +| **File locked by another process** | Een PDF die nog ergens anders open staat kan een `IOException` veroorzaken. | Gebruik een `FileStream` met `FileShare.ReadWrite` of kopieer eerst naar een tijdelijk bestand. | +| **Incorrect PDF path** | Een simpele typefout resulteert in `FileNotFoundException`. | Valideer het pad met `File.Exists(pdfPath)` voordat je laadt. | + +### Randgevallen die je kunt tegenkomen + +- **Detached signatures**: Sommige PDF’s slaan handtekeningen extern op. Aspose’s `PdfFileSignature` ondersteunt momenteel alleen ingebedde handtekeningen. +- **Timestamped signatures**: Als je de timestamp‑authority (TSA) moet verifiëren, moet je `VerifySignature` aanroepen met een aangepast `VerificationOptions`‑object – buiten de scope van deze snelle gids, maar wel relevant voor compliance‑zware projecten. + +## Volgende stappen – Je validatielogica uitbreiden + +Nu je de basis van **how to verify signature** onder de knie hebt, kun je overwegen om: + +1. **Validate PDF signature** tegen een lijst van vertrouwde certificaten (bijv. corporate PKI). +2. **Export signature details** (naam ondertekenaar, ondertekenings‑tijd, certificaat‑thumbprint) met `GetSignatureInfo`. +3. **Batch‑process multiple PDFs** in een map, en log de resultaten naar een CSV voor auditdoeleinden. + +Al deze uitbreidingen zijn eenvoudige voortzettingen van de code die we net hebben behandeld, en ze houden je binnen hetzelfde **aspose pdf signature**‑ecosysteem. + +--- + +**In een notendop**, je weet nu precies **hoe je een handtekening** in een PDF kunt verifiëren met C# en Aspose, hoe je een gecompromitteerde handtekening detecteert, en wat je moet doen wanneer de verificatie faalt. De aanpak is robuust, werkt met meerdere handtekeningen, en kan worden geïntegreerd in grotere document‑verwerkings‑pipelines. + +Heb je een andere draai aan dit scenario? Misschien moet je PDF’s ondertekenen in plaats van ze te verifiëren, of werk je met versleutelde PDF’s. Laat een reactie achter, dan verkennen we die hoeken samen. Happy coding! + +{{< /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/programming-with-stamps-and-watermarks/_index.md b/pdf/dutch/net/programming-with-stamps-and-watermarks/_index.md index a177cfdc5..f186d6e40 100644 --- a/pdf/dutch/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/dutch/net/programming-with-stamps-and-watermarks/_index.md @@ -39,6 +39,7 @@ De tutorials "Programmeren met stempels en watermerken" van Aspose.PDF voor .NET | [Tabel in koptekst-voettekstsectie](./table-in-header-footer-section/) | Leer hoe u eenvoudig tekst toevoegt aan de voettekst van een PDF-bestand met Aspose.PDF voor .NET. Inclusief stapsgewijze handleiding voor naadloze integratie. | | [Tekst in voettekst van PDF-bestand](./text-in-footer/) | Leer hoe u tekst toevoegt in de voettekst van een PDF-bestand met Aspose.PDF voor .NET. | | [Tekst in koptekst van PDF-bestand](./text-in-header/) | Leer hoe u tekstkoppen aan PDF's toevoegt met Aspose.PDF voor .NET met deze stapsgewijze tutorial. Verbeter uw documenten efficiënt en effectief. | +| [PDF-document maken met Bates-nummering in C# – Volledige gids](./create-pdf-document-with-bates-numbering-in-c-full-guide/) | Leer hoe u met Aspose.PDF voor .NET een PDF-document maakt en Bates-nummering toevoegt via een stapsgewijze handleiding. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/dutch/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/dutch/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..1f80ea4cb --- /dev/null +++ b/pdf/dutch/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,184 @@ +--- +category: general +date: 2026-03-06 +description: Maak een PDF‑document in C# en voeg eenvoudig batesnummers toe. Leer + hoe je een lege pagina aan een PDF toevoegt, een stempel op een pagina plaatst en + batesnummering implementeert. +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: nl +og_description: Maak een PDF‑document in C# en voeg een batesnummer toe. Deze gids + laat zien hoe je een lege PDF‑pagina toevoegt, een stempel op de pagina plaatst + en batesnummering toepast. +og_title: PDF-document maken met Bates-nummering – C#-tutorial +tags: +- Aspose.Pdf +- C# +- PDF automation +title: PDF-document maken met Bates-nummering in C# – Volledige gids +url: /nl/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF‑document maken met Bates‑nummering in C# + +Heb je ooit een **PDF‑document** moeten maken in C# en je afgevraagd hoe je een Bates‑nummer toevoegt zonder je haar uit te trekken? Je bent niet de enige—advocatenkantoren, rechtbanken en zelfs sommige corporate compliance‑teams staan elke dag voor precies dit vraagstuk. Het goede nieuws? Met een paar regels Aspose.Pdf‑code kun je een gloednieuwe PDF genereren, een lege pagina toevoegen en een correct Bates‑nummer in één soepele flow plaatsen. + +In deze tutorial lopen we het volledige proces door: van het opzetten van het project, tot het toevoegen van een lege pagina‑PDF, tot het uitzoeken **hoe je Bates‑nummering toevoegt**, en uiteindelijk **het stempel op de pagina plaatsen** en het resultaat opslaan. Aan het einde heb je een kant‑klaar fragment dat je in elke .NET‑app kunt gebruiken. Geen vage verwijzingen, alleen een compleet, uitvoerbaar voorbeeld. + +## Wat je nodig hebt + +- **.NET 6+** (of .NET Framework 4.6+ – Aspose.Pdf werkt met beide) +- **Aspose.Pdf for .NET** NuGet‑package (`Install-Package Aspose.Pdf`) +- Een degelijke IDE (Visual Studio, Rider, of VS Code met C#‑extensie) + +Dat is alles. Geen extra DLL‑s, geen externe services. Laten we beginnen. + +## Stap 1: PDF‑document maken – Initiële setup + +Allereerst hebben we een verse `Document`‑object nodig. Beschouw het als het lege canvas waarop alles andere zal leven. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **Waarom dit belangrijk is:** De `Document`‑klasse is het startpunt voor elke Aspose‑bewerking. Een instantie maken geeft je toegang tot de `Pages`‑collectie, metadata en beveiligingsinstellingen—alle bouwstenen voor een professioneel PDF‑document. + +## Stap 2: Lege pagina‑PDF toevoegen + +Een PDF zonder pagina's is als een boek zonder bladzijden—tamelijk nutteloos. Het toevoegen van een lege pagina is eenvoudig, en het geeft ons een oppervlak om het Bates‑nummer op te stempelen. + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **Pro‑tip:** Als je meerdere pagina's nodig hebt, roep dan `pdfDocument.Pages.Add()` aan in een lus. Elke aanroep retourneert een nieuw `Page`‑object dat je onafhankelijk kunt aanpassen. + +## Stap 3: Hoe Bates‑nummering toe te voegen – De TextStamp maken + +Nu komt het hart van de zaak: het **Bates‑nummer**. In Aspose.Pdf is het gewoon een `TextStamp` met een speciale artifact‑vlag. + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **Waarom we `Artifact` instellen:** Sommige PDF‑readers tonen Bates‑nummers als doorzoekbare metadata. Het markeren van het stempel als een `BatesNumbering`‑artifact zorgt ervoor dat downstream‑tools het automatisch herkennen. + +## Stap 4: Stempel op pagina plaatsen + +Met het stempel klaar, **plaatsen we het stempel op de pagina**. Dit is de stap waarin het visuele nummer daadwerkelijk in de PDF verschijnt. + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **Randgeval:** Als je wilt dat het nummer op elke pagina oploopt, doorloop je `pdfDocument.Pages` en werk je `batesStamp.Value` bij voordat je `AddStamp` aanroept. Het voorbeeld hier houdt het simpel met een statisch “Bates‑001”. + +## Stap 5: Opslaan en resultaat verifiëren + +Tot slot slaan we de PDF op schijf op. Kies een map waarin je schrijfrechten hebt; anders krijg je een `UnauthorizedAccessException`. + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +Wanneer je `BatesStamped.pdf` opent in een viewer, zou je een klein “Bates‑001” netjes in de rechter‑onderhoek van de lege pagina moeten zien. + +> **Verwachte output:** +> ![PDF met Bates‑nummerstempel](image-placeholder.png "PDF met Bates‑nummerstempel") +> *Alt‑tekst: PDF met Bates‑nummerstempel in de rechter‑onderhoek.* + +Als het nummer niet verschijnt, controleer dan de marge‑waarden en zorg dat de paginagrootte niet te klein is (standaard A4 werkt prima). Controleer ook of de `Artifact`‑vlag niet wordt verwijderd door eventuele post‑processing‑tools. + +## Volledig werkend voorbeeld + +Hieronder staat het complete, kant‑en‑klaar programma. Het bevat alle `using`‑directieven en commentaren om je georiënteerd te houden. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +Voer het programma uit, open de PDF, en je ziet het Bates‑nummer precies op de plek waar we het hebben geplaatst. 🎉 + +## Veelvoorkomende variaties & valkuilen + +| Scenario | Wat te wijzigen | Waarom | +|----------|----------------|--------| +| **Meerdere pagina's, oplopende nummers** | Doorloop `pdfDocument.Pages`, stel `batesStamp.Value = $"Bates-{i:D3}"` in vóór `AddStamp` | Geeft elke pagina een uniek identificatienummer, gebruikelijk voor juridische bundels | +| **Andere plaatsing (boven‑links)** | Verander `HorizontalAlignment = HorizontalAlignment.Left` en `VerticalAlignment = VerticalAlignment.Top` | Sommige organisaties geven de voorkeur aan het nummer in de header in plaats van de footer | +| **Aangepast lettertype of kleur** | Stel `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` in | Verbetert leesbaarheid of voldoet aan huisstijlrichtlijnen | +| **Een bestaande PDF als achtergrond toevoegen** | Laad de bron‑PDF met `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` | Handig wanneer je over een vooraf gegenereerd formulier moet stempelen | + +## Afronding + +We hebben zojuist laten zien hoe je **PDF‑document** maakt, **een lege pagina‑pdf** toevoegt, en **Bates‑nummer** toepast met Aspose.Pdf voor .NET, vervolgens **stempel op pagina** plaatst en het bestand opslaat. De code is bewust compact gehouden zodat je hem kunt aanpassen aan grotere workflows—of je nu tientallen bestanden batch‑verwerkt of integreert in een webservice. + +Als je klaar bent om verder te gaan, overweeg dan: + +- Het automatiseren van de increment‑logica voor grote dossiers. +- Het embedden van de PDF‑generatie in een ASP.NET Core API. +- Het toevoegen van beveiliging (wachtwoordbeveiliging) met `pdfDocument.Encrypt(...)`. + +Voel je vrij om te experimenteren, dingen kapot te maken, en vragen te stellen in de reacties. Veel programmeerplezier, en moge je PDF‑bestanden altijd perfect gestempeld zijn! + +{{< /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/programming-with-tagged-pdf/_index.md b/pdf/dutch/net/programming-with-tagged-pdf/_index.md index f54eeacb5..d1b0b5f18 100644 --- a/pdf/dutch/net/programming-with-tagged-pdf/_index.md +++ b/pdf/dutch/net/programming-with-tagged-pdf/_index.md @@ -45,6 +45,7 @@ De tutorials "Programmeren met getagde PDF's" van Aspose.PDF voor .NET begeleide | [Tekststructuurelementen in PDF-bestand](./text-structure-elements/) Leer hoe u tekststructuurelementen in PDF's kunt bewerken met Aspose.PDF voor .NET. Deze stapsgewijze handleiding behandelt alles wat u nodig hebt om gestructureerde PDF's te maken. | | [PDF-bestand valideren](./validate-pdf/) | Leer hoe u een PDF-bestand valideert met Aspose.PDF voor .NET. Controleer de naleving van de standaarden en genereer een validatierapport. | | [Maak getagde PDF in C# – Complete stapsgewijze handleiding](./create-tagged-pdf-in-c-complete-step-by-step-guide/) | Leer hoe u met Aspose.PDF voor .NET een getagde PDF in C# maakt, stap voor stap met volledige voorbeelden. | +| [Maak getagde PDF in C# – Stapsgewijze handleiding](./create-tagged-pdf-in-c-step-by-step-guide/) | Leer hoe u met Aspose.PDF voor .NET een getagde PDF in C# maakt, stap voor stap met voorbeeldcode. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/dutch/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/dutch/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..09d326bf5 --- /dev/null +++ b/pdf/dutch/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,282 @@ +--- +category: general +date: 2026-03-06 +description: Maak een getagde PDF met Aspose.Pdf in C#. Leer hoe je een afbeelding + aan een PDF toevoegt, de positie van de afbeelding instelt en de PDF tagt voor toegankelijkheid. +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: nl +og_description: Maak een getagde PDF met Aspose.Pdf. Deze gids laat zien hoe je een + afbeelding aan een PDF toevoegt, de positie van de afbeelding instelt en de PDF + tagt voor toegankelijkheid. +og_title: Maak een getagde PDF in C# – Volledige tutorial +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: Maak een getagde PDF in C# – Stapsgewijze gids +url: /nl/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Maak een getagde PDF in C# – Volledige tutorial + +Heb je ooit een **getagde PDF** moeten maken in C# maar wist je niet waar je moest beginnen? Je bent niet de enige; toegankelijkheid is tegenwoordig een must, en een getagde PDF is de ruggengraat van een conform document. In deze tutorial lopen we een praktijkvoorbeeld door dat **een afbeelding aan een PDF toevoegt**, de positie van de afbeelding instelt, en laat zien **hoe je een PDF tagt** met Aspose.Pdf. Aan het einde heb je een volledig getagde PDF die je naar iedereen kunt sturen. + +We behandelen alles, van het laden van een bestaand bestand tot het opslaan van de uiteindelijke output, zodat je niet elders hoeft te zoeken naar “hoe voeg je een afbeelding toe”. Geen poespas—alleen een duidelijke, uitvoerbare oplossing die werkt met Aspose.Pdf 23.8 (de nieuwste op het moment van schrijven). Pak je IDE en laten we beginnen. + +--- + +## Wat je nodig hebt + +- **Aspose.Pdf for .NET** (NuGet‑pakket `Aspose.Pdf`). +- .NET 6+ (of .NET Framework 4.7.2+). +- Een invoer‑PDF die al een logische structuur heeft (d.w.z. die al getagd is) – zo niet, kun je tagging inschakelen via `pdfDocument.TaggedContent = true`. +- Een afbeeldingsbestand (`image.png`) dat je wilt insluiten. + +Dat is alles. Geen extra libraries, geen obscure configuratiebestanden. + +--- + +## Stap 1: Laad het bestaande PDF‑document (Maak basis voor getagde PDF) + +Het eerste wat we doen is de PDF openen die we willen uitbreiden. Het laden van het bestand geeft ons toegang tot de logische structuur, wat essentieel is voor **create tagged pdf**‑workflows. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*Waarom dit belangrijk is:* Zonder een tag‑boom zal de PDF geen structurele informatie aan schermlezers doorgeven. Tagging inschakelen zorgt ervoor dat alle nieuwe elementen die we toevoegen (zoals een figuur) de juiste hiërarchie overnemen. + +--- + +## Stap 2: Toegang tot de logische structuur‑root (Hoe een PDF taggen) + +Nu gaan we de logische structuur van de PDF benaderen. Het root‑element is de container voor alle tags—denk aan de outline van het document. + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*Uitleg:* `logicalRoot` laat ons nieuwe tags toevoegen zoals `
` of `
`. Dit is de kern van **how to tag PDF** programmatically. + +--- + +## Stap 3: Maak een Figure‑tag en stel de positie in (Figure‑positie instellen) + +Een *Figure*‑tag groepeert visuele inhoud met een optionele bijschrift. We maken er één, stellen de positie in en koppelen deze aan de root. + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*Waarom we een positie instellen:* De **set figure position**‑stap bepaalt waar het visuele element op de pagina terechtkomt. Als je dit overslaat, kan de figuur op een onverwachte plek verschijnen of onzichtbaar zijn voor assistieve technologie. + +--- + +## Stap 4: Voeg een visuele weergave toe – Plaats een afbeelding (Afbeelding aan PDF toevoegen) + +Met de tag op zijn plaats hebben we een echte afbeelding nodig. Dit is het deel dat **add image to pdf** beantwoordt. + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*Belangrijk punt:* De rechthoek‑coördinaten moeten overeenkomen met de `figureTag.Position` die we eerder hebben gedefinieerd; anders komen de figuur en de visuele inhoud niet overeen, waardoor de toegankelijkheid wordt verbroken. + +--- + +## Stap 5: Sla de bijgewerkte PDF op (Voltooi het maken van een getagde PDF) + +Tot slot schrijven we de wijzigingen weg naar een nieuw bestand. Het origineel ongewijzigd laten is een goede gewoonte. + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +Op dit moment heb je een **create tagged pdf**‑bestand dat een correct gepositioneerde afbeelding bevat, ingesloten in een `
`‑tag. Open `output.pdf` in Adobe Acrobat en controleer het *Tags*‑paneel – je zou een `Figure`‑node onder de root moeten zien. + +--- + +## Volledig, kant‑klaar voorbeeld + +Hieronder staat het complete programma dat je kunt kopiëren‑plakken in een console‑applicatie. Alle stappen staan al in de juiste volgorde. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### Verwacht resultaat + +- `output.pdf` opent met de afbeelding weergegeven op (100, 150) punten, met een grootte van 300 × 200 punten. +- Het *Tags*‑venster toont een `Figure`‑element dat de afbeelding omsluit. +- Schermlezer‑tools kondigen “Figure” aan voordat ze de afbeelding beschrijven, waardoor aan de basis‑toegankelijkheidsnormen wordt voldaan. + +--- + +## Veelgestelde vragen & randgevallen + +### Wat als de bron‑PDF nog niet getagd is? + +Aspose.Pdf laat je tagging inschakelen door `pdfDocument.TaggedContent.IsTagged = true;` te zetten. De bibliotheek genereert dan een standaard tag‑boom, waarna je aangepaste tags kunt toevoegen zoals getoond. + +### Kan ik een bijschrift aan de figuur toevoegen? + +Ja. Nadat je `figureTag` hebt aangemaakt, kun je een `Paragraph` met een `TextFragment` koppelen en de `Tag` instellen op `Caption`. Voorbeeld: + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### Hoe plaats ik de figuur op een andere pagina? + +Vervang `var firstPage = pdfDocument.Pages[1];` door de gewenste paginanummer, bijv. `pdfDocument.Pages[3]`. Vergeet niet de `Position`‑coördinaten aan te passen als de paginagrootte verschilt. + +### Wat als ik meerdere afbeeldingen moet taggen? + +Maak voor elke afbeelding een nieuwe `Figure`, geef elke een unieke `Position` en voeg het bijbehorende `Image`‑object toe aan de juiste pagina. Een lus over een collectie afbeeldingen werkt prima. + +### Werkt dit met PDF/A‑conformiteit? + +Aspose.Pdf ondersteunt PDF/A‑1b, PDF/A‑2b en PDF/A‑3b. Bij het genereren van een PDF/A‑document moet je de compliance‑modus instellen vóór het opslaan: + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +De tag‑logica blijft hetzelfde. + +--- + +## Pro‑tips & valkuilen + +- **Pro tip:** Gebruik altijd absolute paden of `Path.Combine` om runtime‑foutmeldingen “bestand niet gevonden” te voorkomen. +- **Let op:** Niet‑overeenkomende coördinaten tussen de `Figure`‑tag en de `Image`‑rechthoek—assistieve technologieën vertrouwen op die uitlijning. +- **Prestatienota:** Als je veel pagina’s verwerkt, wikkel de image‑stream dan in een `using`‑block om bronnen snel vrij te geven. +- **Versiecontrole:** De getoonde API werkt met Aspose.Pdf 23.8+. Oudere versies kunnen iets andere klassennamen hebben (bijv. `LogicalStructureElement` in plaats van `FigureElement`). + +--- + +## Conclusie + +We hebben zojuist **create tagged pdf** van begin tot eind gemaakt, **add image to pdf** gedemonstreerd, en laten zien hoe je **set figure position** uitvoert terwijl we **how to tag pdf** en **how to add image** beantwoorden in één samenhangend voorbeeld. De code is klaar om te draaien, de uitleg behandelt het “waarom” achter elke stap, en je hebt nu een stevige basis om toegankelijke PDF’s te bouwen in C#. + +Klaar voor de volgende uitdaging? Probeer tabellen toe te voegen met `
`‑tags, of voeg een PDF/A‑2b‑compliance‑laag toe voor archiveringsdoeleinden. Hetzelfde patroon—laden, de logische structuur benaderen, een tag maken, visuele inhoud koppelen, opslaan—geldt voor de meeste PDF‑toegankelijkheidstaken. + +Als je ergens vastloopt of een use‑case hebt die hier niet wordt behandeld, laat dan een reactie achter. Veel succes met taggen, en veel plezier met het bouwen van PDF’s die iedereen kan lezen! + +![Diagram dat een PDF met een Figure‑tag en afbeelding toont – illustreert hoe je een getagde PDF maakt](placeholder-image.png "voorbeeld van create tagged pdf") + +{{< /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/digital-signatures/_index.md b/pdf/english/net/digital-signatures/_index.md index a7aa68149..f8302b081 100644 --- a/pdf/english/net/digital-signatures/_index.md +++ b/pdf/english/net/digital-signatures/_index.md @@ -44,6 +44,9 @@ Learn how to efficiently remove digital signatures from PDFs using Aspose.PDF .N ### [How to Verify PDF Signatures Using Aspose.PDF for .NET: A Comprehensive Guide](./verify-pdf-signatures-aspose-pdf-net/) Learn how to verify digital signatures in PDF files using Aspose.PDF for .NET. This guide covers setup, implementation, and practical applications. +### [How to Read Signatures in PDF with C# – Step‑by‑Step Guide](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +Learn how to read and extract digital signatures from PDF files using C# and Aspose.PDF for .NET in this step‑by‑step guide. + ### [verify pdf signature in C# – Complete Guide to Validate Digital Signature PDF](./verify-pdf-signature-in-c-complete-guide-to-validate-digital/) Learn how to verify PDF signatures in C# using Aspose.PDF for .NET. This guide covers validation steps and best practices. diff --git a/pdf/english/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/english/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..7485e689f --- /dev/null +++ b/pdf/english/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-03-06 +description: How to read signatures in a PDF using C#. Learn to load PDF document + C#, list PDF signatures, and get digital signatures PDF quickly and reliably. +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: en +og_description: How to read signatures in a PDF using C#. This guide shows how to + load PDF document C#, list PDF signatures, and retrieve digital signatures PDF in + a few easy steps. +og_title: How to Read Signatures in PDF with C# – Complete Guide +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: How to Read Signatures in PDF with C# – Step‑by‑Step Guide +url: /net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Read Signatures in PDF with C# – Complete Guide + +Ever wondered **how to read signatures** that are already embedded in a PDF file? Maybe you’re building a compliance dashboard, or you simply need to audit signed contracts before they hit your database. The good news is that with a few lines of C# and the Aspose.Pdf library you can pull the signature names right out of the file—no manual inspection required. + +In this tutorial we’ll walk through loading a PDF document in C#, listing PDF signatures, and getting digital signatures PDF information. By the end you’ll have a ready‑to‑run console app that prints every signature name it finds, plus tips for handling edge cases like password‑protected files. + +## Prerequisites + +- .NET 6.0 or later (the code works with .NET Framework 4.6+ as well) +- Aspose.Pdf for .NET (you can grab a free temporary license from the Aspose website) +- A PDF that already contains one or more digital signatures (the sample `MultiSigned.pdf` is included in the repo) + +> **Pro tip:** If you’re using Visual Studio, enable *Nullable Reference Types* to catch null‑related bugs early. + +## Step 1: Load the PDF Document in C# + +The first thing we need is a `Document` object that represents the PDF file on disk. Aspose.Pdf’s `Document` class handles everything from simple text extraction to complex form processing. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**Why this matters:** Loading the PDF validates that the file exists and is readable. If the file is corrupted or the path is wrong, we bail out early instead of running into cryptic errors later when we try to enumerate signatures. + +## Step 2: Create a `PdfFileSignature` Helper + +Aspose separates generic PDF handling (`Document`) from signature‑specific operations (`PdfFileSignature`). Instantiating this helper gives us access to methods like `GetSignatureNames()`. + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**Why this matters:** The `PdfFileSignature` class knows how to parse the PDF’s `/Sig` dictionary entries, which is where digital signatures live. Using it ensures we’re reading the signatures exactly as they were added, preserving any cryptographic metadata. + +## Step 3: Retrieve All Signature Names + +Now comes the core of **how to read signatures**: call `GetSignatureNames()`. This method returns a string array containing the *field names* of each signature. + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**What you’ll see:** If `MultiSigned.pdf` contains three signatures named `Signature1`, `Signature2`, and `Signature3`, the console output will be: + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## Step 4: (Optional) Verify Each Signature’s Validity + +Reading the names is often enough, but many projects also need to know whether each signature is still valid. Aspose lets you validate a signature by its field name: + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **Edge case:** If the PDF is password‑protected, you must supply the password before calling `VerifySignature`. Use `pdfDocument.Encrypt.Password = "yourPassword";` right after loading the document. + +## Full Working Example + +Below is the complete program you can copy‑paste into a new console project (`dotnet new console`). It includes all the steps, error handling, and optional verification. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**Expected output** (assuming three valid signatures): + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## Handling Common Variations + +| Situation | What to Change | Why | +|-----------|----------------|-----| +| **Password‑protected PDF** | Set `pdfDocument.Encrypt.Password = "yourPwd";` before creating `PdfFileSignature`. | Without the password the signature dictionaries are encrypted and `GetSignatureNames()` returns an empty array. | +| **Large PDFs ( > 100 MB )** | Use `pdfSigner.GetSignatureNames(0, 10)` to page through results (first parameter = start index). | Loading the entire signature list at once can consume a lot of memory. | +| **No signatures at all** | The code already prints a friendly warning. Consider logging this as an audit event. | Helps downstream processes decide whether to reject the file or ask the user for a signed version. | +| **Custom signature field names** | The method returns whatever field name was used during signing, e.g., `EmployeeApproval`. No extra work needed. | Allows you to map signatures back to business roles. | + +## Best Practices & Tips + +- **Dispose objects**: The `using var pdfSigner` pattern guarantees that native resources are released promptly. +- **License early**: Call `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` at the start of `Main` to avoid the evaluation watermark. +- **Thread safety**: If you’re processing many PDFs in parallel, instantiate a separate `PdfFileSignature` per thread. The class isn’t thread‑safe. +- **Logging**: For production, replace `Console.WriteLine` with a structured logger (Serilog, NLog) so you can capture the exact signature names for audit trails. +- **Version check**: The code works with Aspose.Pdf for .NET 23.10 and newer. Older versions may require `PdfSignature` instead of `PdfFileSignature`. + +## Conclusion + +We’ve covered **how to read signatures** from a PDF using C#. By loading the PDF document, creating a `PdfFileSignature` helper, and calling `GetSignatureNames()`, you can list every digital signature embedded in the file. Optional verification adds a layer of trust, and the sample code shows you exactly how to integrate this into a real‑world console app. + +Ready for the next step? Try combining this with Aspose’s `DigitalSignatureUtil` to extract signer certificates, or feed the signature list into a compliance dashboard that flags unsigned contracts. The possibilities are endless—just remember to **load PDF document C#**, **list PDF signatures**, and **get digital signatures PDF** whenever you need a quick audit. + +Happy coding, and may your PDFs always stay securely signed! + +{{< /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-conversion/_index.md b/pdf/english/net/document-conversion/_index.md index e4891a6bc..23ae8a56d 100644 --- a/pdf/english/net/document-conversion/_index.md +++ b/pdf/english/net/document-conversion/_index.md @@ -24,6 +24,7 @@ You'll learn how to specify conversion settings, extract text and images, retain | [Add Attachment to PDFA](./add-attachment-to-pdfa/) | Learn how to add attachments to a PDF/A document using Aspose.PDF for .NET with this step-by-step guide. | | [CGM To PDF Files](./cgm-to-pdf/) | Learn how to convert CGM files to PDF using Aspose.PDF for .NET with this step-by-step guide. Perfect for developers and designers alike. | | [Convert PDF to PDF/X‑4 in C# – Step‑by‑Step ASP.NET PDF Tutorial](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | Learn how to convert PDF to PDF/X‑4 using Aspose.PDF for .NET in this step‑by‑step ASP.NET tutorial. | +| [Aspose PDF Tutorial: Convert PDF to PDF/X‑4 in C#](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) | Learn how to convert PDF to PDF/X‑4 using Aspose.PDF for .NET in this step‑by‑step C# tutorial. | | [EPUB To PDF](./epub-to-pdf/) | Learn how to convert EPUB to PDF using Aspose.PDF for .NET with this step-by-step guide. Easy, efficient, and perfect for all users. | | [Get SVG Dimensions](./get-svg-dimensions/) | Learn how to use Aspose.PDF for .NET to convert SVG files to PDF with this step-by-step guide. Perfect for developers looking to manipulate PDFs. | | [HTML To PDF](./html-to-pdf/) | Learn how to convert HTML to PDF using Aspose.PDF for .NET with this comprehensive step-by-step guide. | diff --git a/pdf/english/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/english/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..10b003442 --- /dev/null +++ b/pdf/english/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-03-06 +description: Aspose PDF Tutorial shows how to use Aspose to load a PDF document in + C#, convert PDF to PDF/X‑4, and save the converted PDF efficiently. +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: en +og_description: Aspose PDF Tutorial explains how to load a PDF document in C#, convert + it to PDF/X‑4 format, and save the converted PDF with clear code examples. +og_title: 'Aspose PDF Tutorial: Convert PDF to PDF/X‑4 in C#' +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: 'Aspose PDF Tutorial: Convert PDF to PDF/X‑4 in C#' +url: /net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose PDF Tutorial: Convert PDF to PDF/X‑4 in C# + +Ever wondered how to use Aspose to turn a regular PDF into a PDF/X‑4 file without breaking a sweat? You're not the only one—developers often need a reliable way to **load PDF document C#**‑style, convert it, and then **save the converted PDF** for downstream workflows. In this guide, we’ll walk through a complete, runnable example that does exactly that, using the latest Aspose.Pdf for .NET. + +We’ll cover everything from installing the library, loading a source PDF, converting it to the PDF/X‑4 standard, and finally persisting the result on disk. By the end you’ll have a solid grasp of **how to use Aspose** for this common conversion scenario, plus tips for handling edge cases. + +## Prerequisites + +Before diving in, make sure you have: + +- .NET 6.0 or later (the code works on .NET Framework too, but .NET 6+ is recommended). +- A valid Aspose.Pdf for .NET license file (or you can run in evaluation mode for a quick test). +- Visual Studio 2022 or any C#‑compatible IDE. +- An input PDF file located at `YOUR_DIRECTORY/input.pdf`. + +No extra NuGet packages beyond `Aspose.Pdf` are required. + +## Install Aspose.Pdf via NuGet + +Open your terminal or Package Manager Console and run: + +```bash +dotnet add package Aspose.Pdf +``` + +That pulls the latest stable version (as of March 2026, version 23.12). If you prefer the UI, search for *Aspose.Pdf* in the NuGet Package Manager and install it. + +## Step 1: Load PDF Document in C# with Aspose + +The first thing you need to do is bring the source PDF into memory. Aspose’s `Document` class is the entry point. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**Why this matters:** Loading the file validates that the path exists and that the PDF isn’t corrupted. The `try/catch` block gives you a graceful way to surface errors—handy when the file comes from user uploads. + +## Step 2: Convert PDF to PDF/X‑4 Format + +PDF/X‑4 is a subset of PDF designed for reliable printing and archiving. Converting ensures that all fonts are embedded and that the file complies with industry standards. + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**Why choose `ConvertErrorAction.Delete`?** Some legacy PDFs contain elements (like unsupported annotations) that would otherwise stop the conversion. Deleting them keeps the process smooth, but you should review the output if you need those elements preserved. + +### Optional: Verify Conversion Success + +If you want to be extra sure, you can inspect the document’s `PdfFormat` after conversion: + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## Step 3: Save the Converted PDF File + +Now that the document is in PDF/X‑4 shape, write it back to disk. + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**Result you’ll see:** A new file named `Converted_PDFX4.pdf` appears in `YOUR_DIRECTORY`. Open it with any PDF viewer that supports PDF/X‑4 (Adobe Acrobat, Foxit, etc.) and you’ll notice that all fonts are embedded and the document complies with the PDF/X‑4 spec. + +![aspose pdf tutorial - converting PDF to PDF/X‑4](/images/aspose-pdf-conversion.png "aspose pdf tutorial showing PDF/X‑4 conversion result") + +*Image alt text includes the primary keyword, satisfying SEO requirements.* + +## Full End‑to‑End Example + +Putting it all together, here’s a self‑contained console app you can copy‑paste into a new C# project: + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +Run the program, and you should see console messages confirming each step. If anything goes wrong, the error messages point you to the exact stage. + +## Common Questions & Edge Cases + +### What if I need to keep annotations? + +`ConvertErrorAction.Delete` strips unsupported objects, including some annotations. Switch to `ConvertErrorAction.Keep` if preserving them is crucial, but test the output—some annotations may still cause compliance warnings. + +### How do I handle large PDFs (hundreds of MB)? + +Aspose.Pdf streams the file, so memory usage stays modest. However, you might want to increase the `System.GC` thresholds or process the document in chunks (e.g., convert page‑by‑page) for extremely large files. + +### Can I convert multiple files in a batch? + +Absolutely. Wrap the loading‑conversion‑saving logic in a `foreach` loop that iterates over a directory of PDFs. Remember to handle exceptions per file so one bad PDF doesn’t abort the whole batch. + +### Does this work on .NET Core on Linux? + +Yes. Aspose.Pdf is cross‑platform. Just ensure the `Aspose.Pdf` NuGet package is referenced and that you have the appropriate font files installed on the Linux host if you need text rendering. + +## Pro Tips from the Field + +- **Set a license early**: `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` – this removes the evaluation watermark and boosts performance. +- **Validate the output**: Use Aspose’s `PdfFormatValidator` to programmatically confirm PDF/X‑4 compliance before shipping the file. +- **Log conversion time**: Large batches benefit from timing each conversion (`Stopwatch`) to spot performance regressions. +- **Avoid hard‑coded paths**: Prefer configuration files or environment variables for `inputPath` and `outputPath`—makes the app portable. + +## Conclusion + +In this **Aspose PDF Tutorial** we demonstrated a clean, end‑to‑end workflow for **how to use Aspose** to **load PDF document C#**, convert it to the **PDF/X‑4** standard, and **save the converted PDF**. The snippet is fully runnable, explains the *why* behind each step, and highlights pitfalls you might encounter in real‑world projects. + +Now that you’ve got the basics down, you can extend the solution—batch process dozens of files, embed custom metadata, or integrate the conversion into a web API. The possibilities are wide open, and Aspose.Pdf gives you the tools to get there quickly. + +Got more questions about PDF processing with Aspose? Drop a comment, explore the official Aspose documentation, or experiment with the code above. Happy converting! + +{{< /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-creation/_index.md b/pdf/english/net/document-creation/_index.md index 07bc2bd7c..29a630a27 100644 --- a/pdf/english/net/document-creation/_index.md +++ b/pdf/english/net/document-creation/_index.md @@ -77,6 +77,12 @@ A code tutorial for Aspose.PDF Net ### [Create PDF Document with Aspose.PDF – Add Page, Shape & Save](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) Learn how to add a new page, draw shapes, and save the PDF using Aspose.PDF for .NET. +### [Create PDF Document with Aspose.PDF – Step‑by‑Step Guide](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +Learn how to create PDF documents using Aspose.PDF for .NET with a clear step‑by‑step guide. + +### [Create PDF Document with Aspose.PDF – Full C# Guide](./create-pdf-document-with-aspose-pdf-full-c-guide/) +Learn how to create PDF documents using Aspose.PDF for .NET with a comprehensive C# guide covering all essential features. + ## Additional Resources - [Aspose.PDF for Net Documentation](https://docs.aspose.com/pdf/net/) diff --git a/pdf/english/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/english/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..5a61fdcdd --- /dev/null +++ b/pdf/english/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-06 +description: Create pdf document in C# using Aspose.PDF – learn how to add blank pages + pdf, textbox, widget, and save pdf quickly. +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: en +og_description: Create pdf document in C# with Aspose.PDF. This guide shows how to + add blank pages pdf, textbox, widget, and how to save pdf. +og_title: Create PDF Document with Aspose.PDF – Complete C# Tutorial +tags: +- pdf +- csharp +- aspose +- forms +title: Create PDF Document with Aspose.PDF – Full C# Guide +url: /net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Create PDF Document with Aspose.PDF – Full C# Guide + +Ever needed to **create pdf document** from scratch in a .NET project and wondered where to start? You're not alone; many developers hit the same wall when the first requirement reads “generate a fillable PDF with the same textbox on three pages.” The good news? With Aspose.PDF you can spin up a professional‑looking PDF in just a handful of lines. + +In this tutorial we’ll walk through the whole process: from initializing a new PDF, **adding blank pages pdf**, inserting a **textbox**, replicating it with **widget** annotations, and finally **saving the PDF** to disk. By the end you’ll have a ready‑to‑use file named *MultiWidgetField.pdf* and a solid understanding of why each step matters. + +## What This Guide Covers + +- Prerequisites you need before you type a single line of code. +- Step‑by‑step creation of a PDF document using Aspose.PDF for .NET. +- How to add blank pages, a textbox form field, and additional widget instances. +- Tips for handling common pitfalls (e.g., page indexing, field naming collisions). +- A complete, copy‑and‑paste‑ready C# program you can run today. + +No external documentation links, no “see the API docs” shortcuts—everything you need is right here. + +## Prerequisites + +Before diving in, make sure you have: + +1. **.NET 6.0** (or any later version) installed on your machine. +2. An active **Aspose.PDF for .NET** license or a temporary evaluation key. +3. A development environment like **Visual Studio 2022** or **VS Code** with the C# extension. + +That’s it—nothing else required. + +## Step 1: Initialize the PDF Document and Add Blank Pages + +The first thing you do when you **create pdf document** programmatically is instantiate a `Document` object. Think of it as opening a brand‑new notebook. Then you add the pages you need; in our case three blank pages. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**Why this matters:** Aspose.PDF treats pages as a zero‑based collection internally, but its public API is 1‑based, so `Pages[1]` is the first page you just added. Adding pages up front gives you a canvas to place form fields later, and it’s far cheaper than inserting pages on the fly after the document has grown. + +> **Pro tip:** If you only need a single page, you can skip the loop and call `pdfDocument.Pages.Add()` once. Adding multiple pages in a loop keeps the code scalable. + +## Step 2: Define a TextBox Form Field on the First Page + +Now that we have three blank sheets, let’s drop a **textbox** onto the first one. A `TextBoxField` is a form element that end‑users can type into when the PDF is opened in Acrobat Reader or any PDF viewer that supports forms. + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**Why the rectangle coordinates?** Aspose.PDF uses points (1/72 of an inch). The rectangle `(100, 700, 300, 730)` places the textbox roughly halfway down the page, 200 pt wide and 30 pt tall. Adjust these numbers to fit your layout. + +> **Common question:** *Do I need to set the `Value` property?* +> No, it’s optional. Leaving it empty shows a blank field; setting a default can guide the user. + +## Step 3: Add Widget Annotations for the Same Field on Pages 2 and 3 + +A **widget** is the visual representation of a form field on a specific page. By default a field appears only on the page where it was created. To reuse the same textbox on other pages, you attach additional `WidgetAnnotation` objects to the field’s `Widgets` collection. + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**Why widgets?** Without them, the user would see the textbox only on page 1, even though the underlying field exists. Widgets let you share a single logical field across multiple pages, ensuring the entered text appears everywhere the field is displayed. + +> **Edge case:** If you need the textbox at different coordinates on each page, simply change the `Rectangle` values for each widget. + +## Step 4: Register the Field with the Document’s Form Collection + +Aspose.PDF keeps a central registry of all form fields. Adding the field to the `Form` collection makes it part of the PDF’s interactive form structure. + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +The second argument (`"Comment"`) is the field’s **fully qualified name**. It must be unique across the document; otherwise Aspose will throw an exception. + +## Step 5: Save the Resulting PDF – How to Save PDF + +Finally, we persist the in‑memory document to disk. This is the **how to save pdf** part of the tutorial. + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**Why specify an absolute path?** Using an absolute path avoids confusion about the working directory, especially when running the program from Visual Studio’s debugger. If you prefer a relative path, just ensure the folder exists before calling `Save`. + +### Expected Result + +Open *MultiWidgetField.pdf* in Adobe Acrobat Reader. You’ll see the same textbox on pages 1, 2, and 3. Type something into the field on any page—​the text instantly appears on the other pages because they share the same underlying form field. + +![Create PDF Document example showing a textbox on three pages](https://example.com/placeholder-image.png "Create PDF Document example") + +*Image alt text: Create PDF Document example showing a textbox on three pages.* + +## Full, Ready‑to‑Run Example + +Below is the complete program you can copy into a new console project (`dotnet new console`) and run. All steps are already ordered, and the code includes comments for clarity. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +Run the program, navigate to `C:\Temp\`, and open the generated PDF. You’ll see the three identical textboxes ready for user input. + +## Common Variations & Edge Cases + +| Scenario | What to Change | Why | +|----------|----------------|-----| +| **Different textbox size on each page** | Adjust the `Rectangle` values for each `WidgetAnnotation`. | Allows you to fit the field into varying layouts. | +| **Read‑only field** | Set `commentField.ReadOnly = true;`. | Prevents users from editing the content after initial fill. | +| **Multi‑line textbox** | Set `commentField.Multiline = true;` and increase the rectangle height. | Enables longer comments without scrolling. | +| **Adding a second field** | Create another `TextBoxField` (or any `FormField`) and repeat steps 2‑4 with a new name. | You can collect multiple pieces of information in the same PDF. | + +## Pro Tips & Pitfalls to Avoid + +- **Page Indexing:** Remember that `pdfDocument.Pages[1]` is the first page, not `[0]`. Mixing 0‑based and 1‑based indexes leads to “Index out of range” exceptions. +- **Field Naming Collisions:** Two fields cannot share the same fully qualified name. If you get an error about duplicate names, double‑check the string you pass to `Form.Add`. +- **License vs. Evaluation:** The evaluation version adds a watermark on each page. Deploy a valid license to remove it in production. +- **Performance:** Adding hundreds of pages in a loop is fine, but if you need to generate massive PDFs (thousands of pages), consider using + +{{< /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-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/english/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..ee028b34d --- /dev/null +++ b/pdf/english/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,240 @@ +--- +category: general +date: 2026-03-06 +description: Create PDF document using Aspose.PDF in C#. Learn how to add page PDF, + draw rectangle PDF, add shape PDF, and control rectangle border thickness—all in + one tutorial. +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: en +og_description: Create PDF document in C# with Aspose.PDF. This tutorial shows how + to add page PDF, draw rectangle PDF, add shape PDF, and set rectangle border thickness. +og_title: Create PDF Document with Aspose.PDF – Complete Guide +tags: +- Aspose.PDF +- C# +- PDF generation +title: Create PDF Document with Aspose.PDF – Step‑by‑Step Guide +url: /net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Create PDF Document with Aspose.PDF – Step‑by‑Step Guide + +Ever needed to **create PDF document** programmatically and weren’t sure where to start? You’re not alone—many developers hit the same wall when their apps need to spit out invoices, reports, or certificates on the fly. + +The good news is that with Aspose.PDF for .NET you can do it in a handful of lines, and you’ll also learn how to **add page PDF**, **draw rectangle PDF**, **add shape PDF**, and tweak the **rectangle border thickness** while you’re at it. Let’s dive in. + +## What You’ll Build + +By the end of this guide you’ll have a fully‑functional C# console app that: + +1. **Creates a PDF document** from scratch. +2. **Adds a page PDF** to the document. +3. **Draws a rectangle PDF** on that page. +4. **Validates** that the rectangle stays inside the page bounds (**add shape PDF** step). +5. Sets a custom **rectangle border thickness**. +6. Saves the result as `ShapeValidated.pdf`. + +No external services, no mysterious configuration—just plain C# and Aspose.PDF. + +### Prerequisites + +- .NET 6.0 or later (the code works with .NET Framework 4.6+ as well). +- A reference to the `Aspose.Pdf` NuGet package. You can add it via: + +```bash +dotnet add package Aspose.Pdf +``` + +- A text editor or IDE—Visual Studio, VS Code, Rider, whatever you prefer. + +> **Pro tip:** If you’re on a corporate machine, make sure the NuGet feed isn’t blocked; otherwise you’ll get a “Package not found” error. + +--- + +## Create PDF Document – Initialize the Document + +The very first step is to spin up a `Document` object. Think of it as the blank canvas on which every page and shape will live. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +Why do we need this object? It represents the entire PDF file in memory, giving us access to the `Pages` collection, metadata, and security settings. Once you have the document, you can start stacking pages, text, images, and vector graphics. + +--- + +## Add a Page to the PDF (add page pdf) + +A PDF without pages is essentially an empty file—pointless. Adding a page is straightforward, and you can customize its size if you wish. Here we stick with the default A4 size. + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +The `Add()` method returns a fresh `Page` instance that’s already part of the `Pages` collection, so you can immediately start drawing on it. In real‑world scenarios you might loop over a data set and add dozens of pages; the same single‑line call works for each iteration. + +--- + +## Draw a Rectangle Shape (draw rectangle pdf) + +Now for the visual part: a rectangle with a visible border. This is where **draw rectangle pdf** comes into play. + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +A couple of things to note: + +- `Rect` uses points (1 pt ≈ 1/72 inch). The coordinates define the lower‑left and upper‑right corners, so you can control width and height precisely. +- `BorderInfo` lets you specify which sides get a line and how thick the line is. Here we apply a 2‑point line to **all** sides, giving the rectangle a clean, uniform look. + +--- + +## Validate Shape Placement (add shape pdf) + +Before we commit the rectangle to the page, it’s wise to verify that it fits inside the page’s printable area. Aspose.PDF provides a handy helper method for that. + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +Why bother? If you accidentally place a shape partially off‑screen, the PDF viewer may clip it, leading to a confusing user experience. This **add shape pdf** guard clause ensures you only add content that will be fully visible. + +--- + +## Save the PDF (add page pdf) + +Finally, we persist the in‑memory document to disk. You can choose any location you have write permission for. + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +After running the program, open `ShapeValidated.pdf`—you should see a single page with a neatly bordered rectangle centered roughly in the middle. + +--- + +## Expected Result + +When you open the generated PDF, you’ll see: + +- One A4‑sized page. +- A rectangle whose lower‑left corner starts at (50 pt, 50 pt) and whose upper‑right corner ends at (600 pt, 800 pt). +- A **2‑point thick** border surrounding the rectangle. + +If the console printed “PDF created successfully!”, you know the code executed without hitting the boundary check. + +![Diagram showing how to create PDF document with Aspose.PDF](https://example.com/diagram-create-pdf.png "Create PDF Document – visual overview") + +*Image alt text includes the primary keyword to satisfy SEO requirements.* + +--- + +## Common Questions & Edge Cases + +### What if I need a different page size? + +Replace the default page with a custom size: + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### How do I change the border color? + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### Can I add multiple shapes on the same page? + +Absolutely. Just repeat the **add shape pdf** block with new `RectangleShape` (or other `Shape` subclasses) and adjust the `Rect` coordinates accordingly. + +### What if the rectangle exceeds the page bounds? + +The `IsShapeWithinBounds` call will return `false`. In production code you might want to resize the shape automatically: + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +--- + +## Recap + +We’ve walked through the entire lifecycle of **creating a PDF document** with Aspose.PDF: + +1. Initialize the `Document`. +2. **Add a page PDF** using `Pages.Add()`. +3. **Draw a rectangle PDF** via `RectangleShape`. +4. **Add shape PDF** only after confirming it stays inside the page. +5. Control the **rectangle border thickness** with `BorderInfo`. +6. Save the file. + +That’s the whole workflow in less than 60 lines of code. + +--- + +## What’s Next? + +- **Add text**: Use `TextFragment` to place titles or labels inside the rectangle. +- **Insert images**: The `Image` class lets you embed logos or charts. +- **Create tables**: Perfect for invoices or data reports. +- **Apply security**: Password‑protect the PDF if it contains sensitive data. + +Each of those topics builds on the fundamentals covered here, so you’re well‑positioned to explore more advanced PDF generation scenarios. + +--- + +### Keep Experimenting + +Don’t stop at a single rectangle—play with different shapes, colors, and line styles. The Aspose.PDF API is rich, and the more you tinker, the more comfortable you’ll become. If you hit a snag, the official Aspose documentation is a solid companion, but remember that the code you see above is a complete, copy‑and‑paste‑ready solution you can run today. + +Happy coding, and may your PDFs always render exactly as you imagined! + +{{< /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 9be42439d..dcda567a2 100644 --- a/pdf/english/net/document-manipulation/_index.md +++ b/pdf/english/net/document-manipulation/_index.md @@ -216,7 +216,7 @@ Learn how to insert pages into a PDF using Aspose.PDF for .NET. This step-by-ste Learn how to insert pages into a PDF using Aspose.PDF for .NET with this step-by-step guide. Streamline your document workflow efficiently. ### [Insert an Empty Page in PDF using Aspose.PDF .NET: A Comprehensive Guide](./aspose-pdf-net-insert-empty-page/) -Learn how to insert empty pages into PDF documents with ease using Aspose.PDF for .NET. Follow this step-by-step guide to enhance your document manipulation skills. +Learn how to insert empty pages into PDF documents with ease using Aspose.PDF .NET. Follow this step-by-step guide to enhance your document manipulation skills. ### [Master Aspose.PDF .NET's MakeNUp Method for Efficient PDF Layouts](./aspose-pdf-net-make-nup-method-pdf-layout/) Learn how to efficiently rearrange multiple PDF pages into new layouts using Aspose.PDF .NET's MakeNUp method. Ideal for newsletters, brochures, and reports. @@ -306,11 +306,14 @@ Learn how to split a PDF file into individual pages using Aspose.PDF for .NET an Learn how to split PDF pages into separate files using Aspose.PDF for .NET. This comprehensive guide covers setup, implementation, and optimization tips. ### [Split and Create PDF Files Using Aspose.PDF .NET | Document Manipulation Guide](./split-create-pdf-aspose-pdf-net/) -Learn how to split multi-page PDFs and create new PDF files using Aspose.PDF for .NET. Follow this comprehensive guide with code examples. +Learn how to split multi-page PDFs and create new PDF files using Aspose.PDF .NET. Follow this comprehensive guide with code examples. ### [Ultimate Guide to PDF Manipulation with Aspose.PDF .NET: Load, Save & Replace Text Efficiently](./master-pdf-manipulation-aspose-pdf-net/) Learn how to master PDF manipulation using Aspose.PDF for .NET. This guide covers loading, saving, and replacing text in PDFs, ideal for developers seeking efficiency. +### [How to Redact PDF in C# with Aspose PDF – Complete Guide](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) +Learn how to permanently remove sensitive content from PDFs using Aspose.PDF for .NET with C# in this comprehensive step-by-step guide. + ## Additional Resources - [Aspose.PDF for Net Documentation](https://docs.aspose.com/pdf/net/) @@ -325,4 +328,4 @@ Learn how to master PDF manipulation using Aspose.PDF for .NET. This guide cover {{< /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/english/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/english/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..d0082f4fb --- /dev/null +++ b/pdf/english/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,249 @@ +--- +category: general +date: 2026-03-06 +description: Learn how to redact PDF using Aspose PDF in C#. This step‑by‑step guide + shows how to load PDF document C#, access first PDF page, and remove image from + PDF. +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: en +og_description: How to redact PDF quickly with Aspose PDF in C#. Load PDF document, + access first PDF page, and remove image from PDF in just a few lines of code. +og_title: How to Redact PDF in C# – Aspose PDF Tutorial +tags: +- Aspose PDF +- C# +- PDF Redaction +title: How to Redact PDF in C# with Aspose PDF – Complete Guide +url: /net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Redact PDF in C# with Aspose PDF – Complete Guide + +Ever wondered **how to redact PDF** files without breaking a sweat? Perhaps you’ve been handed a contract that hides a confidential logo, or a report that still shows a placeholder image you need to erase. In those moments you’ll want a reliable, programmatic way to strip that content out—no manual Acrobat wizardry required. + +In this tutorial we’ll walk through a concise, end‑to‑end solution that **loads PDF document C#**, reaches the **access first PDF page**, and then **remove image from PDF** using the powerful **use Aspose PDF** library. By the end you’ll have a fully redacted PDF ready for distribution, and you’ll understand why each line of code matters. + +> **Pro tip:** Aspose PDF works with .NET Framework 4.6+ and .NET Core 3.1+, so you’re covered whether you’re on Windows, Linux, or macOS. + +--- + +![how to redact pdf example](redact-pdf-before-after.png){alt="how to redact pdf example"} + +## What You’ll Need + +- **Aspose.PDF for .NET** (latest NuGet package) +- A **C# development environment** (Visual Studio, Rider, or VS Code) +- A sample PDF that contains an image resource you want to erase (we’ll call it `Sensitive.pdf`) + +No additional third‑party tools, no OCR, just pure code. + +--- + +## Step 1: Load PDF Document C# – The First Move + +Before you can redact anything, you have to bring the file into memory. The `Document` class is the entry point for every Aspose PDF operation. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**Why this matters:** +`Document` parses the entire PDF structure, building an object model that lets you manipulate pages, resources, and annotations. If the file can’t be loaded (wrong path, corrupted PDF), an exception will be thrown immediately—so you know early that something’s off. + +### Common Pitfall + +> *“I get a `FileNotFoundException` even though the file exists.”* +> Make sure the path is absolute or that your project’s working directory matches the location of `Sensitive.pdf`. Using `Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")` can help avoid relative‑path headaches. + +--- + +## Step 2: Access First PDF Page – Where the Image Lives + +Images are stored as resources on a per‑page basis. In many simple PDFs the first page is the culprit, so let’s grab it. + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**Why this matters:** +Aspose PDF uses a 1‑based index for pages, which is a bit unusual compared to most .NET collections. Accessing the wrong page could mean you redact the wrong content—or worse, leave the sensitive image untouched. + +### Edge‑Case Consideration + +If your document has no pages (an empty PDF), attempting `pdfDocument.Pages[1]` will throw an `IndexOutOfRangeException`. A quick guard can save you: + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +--- + +## Step 3: Remove Image from PDF – Redact the Resource + +Aspose PDF lets you delete a resource by name. Most images are named `Im1`, `Im2`, etc., but you can inspect `firstPage.Resources.Images` to confirm. + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**Why this matters:** +`RedactResource` removes the image *and* any references to it on the page, ensuring the visual gap is filled with a blank area rather than a broken link. It’s a clean, PDF‑standard way to erase content. + +### How to Find the Correct Image Name + +If you’re not sure whether the image is called `"Im1"`: + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +Run this snippet, check the console output, and replace `"Im1"` with the actual key you see. + +--- + +## Step 4: Save the Redacted PDF – Finish the Job + +Now that the unwanted image is gone, write the changes back to disk. + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**Why this matters:** +Saving to a **new** file keeps the original untouched—a safety net in case you need to revert. If you must overwrite, just point the `Save` method at the original path, but be aware that the operation is irreversible. + +### Verifying the Result + +Open `Redacted.pdf` in any PDF viewer. The image spot should appear blank, and the rest of the document should look identical to the original. If the page layout looks shifted, double‑check that you removed only the intended resource and not a shared XObject. + +--- + +## Full Working Example + +Putting it all together, here’s the complete, ready‑to‑run program: + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**Expected output** (in the console): + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +When you open `Redacted.pdf`, the image that used to be `Im1` will be gone, leaving a clean page. + +--- + +## Frequently Asked Questions + +### Does this work with encrypted PDFs? + +If the source PDF is password‑protected, pass the password to the `Document` constructor: + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### What if the image appears on multiple pages? + +Loop through each page and call `RedactResource` on the same image name (or discover the name per page). Example: + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### Can I redact text the same way? + +Yes—use `page.Contents.RedactText("confidential")` or employ the `Redactor` class for more advanced patterns. That’s a whole tutorial on its own, but the principle mirrors what we did for images. + +--- + +## Wrapping Up – What We Achieved + +We’ve answered **how to redact PDF** files programmatically by: + +1. **Loading PDF document C#** with Aspose PDF. +2. **Accessing first PDF page** to locate the target resource. +3. **Removing image from PDF** via `RedactResource`. +4. **Saving** the cleaned version safely. + +This approach is fast, repeatable, and works in batch jobs—perfect for compliance pipelines or automated report generation. + +If you’re ready to take things further, consider exploring: + +- **Batch redaction** across an entire folder of PDFs. +- **Redacting text** with regex patterns using `Redactor`. +- **Embedding a watermark** after redaction to signal “sanitized”. + +Give it a spin, tweak the image name logic for your own files, + +{{< /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/performance-optimization/_index.md b/pdf/english/net/performance-optimization/_index.md index e4962eb0f..e49f56a08 100644 --- a/pdf/english/net/performance-optimization/_index.md +++ b/pdf/english/net/performance-optimization/_index.md @@ -50,6 +50,9 @@ Master the art of converting SVG files to PDFs with precision and efficiency usi ### [Unembed Fonts in PDFs Using Aspose.PDF for .NET: Reduce File Size and Improve Performance](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) Learn how to unembed fonts from your PDF files using Aspose.PDF for .NET. Optimize PDF performance, reduce file size, and improve load times with this step-by-step guide. +### [how to compress pdf with Aspose.Pdf – quick guide](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) +Learn a fast method to compress PDF files using Aspose.PDF for .NET, reducing size while preserving quality in just a few steps. + ## Additional Resources - [Aspose.PDF for Net Documentation](https://docs.aspose.com/pdf/net/) @@ -64,4 +67,4 @@ Learn how to unembed fonts from your PDF files using Aspose.PDF for .NET. Optimi {{< /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/english/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/english/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..c21abfa8b --- /dev/null +++ b/pdf/english/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,204 @@ +--- +category: general +date: 2026-03-06 +description: Learn how to compress pdf instantly using Aspose.Pdf. This guide shows + how to reduce pdf file size with lossless pdf compression. +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: en +og_description: How to compress pdf using Aspose.Pdf? Follow this step‑by‑step tutorial + to reduce pdf file size, achieve lossless pdf compression, and save optimized pdf + files. +og_title: how to compress pdf with Aspose.Pdf – quick guide +tags: +- pdf +- aspnet +- csharp +title: how to compress pdf with Aspose.Pdf – quick guide +url: /net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# how to compress pdf with Aspose.Pdf – quick guide + +Ever wondered **how to compress pdf** files without turning them into a blurry mess? You’re not alone. Most developers hit a wall when they need to **reduce pdf file size** for email attachments, web uploads, or storage limits, yet they fear losing image quality. + +In this tutorial we’ll walk through a complete, ready‑to‑run example that shows you exactly **how to compress pdf** using Aspose.Pdf’s built‑in optimizer. By the end you’ll know how to **shrink pdf file size**, keep your images crisp with **lossless pdf compression**, and finally **save optimized pdf** files that play nicely with any viewer. + +## What you’ll learn + +- Load a heavy PDF (e.g., one packed with high‑resolution images) into memory. +- Apply Aspose.Pdf’s optimizer with its default lossless settings. +- Persist the result as a new, smaller file. +- Tips for tweaking compression if you need a tighter squeeze. + +No external tools, no mysterious command‑line tricks—just clean C# code and clear explanations. + +## Prerequisites + +Before we dive in, make sure you have: + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6.0 or later (or .NET Framework 4.6+) | Aspose.Pdf supports both; newer runtimes give better performance. | +| Aspose.Pdf for .NET NuGet package (`Aspose.Pdf`) | The `Document` class lives here. | +| A PDF with large images (e.g., `HeavyImages.pdf`) | Gives you something tangible to shrink. | +| Visual Studio, Rider, or any C# editor you prefer | Comfort is key—pick what feels natural. | + +> **Pro tip:** If you’re on a CI/CD pipeline, add the NuGet reference in your `.csproj` so the build never forgets it. + +```xml + + + +``` + +## Step 1: Load the PDF you want to compress + +First we need a `Document` object that points to the source file. Think of it as opening a book before you start editing the chapters. + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*Why this matters:* Loading the file gives Aspose.Pdf a chance to read all embedded resources (images, fonts, etc.). Without this step there’s nothing to **shrink pdf file size**. + +## Step 2: Apply lossless PDF compression + +Aspose.Pdf ships with an `Optimize` method that, by default, runs a **lossless pdf compression** routine. It strips out redundant objects, recompresses images using the same visual fidelity, and removes unused fonts. + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*Why this matters:* The default optimizer is designed to **shrink pdf file size** while preserving every pixel. If you later decide you can tolerate a tiny quality dip, the commented‑out `OptimizationOptions` lets you trade a few extra kilobytes for speed. + +## Step 3: Save the optimized PDF + +Now that the document is leaner, we write it out to a new file. Keeping the original untouched is a good habit, especially when you’re testing different settings. + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +After the save, compare the file sizes: + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +You should see a noticeable drop—often **30‑70 %** depending on how many high‑resolution images were in the source. + +![how to compress pdf illustration](image.png "how to compress pdf") + +*Image alt text:* how to compress pdf – before and after optimization + +## Advanced: Tweaking compression for specific scenarios + +While the default optimizer is great for most cases, sometimes you need to **shrink pdf file size** even further: + +| Scenario | Setting to adjust | Effect | +|----------|-------------------|--------| +| PDFs with many raster images | `CompressImages = true` + lower `ImageQuality` (e.g., 70) | Reduces image byte count, slight visual loss. | +| PDFs containing duplicate fonts | `RemoveUnusedObjects = true` | Strips out fonts that aren’t referenced. | +| PDFs with large metadata | `RemoveMetadata = true` | Cuts out hidden XML/metadata blocks. | + +You can combine these in an `OptimizationOptions` object and pass it to `pdfDoc.Optimize(options)`. + +## Common questions & edge cases + +**What if the PDF is already optimized?** +Aspose.Pdf will still scan the document, but the size change will be minimal. Running the optimizer on an already‑lean file is safe; it won’t corrupt anything. + +**Can I compress encrypted PDFs?** +Yes, but you must supply the password before calling `Optimize`. Example: + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**What about PDFs with vector graphics?** +Vector objects are already lightweight, so the optimizer focuses on raster images and metadata. Expect modest gains for pure‑vector files. + +## Full, runnable example + +Below is a self‑contained console app you can copy‑paste into a new `.csproj`. It demonstrates everything discussed—from loading to verification. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +Run the program, open `Optimized.pdf` in any viewer, and you’ll see the same page layout, the same crisp images, but a slimmer file. That’s the magic of **lossless pdf compression**. + +## Conclusion + +We’ve covered **how to compress pdf** files using Aspose.Pdf’s built‑in optimizer, demonstrated a practical **reduce pdf file size** workflow, and explained the underlying reasons for each step. By following the three‑step pattern—load, optimize, save—you can **shrink pdf file size** on the fly, keep your images intact with **lossless pdf compression**, and confidently **save optimized pdf** files for downstream consumption. + +Ready for the next challenge? Try chaining this optimizer with a batch script to process an entire folder, or experiment with the optional `OptimizationOptions` to squeeze out that last few kilobytes. The same principles apply whether you’re working on a desktop tool, a web API, or a server‑side batch job. + +Got more questions about PDF handling, Aspose.Pdf quirks, or .NET file I/O? Drop a comment below, and let’s keep the conversation going. Happy compressing! + +{{< /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/programming-with-security-and-signatures/_index.md b/pdf/english/net/programming-with-security-and-signatures/_index.md index fa104a758..083257912 100644 --- a/pdf/english/net/programming-with-security-and-signatures/_index.md +++ b/pdf/english/net/programming-with-security-and-signatures/_index.md @@ -33,7 +33,9 @@ The tutorial gives you a detailed overview of methods and techniques to ensure t | [Set Privileges In PDF File](./set-privileges/) | Learn how to set PDF privileges using Aspose.PDF for .NET with this step-by-step guide. Secure your documents effectively. | | [Sign With Smart Card Using Pdf File Signature](./sign-with-smart-card-using-pdf-file-signature/) | Learn how to sign PDF files using a smart card with Aspose.PDF for .NET. Follow this step-by-step guide for secure digital signatures. | | [Sign With Smart Card Using Signature Field](./sign-with-smart-card-using-signature-field/) | Learn how to securely sign PDFs using a smart card with Aspose.PDF for .NET. Follow our step-by-step guide for easy implementation. | -| [Check PDF Signatures in C# – How to Read Signed PDF Files](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) | Learn how to read and verify PDF signatures using Aspose.PDF for .NET in C#. Step-by-step guide for developers. | +| [Check PDF Signatures in C# – How to Read Signed PDF Files](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) | Learn how to read and verify PDF signatures using Aspose.PDF for .NET in C#. Step-by-step guide for developers. | +| [How to Verify Signature in PDF using C# – Complete Aspose Guide](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) | Learn how to verify PDF signatures using Aspose.PDF for .NET in C#. Follow our step-by-step guide for developers. | +| [Add Digital Signature PDF in C# – Complete Step‑by‑Step Guide](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) | Learn how to add a digital signature to PDF files using Aspose.PDF for .NET in C#. Step-by-step guide for developers. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/english/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/english/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..01b0d223a --- /dev/null +++ b/pdf/english/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,258 @@ +--- +category: general +date: 2026-03-06 +description: Add digital signature pdf using Aspose.PDF. Learn to create pkcs7 detached + signature and sign pdf using pfx with a custom callback. +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: en +og_description: Add digital signature pdf quickly. This guide shows how to create + pkcs7 detached signature and sign pdf using pfx in C#. +og_title: Add Digital Signature PDF in C# – Full Programming Tutorial +tags: +- Aspose.PDF +- C# +- Digital Signature +title: Add Digital Signature PDF in C# – Complete Step‑by‑Step Guide +url: /net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Add Digital Signature PDF – Complete Step‑by‑Step Guide + +Ever needed to **add digital signature pdf** files but weren’t sure where to start? You’re not alone; many developers hit the same wall when the paperwork demands a legally‑binding signature and the codebase only knows how to generate plain PDFs. + +In this tutorial we’ll walk through a hands‑on solution that lets you **add digital signature pdf** documents using Aspose.PDF for .NET, create a PKCS#7 detached signature, and sign the PDF with a PFX certificate—all in pure C#. By the end you’ll have a ready‑to‑run snippet, understand the “why” behind each call, and know how to adapt the approach for edge cases. + +## What You’ll Learn + +- How to load an unsigned PDF and prepare it for signing. +- The mechanics of a **create pkcs7 detached signature** and why you might prefer a detached over an embedded one. +- The exact steps to **sign pdf using pfx** with a custom callback, giving you full control over the cryptographic process. +- Tips for troubleshooting common pitfalls (missing certificate, wrong hash algorithm, etc.). + +### Prerequisites + +| Requirement | Reason | +|-------------|--------| +| .NET 6.0 or later | Modern language features and better memory handling. | +| Aspose.PDF for .NET (NuGet package) | Provides `PdfFileSignature`, `PKCS7Detached`, and other PDF utilities. | +| A valid PFX file (`.pfx`) with private key | Needed for the **sign pdf using pfx** step. | +| Basic C# knowledge | The code is straightforward, but understanding `using` statements helps. | + +> **Pro tip:** Keep your PFX password out of source control—use environment variables or Azure Key Vault for production. + +--- + +## How to Add Digital Signature PDF with Aspose.PDF + +Below we break the process into five digestible steps. Each step includes a code snippet, an explanation of *why* it matters, and a quick sanity check. + +![Screenshot of signed PDF in a viewer, showing a visible signature field](/images/add-digital-signature-pdf.png "add digital signature pdf example") + +### Step 1 – Load the Unsigned PDF Document + +First we need a `Document` object that represents the PDF you want to sign. Using `using var` ensures the file handle is released automatically. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**Why?** +Aspose treats a PDF as an object graph; loading it gives you access to pages, annotations, and the internal byte stream that will later be hashed for the signature. + +### Step 2 – Initialize the PdfFileSignature Helper + +`PdfFileSignature` is the class that actually applies the cryptographic envelope. It works hand‑in‑hand with `PKCS7Detached`. + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**Why?** +Separating the signer from the document lets you reuse the same `Document` instance for other operations (e.g., adding watermarks) before finalizing the signature. + +### Step 3 – Create PKCS#7 Detached Signature (Create PKCS7 Detached Signature) + +A **PKCS#7 detached signature** stores only the hash of the PDF, not the PDF itself. This is ideal for large documents or when you need to keep the original file unchanged. + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**Why a custom callback?** +Sometimes the signing key lives in an HSM or Azure Key Vault, and you cannot extract the private key directly. By providing `CustomSignHash` you hand over the hash to whatever service holds the key, keeping the private material secure. + +**What if you don’t need a custom callback?** +You can omit `CustomSignHash`; Aspose will use the private key inside the PFX automatically. However, the custom route is more flexible and aligns with compliance requirements. + +### Step 4 – Apply the Signature to a Specific Page (Sign PDF Using PFX) + +Now we actually place a visible signature field on the page. The rectangle defines the location and size (in points). + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**Why specify a rectangle?** +A visible signature helps end‑users see that the document is signed. If you set `isVisible` to `false`, the signature becomes invisible—still valid, but harder to discover. + +**Edge case:** If the PDF has no pages (empty file) the call throws `ArgumentOutOfRangeException`. Always verify `pdfDocument.Pages.Count > 0` before signing. + +### Step 5 – Save the Signed PDF + +Finally, persist the signed document to disk. You can also stream it directly to a response in ASP.NET Core. + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**Verification tip:** Open the resulting file in Adobe Acrobat Reader. The signature panel should show a green checkmark (provided the certificate is trusted on the machine). + +--- + +## Complete Working Example + +Putting everything together, here’s a self‑contained console program you can copy‑paste and run (after adjusting paths and passwords). + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**Expected output:** The console prints “✅ PDF signed successfully!” and the file `CustomSigned.pdf` appears in the same folder. When opened, you’ll see a signature widget at the coordinates (100,100)‑(300,200). + +--- + +## Frequently Asked Questions & Edge Cases + +### What if my PFX is protected with a smart card? + +Use the `CustomSignHash` delegate to forward the hash to the smart‑card driver. The driver will return the signature bytes, and Aspose will embed them without ever exposing the private key. + +### Can I sign multiple pages at once? + +Yes. Call `pdfSigner.Sign` inside a loop, adjusting `pageNumber` and optionally the rectangle for each page. Remember that each call adds a separate signature object; some viewers may list them individually. + +### How do I change the hash algorithm? + +`PKCS7Detached` defaults to SHA‑256, but you can set `HashAlgorithm` property: + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +Make sure your signing provider supports the chosen algorithm. + +### What if the certificate chain isn’t trusted on the client machine? + +Include the full chain in the PFX, or distribute the root certificate to the end‑user’s trust store. Otherwise Acrobat will report “Signature is unknown”. + +### Is a detached signature compatible with PDF/A‑3? + +PDF/A‑3 requires embedded signatures, so a detached PKCS#7 may not be compliant. In that case drop the `CustomSignHash` delegate and let Aspose handle the signing internally, which creates an embedded signature. + +--- + +## Best Practices for Production + +1. **Never hard‑code passwords.** Pull them from environment variables or a secret manager. +2. **Validate the PDF before signing.** Corrupt files cause `PdfFileSignatureException`. +3. **Log the hash algorithm and certificate thumbprint** for audit trails. +4. **Test with multiple PDF viewers** (Adobe Reader, Foxit, Chrome) to ensure the signature appears as intended. +5. **Consider timestamping** by adding a TSA (Time‑Stamp Authority) request, which further hardens the signature’s legal standing. + +--- + +## Conclusion + +We’ve just shown you how to **add digital signature pdf** files using Aspose.PDF, create a **PKCS#7 detached signature**, and **sign pdf using pfx** with a custom callback. The complete example runs out of the box, and the explanations give you the confidence to tweak the process for HSMs, timestamp services, or PDF/A compliance. + +Next, you might explore **signing multiple documents in batch**, integrating **Azure Key Vault** for secure key storage, or adding **visual customization** to the signature appearance. Each of those topics builds directly on the foundation laid here. + +If you’ve followed the steps, you now have a solid, citation‑worthy solution you can share with teammates—or even reference in an AI‑powered assistant answer. Happy signing, and feel free to drop a comment if something isn’t crystal clear! + +{{< /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/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/english/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..0589aebea --- /dev/null +++ b/pdf/english/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,199 @@ +--- +category: general +date: 2026-03-06 +description: Learn how to verify signature in a PDF with Aspose PDF in C#. Step‑by‑step + pdf signature verification, validate pdf signature and handle compromised signatures. +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: en +og_description: How to verify signature in a PDF with Aspose PDF. Follow this guide + to perform pdf signature verification, validate pdf signature and detect compromised + signatures in C#. +og_title: How to Verify Signature in PDF using C# – Complete Aspose Guide +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: How to Verify Signature in PDF using C# – Complete Aspose Guide +url: /net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Verify Signature in PDF using C# – Complete Aspose Guide + +Ever wondered **how to verify signature** in a PDF without pulling your hair out? You're not alone. Many developers hit a wall when they need to **pdf signature verification** for compliance or audit reasons, and the usual “just trust the library” approach can backfire. + +In this tutorial we’ll walk through a practical, end‑to‑end solution that not only **validate pdf signature** but also tells you if the signature has been tampered with. We'll use the **Aspose PDF** library, which means the code works on .NET 6+, .NET Framework 4.6+ and even .NET Core. By the end you’ll have a ready‑to‑run snippet that you can drop into any C# project. + +## What You’ll Need + +- **Aspose.Pdf** NuGet package (latest version at the time of writing – 23.12). +- .NET development environment (Visual Studio, Rider, or VS Code). +- A signed PDF file (we’ll call it `Signed.pdf`). +- Basic C# knowledge – nothing fancy, just the usual `using` statements and `Console` I/O. + +That’s it. No extra services, no obscure config files. Ready? Let’s dive in. + +![how to verify signature diagram](image.png "how to verify signature") + +## Step 1: Set Up Your Project for PDF Signature Verification + +Before you can call any Aspose API you need to reference the library. Open your terminal or Package Manager Console and run: + +```bash +dotnet add package Aspose.Pdf +``` + +Or, if you prefer the UI, search for **Aspose.Pdf** in the NuGet Package Manager and install it. This step is crucial because without the **aspose pdf signature** assembly you won’t be able to access the `PdfFileSignature` class later on. + +> **Pro tip:** Target .NET 6 or higher to get the best performance and avoid legacy compatibility warnings. + +## Step 2: Load the PDF Document + +Now that the package is installed, we can load the PDF we want to check. The `Document` class represents the whole file in memory. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**Why this matters:** Loading the document gives us access to its internal structures, including the signature fields. If the file is missing or corrupted, `Document` will throw an exception, which you can catch for a more graceful user experience. + +## Step 3: Create the Aspose PdfFileSignature Object + +With the document in hand, the next move is to instantiate `PdfFileSignature`. This facade class knows how to read, verify, and manipulate digital signatures embedded in PDFs. + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**Explanation:** The `PdfFileSignature` constructor takes the loaded `Document`. Internally it parses the signature dictionary, making methods like `VerifySignature` and `IsSignatureCompromised` available. + +## Step 4: Verify the Signature Integrity + +The heart of **pdf signature verification** is the `VerifySignature` method. It returns `true` if the cryptographic hash matches the stored value and the certificate chain is trusted (provided you’ve set up a trust manager, which we’ll skip for brevity). + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +If you have multiple signatures, simply change the index (`0`, `1`, …). The method checks both integrity and trust in one go, which is why it’s the go‑to for most scenarios. + +## Step 5: Detect a Compromised Signature + +Even a “valid” signature can be compromised if the document was altered after signing. Aspose gives us `IsSignatureCompromised` to detect that subtle case. + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**When to use it:** Suppose a PDF is signed, then a user adds a comment or changes a page. The hash will differ, and `IsSignatureCompromised` will return `true` while `VerifySignature` might still be `true` if the certificate itself is fine. Checking both flags gives you a full picture. + +## Step 6: Interpret the Results + +Now we have two booleans: `isSignatureValid` and `isSignatureCompromised`. Let’s turn them into a friendly console output. + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### Expected Output + +| Scenario | Console Output | +|---------------------------------------|--------------------------------| +| Valid and not compromised | `Signature OK` | +| Valid but compromised (document changed) | `Signature compromised!` | +| Invalid (certificate not trusted, hash mismatch) | `Signature verification failed` | + +That table helps you quickly map the boolean results to human‑readable messages. + +## Full Working Example + +Putting it all together, here’s the complete, ready‑to‑run program: + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +Copy, paste, adjust the `pdfPath`, and run. If everything is set up correctly you’ll see one of the three messages listed above. + +## Common Pitfalls and Tips for PDF Signature Verification + +| Issue | Why it Happens | How to Fix / Avoid | +|-------|----------------|--------------------| +| **Missing Aspose license** | The free evaluation adds a watermark and may limit some API calls. | Register a license (`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`). | +| **Multiple signatures but wrong index** | You might be checking the wrong signature, leading to false negatives. | Loop through `signatureVerifier.GetSignatureCount()` and inspect each. | +| **Certificate chain not trusted** | `VerifySignature` fails if the root CA isn’t in the trusted store. | Add the signing CA to the Windows Trusted Root store or configure a custom `CertificateValidator`. | +| **File locked by another process** | Opening a PDF that’s still open elsewhere can throw an `IOException`. | Use a `FileStream` with `FileShare.ReadWrite` or copy to a temp file first. | +| **Incorrect PDF path** | Simple typo results in `FileNotFoundException`. | Validate the path with `File.Exists(pdfPath)` before loading. | + +### Edge Cases You Might Encounter + +- **Detached signatures**: Some PDFs store signatures externally. Aspose’s `PdfFileSignature` currently supports only embedded signatures. +- **Timestamped signatures**: If you need to verify the timestamp authority (TSA), you’ll have to call `VerifySignature` with a custom `VerificationOptions` object—beyond the scope of this quick guide but worth noting for compliance-heavy projects. + +## Next Steps – Extending Your Validation Logic + +Now that you’ve mastered the basics of **how to verify signature**, you might want to: + +1. **Validate PDF signature** against a list of trusted certificates (e.g., corporate PKI). +2. **Export signature details** (signer name, signing time, certificate thumbprint) using `GetSignatureInfo`. +3. **Batch‑process multiple PDFs** in a folder, logging results to a CSV for audit purposes. + +All of these are straightforward extensions of the code we just covered, and they keep you within the same **aspose pdf signature** ecosystem. + +--- + +**In a nutshell**, you now know exactly **how to verify signature** in a PDF using C# and Aspose, how to detect a compromised signature, and what to do when the verification fails. The approach is robust, works with multiple signatures, and can be integrated into larger document‑processing pipelines. + +Got a twist on this scenario? Maybe you need to sign PDFs instead of verifying them, or you’re dealing with encrypted PDFs. Drop a comment, and we’ll explore those angles together. Happy coding! + +{{< /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/programming-with-stamps-and-watermarks/_index.md b/pdf/english/net/programming-with-stamps-and-watermarks/_index.md index be5f9efe4..dda3951e8 100644 --- a/pdf/english/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/english/net/programming-with-stamps-and-watermarks/_index.md @@ -28,8 +28,9 @@ Aspose.PDF's "Programming with Stamps and Watermarks" tutorials for .NET walk yo | [Counting Artifacts In PDF File](./counting-artifacts/) | Learn how to count watermarks in a PDF using Aspose.PDF for .NET. Step-by-step guide for beginners with no prior experience required. | | [Define Alignment In PDF File](./define-alignment/) | This guide covers how to define text alignment in PDF files using Aspose.PDF for .NET, complete with a step-by-step tutorial. | | [Extract Text From Stamp Annotation](./extract-text-from-stamp-annotation/) | Learn how to extract text from a stamp annotation in PDF using Aspose.PDF for .NET with this step-by-step tutorial, complete with a detailed code example. | -| [Fill Stroke Text In PDF File](./fill-stroke-text/) | Learn how to fill stroke text in PDF files effortlessly using Aspose.PDF for .NET with this step-by-step guide packed with practical examples. | +| [Fill Stroke Text In PDF File](./fill-stroke-text/) | Learn how to fill stroke text in PDF files effortlessly using Aspose.PDF for .NET with a step-by-step guide packed with practical examples. | | [Get Watermark From PDF File](./get-watermark/) | Learn how to extract watermarks from PDF files using Aspose.PDF for .NET with a step-by-step guide. Detailed tutorial for watermark extraction. | +| [Create PDF Document with Bates Numbering in C# – Full Guide](./create-pdf-document-with-bates-numbering-in-c-full-guide/) | Learn how to add Bates numbering to PDF documents using Aspose.PDF for .NET with a comprehensive C# guide. | | [Image and Page Number in Header Footer Section](./image-and-page-number-in-header-footer-section/) | Learn how to add an image and page numbers to your PDF’s header and footer using Aspose.PDF for .NET in this step-by-step tutorial. | | [Image and Page Number in Header Footer Section Inline](./image-and-page-number-in-header-footer-section-inline/) | Learn how to add an image and page number inline in the header section of a PDF using Aspose.PDF for .NET with this step-by-step guide. | | [Image In Footer](./image-in-footer/) | Learn how to add an image in the footer of a PDF using Aspose.PDF for .NET with this detailed step-by-step tutorial. Perfect for enhancing your documents. | @@ -46,4 +47,4 @@ Aspose.PDF's "Programming with Stamps and Watermarks" tutorials for .NET walk yo {{< /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/english/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/english/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..3180f5304 --- /dev/null +++ b/pdf/english/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,182 @@ +--- +category: general +date: 2026-03-06 +description: Create PDF document in C# and add bates number easily. Learn how to add + blank page pdf, place stamp on page, and implement bates numbering. +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: en +og_description: Create PDF document in C# and add bates number. This guide shows how + to add blank page pdf, place stamp on page, and apply bates numbering. +og_title: Create PDF Document with Bates Numbering – C# Tutorial +tags: +- Aspose.Pdf +- C# +- PDF automation +title: Create PDF Document with Bates Numbering in C# – Full Guide +url: /net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Create PDF Document with Bates Numbering in C# + +Ever needed to **create PDF document** in C# and wondered how to add a Bates number without pulling your hair out? You're not the only one—law firms, courts, and even some corporate compliance teams face exactly this puzzle every day. The good news? With a few lines of Aspose.Pdf code you can spin up a brand‑new PDF, tack on a blank page, and stamp a proper Bates number in one smooth flow. + +In this tutorial we’ll walk through the entire process: from setting up the project, to adding a blank page PDF, to figuring out **how to add bates numbering**, and finally to **place stamp on page** and save the result. By the end you’ll have a ready‑to‑use snippet you can drop into any .NET app. No vague references, just a complete, runnable example. + +## What You’ll Need + +- **.NET 6+** (or .NET Framework 4.6+ – Aspose.Pdf works with both) +- **Aspose.Pdf for .NET** NuGet package (`Install-Package Aspose.Pdf`) +- A decent IDE (Visual Studio, Rider, or VS Code with C# extension) + +That’s it. No extra DLLs, no external services. Let’s dive in. + +## Step 1: Create PDF Document – Initial Setup + +First things first, we need a fresh `Document` object. Think of it as the empty canvas where everything else will live. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **Why this matters:** The `Document` class is the entry point for every Aspose operation. Instantiating it gives you access to the `Pages` collection, metadata, and security settings—all the building blocks for a professional PDF. + +## Step 2: Add Blank Page PDF + +A PDF without pages is like a book with no pages—pretty useless. Adding a blank page is straightforward, and it gives us a surface to stamp the Bates number onto. + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **Pro tip:** If you need multiple pages, just call `pdfDocument.Pages.Add()` in a loop. Each call returns a fresh `Page` object you can customise independently. + +## Step 3: How to Add Bates Numbering – Create the TextStamp + +Now comes the heart of the matter: the **Bates number**. In Aspose.Pdf it’s just a `TextStamp` with a special artifact flag. + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **Why we set `Artifact`**: Some PDF readers expose Bates numbers as searchable metadata. Flagging the stamp as a `BatesNumbering` artifact ensures that downstream tools can recognise it automatically. + +## Step 4: Place Stamp on Page + +With the stamp ready, we now **place stamp on page**. This is the step where the visual number actually appears in the PDF. + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **Edge case:** If you need the number to increment on each page, you’d loop through `pdfDocument.Pages` and update `batesStamp.Value` before calling `AddStamp`. The example here keeps it simple with a static “Bates‑001”. + +## Step 5: Save and Verify the Result + +Finally, we persist the PDF to disk. Choose a folder you have write access to; otherwise, you’ll hit a `UnauthorizedAccessException`. + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +When you open `BatesStamped.pdf` in any viewer you should see a tiny “Bates‑001” tucked neatly in the lower‑right corner of the blank page. + +> **Expected output:** +> ![PDF with Bates number stamp](image-placeholder.png "PDF with Bates number stamp") +> *Alt text: PDF with Bates number stamp on the bottom‑right corner.* + +If the number isn’t showing, double‑check the margin values and make sure the page size isn’t too small (default A4 works fine). Also confirm that the `Artifact` flag isn’t being stripped by any post‑processing tools. + +## Full Working Example + +Below is the complete, copy‑paste‑ready program. It includes all the `using` directives and comments to keep you oriented. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +Run the program, pop open the PDF, and you’ll see the Bates number exactly where we told it to go. 🎉 + +## Common Variations & Gotchas + +| Scenario | What to Change | Why | +|----------|----------------|-----| +| **Multiple pages, incrementing numbers** | Loop through `pdfDocument.Pages`, set `batesStamp.Value = $"Bates-{i:D3}"` before `AddStamp` | Gives each page a unique identifier, typical for legal bundles | +| **Different placement (top‑left)** | Change `HorizontalAlignment = HorizontalAlignment.Left` and `VerticalAlignment = VerticalAlignment.Top` | Some organizations prefer the number in the header instead of the footer | +| **Custom font or color** | Set `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` | Improves readability or meets branding guidelines | +| **Adding an existing PDF as a background** | Load the source PDF with `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` | Useful when you need to stamp over a pre‑generated form | + +## Wrapping Up + +We’ve just shown how to **create PDF document**, **add blank page pdf**, and **add bates number** using Aspose.Pdf for .NET, then **place stamp on page** and save the file. The code is deliberately compact so you can adapt it to larger workflows—whether you’re batching dozens of files or integrating into a web service. + +If you’re ready to take this further, consider: + +- Automating the increment logic for large case files. +- Embedding the PDF generation into an ASP.NET Core API. +- Adding security (password protection) with `pdfDocument.Encrypt(...)`. + +Feel free to experiment, break things, and ask questions in the comments. Happy coding, and may your PDFs always be perfectly stamped! + +{{< /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/programming-with-tagged-pdf/_index.md b/pdf/english/net/programming-with-tagged-pdf/_index.md index 0ccbbb62d..9f45aa28a 100644 --- a/pdf/english/net/programming-with-tagged-pdf/_index.md +++ b/pdf/english/net/programming-with-tagged-pdf/_index.md @@ -26,6 +26,7 @@ Aspose.PDF for .NET's "Programming with Tagged PDFs" tutorials walk you through | [Create PDF with Tagged Image](./create-pdf-with-tagged-image/) | Learn to create a tagged PDF with images using Aspose.PDF for .NET. Follow our step-by-step guide for accessible and professional document creation. | | [Create PDF with Tagged Text](./create-pdf-with-tagged-text/) | Learn how to create tagged PDFs with accessible content using Aspose.PDF for .NET in this comprehensive step-by-step tutorial. | | [Create Tagged PDF in C# – Complete Step‑by‑Step Guide](./create-tagged-pdf-in-c-complete-step-by-step-guide/) | Learn how to create a fully tagged PDF using Aspose.PDF for .NET in C# with this comprehensive step-by-step guide. | +| [Create Tagged PDF in C# – Step‑by‑Step Guide](./create-tagged-pdf-in-c-step-by-step-guide/) | Learn how to create a tagged PDF using Aspose.PDF for .NET in C# with this step‑by‑step guide. | | [Create Structure Elements](./create-structure-elements/) | Learn how to create structure elements in PDF with Aspose.PDF for .NET. A step-by-step guide for enhanced PDF accessibility and organization. | | [Create Structure Elements Tree](./create-structure-elements-tree/) | Learn how to create a structure elements tree in PDF documents using Aspose.PDF for .NET. Follow this step-by-step guide. | | [Create Table Element](./create-table-element/) | Step by step guide to create an array element with Aspose.PDF for .NET. Generate dynamic PDFs with tables easily. | diff --git a/pdf/english/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/english/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..305f46978 --- /dev/null +++ b/pdf/english/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-03-06 +description: Create tagged PDF with Aspose.Pdf in C#. Learn how to add image to PDF, + set figure position, and tag PDF for accessibility. +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: en +og_description: Create tagged PDF with Aspose.Pdf. This guide shows how to add image + to PDF, set figure position, and tag PDF for accessibility. +og_title: Create Tagged PDF in C# – Complete Tutorial +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: Create Tagged PDF in C# – Step‑by‑Step Guide +url: /net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Create Tagged PDF in C# – Complete Tutorial + +Ever needed to **create tagged PDF** in C# but weren’t sure where to start? You’re not alone; accessibility is a must these days, and a tagged PDF is the backbone of a compliant document. In this tutorial we’ll walk through a real‑world example that **adds image to PDF**, sets the figure’s position, and shows **how to tag PDF** using Aspose.Pdf. By the end you’ll have a fully‑tagged PDF you can ship to anyone. + +We’ll cover everything from loading an existing file to saving the final output, so you won’t have to hunt for “how to add image” elsewhere. No fluff—just a clear, runnable solution that works with Aspose.Pdf 23.8 (the latest at time of writing). Grab your IDE, and let’s get started. + +--- + +## What You’ll Need + +- **Aspose.Pdf for .NET** (NuGet package `Aspose.Pdf`). +- .NET 6+ (or .NET Framework 4.7.2+). +- An input PDF that already has a logical structure (i.e., it’s already tagged) – if not, you can enable tagging via `pdfDocument.TaggedContent = true`. +- An image file (`image.png`) you want to embed. + +That’s it. No extra libraries, no obscure configuration files. + +--- + +## Step 1: Load the Existing PDF Document (Create Tagged PDF Base) + +The first thing we do is open the PDF we want to enhance. Loading the file gives us access to its logical structure, which is essential for **create tagged pdf** workflows. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*Why this matters:* Without a tag tree the PDF won’t convey structural information to screen readers. Enabling tagging ensures that any new elements we add (like a figure) inherit the proper hierarchy. + +--- + +## Step 2: Access the Logical Structure Root (How to Tag PDF) + +Now we reach into the PDF’s logical structure. The root element is the container for all tags—think of it as the document’s outline. + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*Explanation:* `logicalRoot` lets us append new tags such as `
` or `
`. This is the core of **how to tag PDF** programmatically. + +--- + +## Step 3: Create a Figure Tag and Set Its Position (Set Figure Position) + +A *Figure* tag groups visual content with an optional caption. We’ll create one, position it, and attach it to the root. + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*Why we set a position:* The **set figure position** step determines where the visual element lands on the page. If you skip this, the figure may appear in an unexpected location or be invisible to assistive tech. + +--- + +## Step 4: Add a Visual Representation – Insert an Image (Add Image to PDF) + +With the tag in place, we need an actual image. This is the part that answers **add image to pdf**. + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*Key point:* The rectangle coordinates must match the `figureTag.Position` we defined earlier; otherwise the figure and its visual content will be out of sync, breaking accessibility. + +--- + +## Step 5: Save the Updated PDF (Finish Creating Tagged PDF) + +Finally, we persist the changes to a new file. Keeping the original untouched is a good practice. + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +At this stage you have a **create tagged pdf** file that contains a properly positioned image wrapped in a `
` tag. Open `output.pdf` in Adobe Acrobat and check the *Tags* panel – you should see a `Figure` node under the root. + +--- + +## Full, Ready‑to‑Run Example + +Below is the complete program you can copy‑paste into a console app. All steps are already in the correct order. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### Expected Result + +- `output.pdf` opens with the image displayed at (100, 150) points, sized 300 × 200 points. +- The *Tags* pane shows a `Figure` element that encloses the image. +- Screen‑reader tools announce “Figure” before describing the picture, satisfying basic accessibility standards. + +--- + +## Common Questions & Edge Cases + +### What if the source PDF isn’t already tagged? + +Aspose.Pdf lets you turn on tagging by setting `pdfDocument.TaggedContent.IsTagged = true;`. The library will generate a default tag tree, after which you can add custom tags as shown. + +### Can I add a caption to the figure? + +Yes. After creating `figureTag`, you can attach a `Paragraph` with a `TextFragment` and set its `Tag` to `Caption`. Example: + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### How do I place the figure on a different page? + +Replace `var firstPage = pdfDocument.Pages[1];` with the desired page index, e.g., `pdfDocument.Pages[3]`. Remember to adjust the `Position` coordinates if the page size differs. + +### What if I need to tag multiple images? + +Create a new `Figure` for each image, give each a unique `Position`, and add the corresponding `Image` object to the appropriate page. Looping over a collection of images works nicely. + +### Does this work with PDF/A compliance? + +Aspose.Pdf supports PDF/A‑1b, PDF/A‑2b, and PDF/A‑3b. When generating a PDF/A document, make sure to set the compliance mode before saving: + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +The tagging logic remains the same. + +--- + +## Pro Tips & Pitfalls + +- **Pro tip:** Always use absolute paths or `Path.Combine` to avoid runtime file‑not‑found errors. +- **Watch out for:** Mismatched coordinates between the `Figure` tag and the `Image` rectangle—assistive technologies rely on that alignment. +- **Performance note:** If you’re processing many pages, wrap the image stream in a `using` block to free resources promptly. +- **Version check:** The API shown works with Aspose.Pdf 23.8+. Older versions may have slightly different class names (e.g., `LogicalStructureElement` instead of `FigureElement`). + +--- + +## Conclusion + +We’ve just **create tagged pdf** from start to finish, demonstrated **add image to pdf**, and showed how to **set figure position** while answering **how to tag pdf** and **how to add image** in a single, cohesive example. The code is ready to run, the explanations cover the “why” behind each step, and you now have a solid foundation for building accessible PDFs in C#. + +Ready for the next challenge? Try adding tables with `
` tags, or embed a PDF/A‑2b compliance layer for archival purposes. The same pattern—load, access the logical structure, create a tag, attach visual content, save—applies across most PDF accessibility tasks. + +If you hit a snag or have a use‑case that isn’t covered here, drop a comment below. Happy tagging, and enjoy building PDFs that everyone can read! + +![Diagram showing a PDF with a Figure tag and image – illustrates how to create tagged pdf](placeholder-image.png "create tagged pdf example") + +{{< /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/french/net/digital-signatures/_index.md b/pdf/french/net/digital-signatures/_index.md index 3ee34674c..31aa7e8cd 100644 --- a/pdf/french/net/digital-signatures/_index.md +++ b/pdf/french/net/digital-signatures/_index.md @@ -53,6 +53,8 @@ Découvrez comment vérifier les signatures numériques des fichiers PDF avec As ### [Vérifier la signature PDF en C# – Guide complet pour valider la signature numérique PDF](./verify-pdf-signature-in-c-complete-guide-to-validate-digital/) Apprenez à valider les signatures numériques des fichiers PDF en C# avec Aspose.PDF, étape par étape. +### [Comment lire les signatures dans un PDF avec C# – Guide étape par étape](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +Apprenez à lire les signatures numériques d'un PDF en C# avec Aspose.PDF, étape par étape. ## Ressources supplémentaires diff --git a/pdf/french/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/french/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..5bdc1c683 --- /dev/null +++ b/pdf/french/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-06 +description: Comment lire les signatures dans un PDF avec C#. Apprenez à charger un + document PDF en C#, à lister les signatures PDF et à obtenir les signatures numériques + du PDF rapidement et de manière fiable. +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: fr +og_description: Comment lire les signatures dans un PDF avec C#. Ce guide montre comment + charger un document PDF en C#, lister les signatures PDF et récupérer les signatures + numériques du PDF en quelques étapes simples. +og_title: Comment lire les signatures dans un PDF avec C# – Guide complet +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: Comment lire les signatures dans les PDF avec C# – Guide étape par étape +url: /fr/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment lire les signatures dans un PDF avec C# – Guide complet + +Vous vous êtes déjà demandé **comment lire les signatures** déjà intégrées dans un fichier PDF ? Peut-être que vous construisez un tableau de bord de conformité, ou que vous devez simplement auditer des contrats signés avant qu'ils n'atteignent votre base de données. La bonne nouvelle, c’est qu’avec quelques lignes de C# et la bibliothèque Aspose.Pdf, vous pouvez extraire les noms des signatures directement du fichier — aucune inspection manuelle requise. + +Dans ce tutoriel, nous allons parcourir le chargement d’un document PDF en C#, la liste des signatures PDF, et l’obtention d’informations sur les signatures numériques PDF. À la fin, vous disposerez d’une application console prête à l’emploi qui affiche chaque nom de signature trouvé, ainsi que des conseils pour gérer les cas particuliers comme les fichiers protégés par mot de passe. + +## Prérequis + +- .NET 6.0 ou ultérieur (le code fonctionne également avec .NET Framework 4.6+) +- Aspose.Pdf for .NET (vous pouvez obtenir une licence temporaire gratuite depuis le site Aspose) +- Un PDF qui contient déjà une ou plusieurs signatures numériques (l’exemple `MultiSigned.pdf` est inclus dans le dépôt) + +> **Conseil pro** : Si vous utilisez Visual Studio, activez les *Nullable Reference Types* pour détecter les bugs liés aux nulls dès le départ. + +## Étape 1 : Charger le document PDF en C# + +La première chose dont nous avons besoin est un objet `Document` qui représente le fichier PDF sur le disque. La classe `Document` d’Aspose.Pdf gère tout, de l’extraction de texte simple au traitement de formulaires complexes. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**Pourquoi c’est important ** : Charger le PDF valide que le fichier existe et est lisible. Si le fichier est corrompu ou que le chemin est incorrect, nous arrêtons immédiatement au lieu de rencontrer des erreurs cryptiques plus tard lors de l’énumération des signatures. + +## Étape 2 : Créer un assistant `PdfFileSignature` + +Aspose sépare la gestion générique du PDF (`Document`) des opérations spécifiques aux signatures (`PdfFileSignature`). Instancier cet assistant nous donne accès à des méthodes comme `GetSignatureNames()`. + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**Pourquoi c’est important ** : La classe `PdfFileSignature` sait comment analyser les entrées du dictionnaire `/Sig` du PDF, qui est l’endroit où résident les signatures numériques. L’utiliser garantit que nous lisons les signatures exactement comme elles ont été ajoutées, en préservant toutes les métadonnées cryptographiques. + +## Étape 3 : Récupérer tous les noms de signatures + +Voici le cœur du **comment lire les signatures** : appeler `GetSignatureNames()`. Cette méthode renvoie un tableau de chaînes contenant les *noms de champ* de chaque signature. + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**Ce que vous verrez ** : Si `MultiSigned.pdf` contient trois signatures nommées `Signature1`, `Signature2` et `Signature3`, la sortie console sera : + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## Étape 4 : (Optionnel) Vérifier la validité de chaque signature + +Lire les noms suffit souvent, mais de nombreux projets ont également besoin de savoir si chaque signature est toujours valide. Aspose vous permet de valider une signature par son nom de champ : + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **Cas particulier** : Si le PDF est protégé par mot de passe, vous devez fournir le mot de passe avant d’appeler `VerifySignature`. Utilisez `pdfDocument.Encrypt.Password = "yourPassword";` immédiatement après le chargement du document. + +## Exemple complet fonctionnel + +Voici le programme complet que vous pouvez copier‑coller dans un nouveau projet console (`dotnet new console`). Il inclut toutes les étapes, la gestion des erreurs et la vérification optionnelle. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**Sortie attendue** (en supposant trois signatures valides) : + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## Gestion des variations courantes + +| Situation | Ce qu’il faut changer | Pourquoi | +|-----------|-----------------------|----------| +| **PDF protégé par mot de passe** | Définissez `pdfDocument.Encrypt.Password = "yourPwd";` avant de créer `PdfFileSignature`. | Sans le mot de passe, les dictionnaires de signatures sont chiffrés et `GetSignatureNames()` renvoie un tableau vide. | +| **PDF volumineux ( > 100 Mo )** | Utilisez `pdfSigner.GetSignatureNames(0, 10)` pour paginer les résultats (premier paramètre = indice de départ). | Charger la liste complète des signatures en une fois peut consommer beaucoup de mémoire. | +| **Aucune signature** | Le code affiche déjà un avertissement convivial. Envisagez de consigner cela comme un événement d’audit. | Aide les processus en aval à décider s’il faut rejeter le fichier ou demander à l’utilisateur une version signée. | +| **Noms de champ de signature personnalisés** | La méthode renvoie le nom de champ utilisé lors de la signature, par ex. `EmployeeApproval`. Aucun travail supplémentaire n’est nécessaire. | Permet de faire correspondre les signatures aux rôles métier. | + +## Bonnes pratiques et astuces + +- **Dispose objects** : Le modèle `using var pdfSigner` garantit que les ressources natives sont libérées rapidement. +- **License early** : Appelez `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` au début de `Main` pour éviter le filigrane d’évaluation. +- **Thread safety** : Si vous traitez de nombreux PDF en parallèle, créez une instance distincte de `PdfFileSignature` par thread. La classe n’est pas thread‑safe. +- **Logging** : En production, remplacez `Console.WriteLine` par un logger structuré (Serilog, NLog) afin de capturer les noms exacts des signatures pour les pistes d’audit. +- **Version check** : Le code fonctionne avec Aspose.Pdf for .NET 23.10 et versions ultérieures. Les versions plus anciennes peuvent nécessiter `PdfSignature` au lieu de `PdfFileSignature`. + +## Conclusion + +Nous avons couvert **comment lire les signatures** d’un PDF avec C#. En chargeant le document PDF, en créant un assistant `PdfFileSignature` et en appelant `GetSignatureNames()`, vous pouvez lister chaque signature numérique intégrée au fichier. La vérification optionnelle ajoute une couche de confiance, et le code d’exemple vous montre exactement comment l’intégrer dans une application console réelle. + +Prêt pour l’étape suivante ? Essayez de combiner cela avec `DigitalSignatureUtil` d’Aspose pour extraire les certificats des signataires, ou alimentez la liste des signatures dans un tableau de bord de conformité qui signale les contrats non signés. Les possibilités sont infinies — souvenez‑vous simplement de **charger le document PDF C#**, **lister les signatures PDF**, et **obtenir les signatures numériques PDF** chaque fois que vous avez besoin d’un audit rapide. + +Bon codage, et que vos PDF restent toujours correctement signés ! + +{{< /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/french/net/document-conversion/_index.md b/pdf/french/net/document-conversion/_index.md index 532cce86b..2f4698f5c 100644 --- a/pdf/french/net/document-conversion/_index.md +++ b/pdf/french/net/document-conversion/_index.md @@ -37,6 +37,7 @@ Vous apprendrez à définir les paramètres de conversion, à extraire du texte | [PDF vers PDFA](./pdf-to-pdfa/) Apprenez à convertir des fichiers PDF au format PDF/A à l'aide d'Aspose.PDF pour .NET avec ce didacticiel étape par étape. | | [PDF vers PDFA3b](./pdf-to-pdfa3b/) | Apprenez à convertir des fichiers PDF au format PDF/A-3B sans effort avec Aspose.PDF pour .NET dans ce guide étape par étape. | | [Convertir PDF en PDF/X‑4 en C#](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | Apprenez à convertir un PDF en PDF/X‑4 en C# avec Aspose.PDF pour .NET grâce à ce tutoriel ASP.NET étape par étape. | +| [Tutoriel Aspose PDF : Convertir PDF en PDF/X‑4 en C#](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) | Apprenez à convertir un PDF en PDF/X‑4 en C# avec Aspose.PDF pour .NET grâce à ce guide étape par étape. | | [Conversion de polices PDF en PNG](./pdf-to-png-font-hinting/) | Apprenez à convertir un PDF en PNG avec indication de police à l'aide d'Aspose.PDF pour .NET dans un guide étape par étape simple. | | [Tutoriel PDF vers PNG – Convertir des pages PDF en PNG en C#](./pdf-to-png-tutorial-convert-pdf-pages-to-png-in-c/) | Apprenez à convertir chaque page d'un PDF en images PNG avec Aspose.PDF pour .NET en C#. | | [PDF en PPT](./pdf-to-ppt/) | Apprenez à convertir un PDF en PowerPoint avec Aspose.PDF pour .NET grâce à ce guide étape par étape. Simple, efficace et idéal pour les présentations. | diff --git a/pdf/french/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/french/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..cc8e63a11 --- /dev/null +++ b/pdf/french/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-03-06 +description: Le tutoriel Aspose PDF montre comment utiliser Aspose pour charger un + document PDF en C#, convertir le PDF en PDF/X‑4 et enregistrer le PDF converti de + manière efficace. +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: fr +og_description: Le tutoriel Aspose PDF explique comment charger un document PDF en + C#, le convertir au format PDF/X‑4 et enregistrer le PDF converti avec des exemples + de code clairs. +og_title: 'Tutoriel Aspose PDF : Convertir PDF en PDF/X‑4 en C#' +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: 'Tutoriel Aspose PDF : Convertir un PDF en PDF/X‑4 en C#' +url: /fr/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tutoriel Aspose PDF : Convertir PDF en PDF/X‑4 en C# + +Vous vous êtes déjà demandé comment utiliser Aspose pour transformer un PDF ordinaire en fichier PDF/X‑4 sans effort ? Vous n'êtes pas le seul—les développeurs ont souvent besoin d'une méthode fiable pour **load PDF document C#**‑style, le convertir, puis **save the converted PDF** pour les flux de travail en aval. Dans ce guide, nous parcourrons un exemple complet et exécutable qui fait exactement cela, en utilisant la dernière version d'Aspose.Pdf pour .NET. + +Nous couvrirons tout, de l'installation de la bibliothèque, le chargement d'un PDF source, la conversion au standard PDF/X‑4, et enfin la persistance du résultat sur le disque. À la fin, vous aurez une solide compréhension de **how to use Aspose** pour ce scénario de conversion courant, ainsi que des astuces pour gérer les cas limites. + +## Prérequis + +- .NET 6.0 ou ultérieur (le code fonctionne également sur .NET Framework, mais .NET 6+ est recommandé). +- Un fichier de licence valide pour Aspose.Pdf for .NET (ou vous pouvez exécuter en mode évaluation pour un test rapide). +- Visual Studio 2022 ou tout IDE compatible C#. +- Un fichier PDF d'entrée situé à `YOUR_DIRECTORY/input.pdf`. + +Aucun package NuGet supplémentaire au-delà de `Aspose.Pdf` n'est requis. + +## Installer Aspose.Pdf via NuGet + +Ouvrez votre terminal ou la console du gestionnaire de packages et exécutez : + +```bash +dotnet add package Aspose.Pdf +``` + +Cela récupère la dernière version stable (en date de mars 2026, version 23.12). Si vous préférez l'interface graphique, recherchez *Aspose.Pdf* dans le Gestionnaire de packages NuGet et installez-le. + +## Étape 1 : Charger le document PDF en C# avec Aspose + +La première chose à faire est de charger le PDF source en mémoire. La classe `Document` d'Aspose est le point d'entrée. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**Why this matters :** Le chargement du fichier valide que le chemin existe et que le PDF n'est pas corrompu. Le bloc `try/catch` vous offre une manière élégante de signaler les erreurs—pratique lorsque le fichier provient de téléchargements d'utilisateurs. + +## Étape 2 : Convertir le PDF au format PDF/X‑4 + +PDF/X‑4 est un sous‑ensemble de PDF conçu pour l'impression fiable et l'archivage. La conversion garantit que toutes les polices sont incorporées et que le fichier respecte les normes de l'industrie. + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**Why choose `ConvertErrorAction.Delete`?** Certains PDF anciens contiennent des éléments (comme des annotations non prises en charge) qui sinon arrêteraient la conversion. Les supprimer maintient le processus fluide, mais vous devriez vérifier la sortie si vous avez besoin de conserver ces éléments. + +### Optionnel : Vérifier le succès de la conversion + +Si vous voulez être encore plus sûr, vous pouvez inspecter le `PdfFormat` du document après la conversion : + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## Étape 3 : Enregistrer le fichier PDF converti + +Maintenant que le document est au format PDF/X‑4, écrivez-le de nouveau sur le disque. + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**Result you’ll see :** Un nouveau fichier nommé `Converted_PDFX4.pdf` apparaît dans `YOUR_DIRECTORY`. Ouvrez-le avec n'importe quel lecteur PDF qui prend en charge PDF/X‑4 (Adobe Acrobat, Foxit, etc.) et vous remarquerez que toutes les polices sont incorporées et que le document est conforme à la spécification PDF/X‑4. + +![tutoriel aspose pdf - conversion de PDF en PDF/X‑4](/images/aspose-pdf-conversion.png "tutoriel aspose pdf montrant le résultat de la conversion PDF/X‑4") + +*Le texte alternatif de l'image inclut le mot‑clé principal, répondant aux exigences SEO.* + +## Exemple complet de bout en bout + +En réunissant le tout, voici une application console autonome que vous pouvez copier‑coller dans un nouveau projet C# : + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +Exécutez le programme, et vous devriez voir des messages de console confirmant chaque étape. Si quelque chose ne fonctionne pas, les messages d'erreur vous indiquent l'étape exacte. + +## Questions fréquentes & cas limites + +### Et si je dois conserver les annotations ? + +`ConvertErrorAction.Delete` supprime les objets non pris en charge, y compris certaines annotations. Passez à `ConvertErrorAction.Keep` si les conserver est crucial, mais testez la sortie—certaines annotations peuvent encore générer des avertissements de conformité. + +### Comment gérer les gros PDF (des centaines de Mo) ? + +Aspose.Pdf diffuse le fichier en flux, donc l'utilisation de la mémoire reste modeste. Cependant, vous pourriez vouloir augmenter les seuils `System.GC` ou traiter le document par morceaux (par ex., convertir page par page) pour des fichiers extrêmement volumineux. + +### Puis‑je convertir plusieurs fichiers en lot ? + +Absolument. Enveloppez la logique de chargement‑conversion‑enregistrement dans une boucle `foreach` qui parcourt un répertoire de PDF. N'oubliez pas de gérer les exceptions par fichier afin qu'un PDF défectueux n'interrompe pas tout le lot. + +### Cela fonctionne‑t‑il sur .NET Core sous Linux ? + +Oui. Aspose.Pdf est multiplateforme. Assurez‑vous simplement que le package NuGet `Aspose.Pdf` est référencé et que vous avez les fichiers de polices appropriés installés sur l'hôte Linux si vous avez besoin du rendu du texte. + +## Astuces professionnelles du terrain + +- **Set a license early** : `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` – cela supprime le filigrane d'évaluation et améliore les performances. +- **Validate the output** : Utilisez le `PdfFormatValidator` d'Aspose pour confirmer programmétiquement la conformité PDF/X‑4 avant de livrer le fichier. +- **Log conversion time** : Les gros lots bénéficient du chronométrage de chaque conversion (`Stopwatch`) pour détecter les régressions de performance. +- **Avoid hard‑coded paths** : Privilégiez les fichiers de configuration ou les variables d'environnement pour `inputPath` et `outputPath` — cela rend l'application portable. + +## Conclusion + +Dans ce **Aspose PDF Tutorial** nous avons démontré un flux de travail propre et de bout en bout pour **how to use Aspose** afin de **load PDF document C#**, le convertir au standard **PDF/X‑4**, et **save the converted PDF**. L'extrait est entièrement exécutable, explique le *pourquoi* de chaque étape, et met en évidence les pièges que vous pourriez rencontrer dans des projets réels. + +Maintenant que vous avez les bases, vous pouvez étendre la solution—traiter par lots des dizaines de fichiers, incorporer des métadonnées personnalisées, ou intégrer la conversion dans une API web. Les possibilités sont vastes, et Aspose.Pdf vous fournit les outils pour y parvenir rapidement. + +Vous avez d'autres questions sur le traitement PDF avec Aspose ? Laissez un commentaire, explorez la documentation officielle d'Aspose, ou expérimentez avec le code ci‑dessus. Bonne conversion ! + +{{< /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/french/net/document-creation/_index.md b/pdf/french/net/document-creation/_index.md index 2e2591766..5b593bde4 100644 --- a/pdf/french/net/document-creation/_index.md +++ b/pdf/french/net/document-creation/_index.md @@ -77,6 +77,12 @@ Un tutoriel de code pour Aspose.PDF Net ### [Créer un document PDF avec Aspose.PDF – Ajouter une page, une forme et enregistrer](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) Apprenez à ajouter une page, insérer une forme et enregistrer le document PDF avec Aspose.PDF pour .NET. +### [Créer un document PDF avec Aspose.PDF – Guide étape par étape](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +Apprenez à créer un document PDF simple avec Aspose.PDF en suivant un guide détaillé étape par étape. + +### [Créer un document PDF avec Aspose.PDF – Guide complet C#](./create-pdf-document-with-aspose-pdf-full-c-guide/) +Apprenez à créer un document PDF complet en C# avec Aspose.PDF, incluant l'ajout de pages, formes et enregistrement. + ## Ressources supplémentaires - [Aspose.PDF pour la documentation réseau](https://docs.aspose.com/pdf/net/) diff --git a/pdf/french/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/french/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..a46f9aad1 --- /dev/null +++ b/pdf/french/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,236 @@ +--- +category: general +date: 2026-03-06 +description: Créer un document PDF en C# avec Aspose.PDF – apprenez comment ajouter + des pages blanches PDF, une zone de texte, un widget, et enregistrer le PDF rapidement. +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: fr +og_description: Créer un document PDF en C# avec Aspose.PDF. Ce guide montre comment + ajouter des pages PDF vierges, une zone de texte, un widget, et comment enregistrer + le PDF. +og_title: Créer un document PDF avec Aspose.PDF – Tutoriel complet C# +tags: +- pdf +- csharp +- aspose +- forms +title: Créer un document PDF avec Aspose.PDF – Guide complet C# +url: /fr/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Créer un document PDF avec Aspose.PDF – Guide complet C# + +Vous avez déjà eu besoin de **create pdf document** à partir de zéro dans un projet .NET et vous vous êtes demandé par où commencer ? Vous n'êtes pas seul ; de nombreux développeurs rencontrent le même obstacle lorsque la première exigence indique « générer un PDF remplissable avec la même zone de texte sur trois pages ». La bonne nouvelle ? Avec Aspose.PDF, vous pouvez générer un PDF à l’aspect professionnel en quelques lignes seulement. + +Dans ce tutoriel, nous parcourrons l’ensemble du processus : initialiser un nouveau PDF, **adding blank pages pdf**, insérer une **textbox**, la reproduire avec des annotations **widget**, puis **saving the PDF** sur le disque. À la fin, vous disposerez d’un fichier prêt à l’emploi nommé *MultiWidgetField.pdf* et d’une compréhension solide de l’importance de chaque étape. + +## Ce que couvre ce guide + +- Prérequis nécessaires avant d’écrire la première ligne de code. +- Création pas à pas d’un document PDF avec Aspose.PDF pour .NET. +- Comment ajouter des pages vierges, un champ de formulaire texte, et des instances supplémentaires de widget. +- Astuces pour gérer les pièges courants (par ex. indexation des pages, collisions de noms de champs). +- Un programme C# complet, prêt à copier‑coller, que vous pouvez exécuter dès aujourd’hui. + +Pas de liens vers une documentation externe, pas de raccourcis « voir la documentation API » — tout ce dont vous avez besoin se trouve ici. + +## Prérequis + +Avant de commencer, assurez‑vous d’avoir : + +1. **.NET 6.0** (ou toute version ultérieure) installé sur votre machine. +2. Une licence active **Aspose.PDF for .NET** ou une clé d’évaluation temporaire. +3. Un environnement de développement comme **Visual Studio 2022** ou **VS Code** avec l’extension C#. + +C’est tout — rien d’autre n’est requis. + +## Étape 1 : Initialiser le document PDF et ajouter des pages vierges + +La première chose à faire lorsque vous **create pdf document** de façon programmatique est d’instancier un objet `Document`. Pensez‑y comme à l’ouverture d’un tout nouveau carnet. Ensuite, vous ajoutez les pages dont vous avez besoin ; dans notre cas, trois pages vierges. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**Pourquoi c’est important :** Aspose.PDF traite les pages comme une collection à indice zéro en interne, mais son API publique utilise des indices à partir de 1, donc `Pages[1]` correspond à la première page que vous venez d’ajouter. Ajouter les pages dès le départ vous donne une toile sur laquelle placer les champs de formulaire plus tard, et c’est bien moins coûteux que d’insérer des pages à la volée après que le document ait grandi. + +> **Astuce pro :** Si vous n’avez besoin que d’une seule page, vous pouvez ignorer la boucle et appeler `pdfDocument.Pages.Add()` une fois. Ajouter plusieurs pages dans une boucle rend le code plus évolutif. + +## Étape 2 : Définir un champ de formulaire TextBox sur la première page + +Maintenant que nous disposons de trois feuilles vierges, déposons une **textbox** sur la première. Un `TextBoxField` est un élément de formulaire que les utilisateurs finaux peuvent remplir lorsque le PDF est ouvert dans Acrobat Reader ou tout autre visualiseur PDF supportant les formulaires. + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**Pourquoi les coordonnées du rectangle ?** Aspose.PDF utilise des points (1/72 de pouce). Le rectangle `(100, 700, 300, 730)` place la zone de texte à peu près à mi‑hauteur de la page, 200 pt de large et 30 pt de haut. Ajustez ces valeurs selon votre mise en page. + +> **Question fréquente :** *Do I need to set the `Value` property?* +> Non, c’est optionnel. Le laisser vide affiche un champ vierge ; définir une valeur par défaut peut guider l’utilisateur. + +## Étape 3 : Ajouter des annotations Widget pour le même champ sur les pages 2 et 3 + +Un **widget** est la représentation visuelle d’un champ de formulaire sur une page spécifique. Par défaut, un champ n’apparaît que sur la page où il a été créé. Pour réutiliser la même zone de texte sur d’autres pages, vous attachez des objets `WidgetAnnotation` supplémentaires à la collection `Widgets` du champ. + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**Pourquoi les widgets ?** Sans eux, l’utilisateur ne verrait la zone de texte que sur la page 1, même si le champ sous‑jacent existe. Les widgets vous permettent de partager un même champ logique sur plusieurs pages, garantissant que le texte saisi apparaît partout où le champ est affiché. + +> **Cas particulier :** Si vous avez besoin de la zone de texte à des coordonnées différentes sur chaque page, il suffit de modifier les valeurs `Rectangle` pour chaque widget. + +## Étape 4 : Enregistrer le champ dans la collection de formulaires du document + +Aspose.PDF maintient un registre central de tous les champs de formulaire. Ajouter le champ à la collection `Form` le rend partie intégrante de la structure interactive du PDF. + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +Le deuxième argument (`"Comment"`) est le **fully qualified name** du champ. Il doit être unique dans tout le document ; sinon Aspose lèvera une exception. + +## Étape 5 : Enregistrer le PDF généré – Comment sauvegarder le PDF + +Enfin, nous persistons le document en mémoire sur le disque. C’est la partie **how to save pdf** du tutoriel. + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**Pourquoi spécifier un chemin absolu ?** Utiliser un chemin absolu évite les confusions concernant le répertoire de travail, surtout lorsqu’on exécute le programme depuis le débogueur de Visual Studio. Si vous préférez un chemin relatif, assurez‑vous simplement que le dossier existe avant d’appeler `Save`. + +### Résultat attendu + +Ouvrez *MultiWidgetField.pdf* avec Adobe Acrobat Reader. Vous verrez la même zone de texte sur les pages 1, 2 et 3. Tapez quelque chose dans le champ sur n’importe quelle page — le texte apparaît instantanément sur les autres pages car elles partagent le même champ de formulaire sous‑jacent. + +![Exemple de création de document PDF montrant une zone de texte sur trois pages](https://example.com/placeholder-image.png "Exemple de création de document PDF") + +*Texte alternatif de l’image : Exemple de création de document PDF montrant une zone de texte sur trois pages.* + +## Exemple complet, prêt à être exécuté + +Voici le programme complet que vous pouvez copier dans un nouveau projet console (`dotnet new console`) et exécuter. Toutes les étapes sont déjà ordonnées, et le code inclut des commentaires pour plus de clarté. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +Exécutez le programme, accédez à `C:\Temp\`, et ouvrez le PDF généré. Vous verrez les trois zones de texte identiques prêtes à recevoir des saisies utilisateur. + +## Variations courantes & cas particuliers + +| Scénario | Ce qu’il faut modifier | Pourquoi | +|----------|------------------------|----------| +| **Taille de la zone de texte différente sur chaque page** | Ajuster les valeurs `Rectangle` pour chaque `WidgetAnnotation`. | Permet d’adapter le champ à des mises en page variées. | +| **Champ en lecture seule** | Définir `commentField.ReadOnly = true;`. | Empêche les utilisateurs de modifier le contenu après le remplissage initial. | +| **Zone de texte multi‑ligne** | Définir `commentField.Multiline = true;` et augmenter la hauteur du rectangle. | Autorise des commentaires plus longs sans défilement. | +| **Ajout d’un second champ** | Créer un autre `TextBoxField` (ou tout `FormField`) et répéter les étapes 2‑4 avec un nouveau nom. | Vous pouvez collecter plusieurs informations dans le même PDF. | + +## Astuces pro & pièges à éviter + +- **Indexation des pages :** Rappelez‑vous que `pdfDocument.Pages[1]` correspond à la première page, pas `[0]`. Mélanger indices 0‑based et 1‑based entraîne des exceptions « Index out of range ». +- **Collisions de noms de champs :** Deux champs ne peuvent pas partager le même **fully qualified name**. Si vous obtenez une erreur de nom dupliqué, revérifiez la chaîne passée à `Form.Add`. +- **Licence vs. évaluation :** La version d’évaluation ajoute un filigrane sur chaque page. Déployez une licence valide pour le supprimer en production. +- **Performance :** Ajouter des centaines de pages dans une boucle est acceptable, mais si vous devez générer des PDF massifs (des milliers de pages), envisagez d’utiliser + +{{< /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/french/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/french/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..39d24b191 --- /dev/null +++ b/pdf/french/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,221 @@ +--- +category: general +date: 2026-03-06 +description: Créer un document PDF avec Aspose.PDF en C#. Apprenez à ajouter une page + PDF, dessiner un rectangle PDF, ajouter une forme PDF et contrôler l'épaisseur du + bord du rectangle — le tout dans un seul tutoriel. +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: fr +og_description: Créer un document PDF en C# avec Aspose.PDF. Ce tutoriel montre comment + ajouter une page PDF, dessiner un rectangle PDF, ajouter une forme PDF et définir + l'épaisseur du bord du rectangle. +og_title: Créer un document PDF avec Aspose.PDF – Guide complet +tags: +- Aspose.PDF +- C# +- PDF generation +title: Créer un document PDF avec Aspose.PDF – Guide étape par étape +url: /fr/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Créer un document PDF avec Aspose.PDF – Guide étape par étape + +Vous avez déjà eu besoin de **create PDF document** de manière programmatique et vous ne saviez pas par où commencer ? Vous n'êtes pas seul—de nombreux développeurs rencontrent le même problème lorsque leurs applications doivent générer des factures, des rapports ou des certificats à la volée. + +La bonne nouvelle, c’est qu’avec Aspose.PDF pour .NET, vous pouvez le faire en quelques lignes seulement, et vous apprendrez également comment **add page PDF**, **draw rectangle PDF**, **add shape PDF**, et ajuster l’**rectangle border thickness** en même temps. Plongeons‑y. + +## Ce que vous allez construire + +À la fin de ce guide, vous disposerez d’une application console C# entièrement fonctionnelle qui : + +1. **Creates a PDF document** from scratch. +2. **Adds a page PDF** to the document. +3. **Draws a rectangle PDF** on that page. +4. **Validates** that the rectangle stays inside the page bounds (**add shape PDF** step). +5. Sets a custom **rectangle border thickness**. +6. Saves the result as `ShapeValidated.pdf`. + +Pas de services externes, aucune configuration mystérieuse—juste du C# pur et Aspose.PDF. + +### Prérequis + +- .NET 6.0 ou ultérieur (le code fonctionne également avec .NET Framework 4.6+). +- Une référence au package NuGet `Aspose.Pdf`. Vous pouvez l’ajouter via : + +```bash +dotnet add package Aspose.Pdf +``` + +- Un éditeur de texte ou un IDE—Visual Studio, VS Code, Rider, ce que vous préférez. + +> **Astuce :** Si vous travaillez sur une machine d’entreprise, assurez‑vous que le flux NuGet n’est pas bloqué ; sinon vous obtiendrez une erreur « Package not found ». + +## Créer un document PDF – Initialiser le Document + +La toute première étape consiste à créer un objet `Document`. Considérez‑le comme la toile vierge sur laquelle chaque page et chaque forme vivront. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +Pourquoi avons‑nous besoin de cet objet ? Il représente le fichier PDF complet en mémoire, nous donnant accès à la collection `Pages`, aux métadonnées et aux paramètres de sécurité. Une fois le document créé, vous pouvez commencer à empiler des pages, du texte, des images et des graphiques vectoriels. + +## Ajouter une page au PDF (add page pdf) + +Un PDF sans pages est essentiellement un fichier vide—inutile. Ajouter une page est simple, et vous pouvez personnaliser sa taille si vous le souhaitez. Ici nous conservons la taille A4 par défaut. + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +La méthode `Add()` renvoie une nouvelle instance `Page` déjà intégrée à la collection `Pages`, vous permettant de commencer immédiatement à y dessiner. Dans des scénarios réels, vous pourriez parcourir un jeu de données et ajouter des dizaines de pages ; le même appel d’une seule ligne fonctionne pour chaque itération. + +## Dessiner une forme rectangle (draw rectangle pdf) + +Passons maintenant à la partie visuelle : un rectangle avec une bordure visible. C’est ici que **draw rectangle pdf** entre en jeu. + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +Quelques points à noter : + +- `Rect` utilise des points (1 pt ≈ 1/72 pouce). Les coordonnées définissent les coins inférieur‑gauche et supérieur‑droit, vous permettant de contrôler précisément la largeur et la hauteur. +- `BorderInfo` vous permet de spécifier quels côtés reçoivent une ligne et son épaisseur. Ici nous appliquons une ligne de 2 points à **tous** les côtés, donnant au rectangle un aspect net et uniforme. + +## Valider le placement de la forme (add shape pdf) + +Avant d’insérer le rectangle dans la page, il est judicieux de vérifier qu’il tient dans la zone imprimable de la page. Aspose.PDF fournit une méthode d’assistance pratique à cet effet. + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +Pourquoi s’en soucier ? Si vous placez accidentellement une forme partiellement hors‑écran, le visualiseur PDF peut la couper, entraînant une expérience utilisateur confuse. Cette clause de garde **add shape pdf** garantit que vous n’ajoutez que du contenu qui sera entièrement visible. + +## Enregistrer le PDF (add page pdf) + +Enfin, nous persistons le document en mémoire sur le disque. Vous pouvez choisir n’importe quel emplacement où vous avez les droits d’écriture. + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +Après avoir exécuté le programme, ouvrez `ShapeValidated.pdf`—vous devriez voir une seule page avec un rectangle bordé proprement, centré approximativement au milieu. + +## Résultat attendu + +Lorsque vous ouvrez le PDF généré, vous verrez : + +- Une page au format A4. +- Un rectangle dont le coin inférieur‑gauche commence à (50 pt, 50 pt) et dont le coin supérieur‑droit se termine à (600 pt, 800 pt). +- Une bordure de **2 points d’épaisseur** entourant le rectangle. + +Si la console a affiché « PDF created successfully! », vous savez que le code s’est exécuté sans déclencher la vérification des limites. + +![Diagramme montrant comment créer un document PDF avec Aspose.PDF](https://example.com/diagram-create-pdf.png "Créer un document PDF – aperçu visuel") + +*Le texte alternatif de l’image inclut le mot‑clé principal pour satisfaire les exigences SEO.* + +## Questions fréquentes & cas limites + +### Et si j’ai besoin d’une taille de page différente ? + +Remplacez la page par défaut par une taille personnalisée : + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### Comment changer la couleur de la bordure ? + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### Puis‑je ajouter plusieurs formes sur la même page ? + +Absolument. Répétez simplement le bloc **add shape pdf** avec un nouveau `RectangleShape` (ou d’autres sous‑classes `Shape`) et ajustez les coordonnées `Rect` en conséquence. + +### Que faire si le rectangle dépasse les limites de la page ? + +L’appel `IsShapeWithinBounds` renverra `false`. Dans le code de production, vous pourriez vouloir redimensionner automatiquement la forme : + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +## Récapitulatif + +Nous avons parcouru l’ensemble du cycle de vie de **creating a PDF document** avec Aspose.PDF : + +1. Initialiser le `Document`. +2. **Add a page PDF** en utilisant `Pages.Add()`. +3. **Draw a rectangle PDF** via `RectangleShape`. +4. **Add shape PDF** uniquement après avoir confirmé qu’il reste à l’intérieur de la page. +5. Contrôler l’**rectangle border thickness** avec `BorderInfo`. +6. Enregistrer le fichier. + +C’est l’ensemble du flux de travail en moins de 60 lignes de code. + +## Et après ? + +- **Ajouter du texte** : utilisez `TextFragment` pour placer des titres ou des libellés à l’intérieur du rectangle. +- **Insérer des images** : la classe `Image` vous permet d’intégrer des logos ou des graphiques. +- **Créer des tableaux** : parfait pour les factures ou les rapports de données. +- **Appliquer la sécurité** : protégez le PDF par mot de passe s’il contient des données sensibles. + +Chacun de ces sujets s’appuie sur les fondamentaux présentés ici, vous plaçant ainsi en bonne position pour explorer des scénarios de génération PDF plus avancés. + +### Continuez à expérimenter + +Ne vous arrêtez pas à un seul rectangle—expérimentez avec différentes formes, couleurs et styles de ligne. L’API Aspose.PDF est riche, et plus vous bidouillez, plus vous vous sentirez à l’aise. Si vous rencontrez un problème, la documentation officielle d’Aspose est un excellent compagnon, mais rappelez‑vous que le code ci‑dessus est une solution complète, prête à copier‑coller, que vous pouvez exécuter dès aujourd’hui. + +Bon codage, et que vos PDF s’affichent toujours exactement comme vous l’avez imaginé ! + +{{< /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/french/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/french/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..e95a5d894 --- /dev/null +++ b/pdf/french/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,250 @@ +--- +category: general +date: 2026-03-06 +description: Apprenez à censurer un PDF à l'aide d'Aspose PDF en C#. Ce guide pas + à pas montre comment charger un document PDF en C#, accéder à la première page du + PDF et supprimer une image du PDF. +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: fr +og_description: Comment censurer rapidement un PDF avec Aspose PDF en C#. Charger + le document PDF, accéder à la première page du PDF et supprimer l'image du PDF en + quelques lignes de code. +og_title: Comment caviarder un PDF en C# – Tutoriel Aspose PDF +tags: +- Aspose PDF +- C# +- PDF Redaction +title: Comment caviarder un PDF en C# avec Aspose PDF – Guide complet +url: /fr/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment caviarder un PDF en C# avec Aspose PDF – Guide complet + +Vous vous êtes déjà demandé **comment caviarder un PDF** sans effort ? Peut‑être avez‑vous reçu un contrat qui masque un logo confidentiel, ou un rapport qui affiche encore une image de remplacement que vous devez effacer. Dans ces cas‑là, vous voudrez une méthode fiable et programmatique pour supprimer ce contenu—sans aucune manipulation manuelle d’Acrobat. + +Dans ce tutoriel, nous parcourrons une solution concise, de bout en bout qui **charge un document PDF en C#**, **accède à la première page du PDF**, puis **supprime une image du PDF** en utilisant la puissante bibliothèque **Aspose PDF**. À la fin, vous disposerez d’un PDF entièrement caviardé prêt à être distribué, et vous comprendrez pourquoi chaque ligne de code est importante. + +> **Astuce :** Aspose PDF fonctionne avec .NET Framework 4.6+ et .NET Core 3.1+, vous êtes donc couvert que vous soyez sous Windows, Linux ou macOS. + +--- + +![exemple de caviardage de pdf](redact-pdf-before-after.png){alt="exemple de caviardage de pdf"} + +## Ce dont vous avez besoin + +- **Aspose.PDF for .NET** (dernier package NuGet) +- Un **environnement de développement C#** (Visual Studio, Rider ou VS Code) +- Un PDF d’exemple contenant une ressource image que vous souhaitez effacer (nous l’appellerons `Sensitive.pdf`) + +Aucun outil tiers supplémentaire, pas d’OCR, juste du code pur. + +--- + +## Étape 1 : Charger le document PDF en C# – La première étape + +Avant de pouvoir caviarder quoi que ce soit, vous devez charger le fichier en mémoire. La classe `Document` est le point d’entrée pour chaque opération Aspose PDF. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**Pourquoi c’est important :** +`Document` analyse toute la structure du PDF, construisant un modèle d’objet qui vous permet de manipuler les pages, les ressources et les annotations. Si le fichier ne peut pas être chargé (chemin incorrect, PDF corrompu), une exception sera immédiatement levée—vous savez ainsi rapidement qu’il y a un problème. + +### Piège courant + +> *« J’obtiens une `FileNotFoundException` alors que le fichier existe. »* +> Assurez‑vous que le chemin est absolu ou que le répertoire de travail de votre projet correspond à l’emplacement de `Sensitive.pdf`. Utiliser `Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")` peut aider à éviter les problèmes de chemins relatifs. + +--- + +## Étape 2 : Accéder à la première page du PDF – Où se trouve l’image + +Les images sont stockées comme ressources par page. Dans de nombreux PDF simples, la première page est la coupable, récupérons‑la. + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**Pourquoi c’est important :** +Aspose PDF utilise un index à base 1 pour les pages, ce qui est un peu inhabituel comparé à la plupart des collections .NET. Accéder à la mauvaise page pourrait signifier que vous caviardez le mauvais contenu—ou pire, que vous laissez l’image sensible intacte. + +### Considération de cas limites + +Si votre document n’a aucune page (PDF vide), tenter `pdfDocument.Pages[1]` lèvera une `IndexOutOfRangeException`. Une vérification rapide peut vous sauver : + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +--- + +## Étape 3 : Supprimer l’image du PDF – Caviarder la ressource + +Aspose PDF vous permet de supprimer une ressource par son nom. La plupart des images sont nommées `Im1`, `Im2`, etc., mais vous pouvez inspecter `firstPage.Resources.Images` pour confirmer. + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**Pourquoi c’est important :** +`RedactResource` supprime l’image *et* toutes les références à celle‑ci sur la page, garantissant que le vide visuel est rempli d’une zone blanche plutôt que d’un lien cassé. C’est une méthode propre, conforme aux standards PDF, pour effacer du contenu. + +### Comment trouver le nom correct de l’image + +Si vous n’êtes pas sûr que l’image s’appelle `"Im1"` : + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +Exécutez ce fragment, vérifiez la sortie console, et remplacez `"Im1"` par la clé réelle affichée. + +--- + +## Étape 4 : Enregistrer le PDF caviardé – Terminer le travail + +Maintenant que l’image indésirable a disparu, écrivez les modifications sur le disque. + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**Pourquoi c’est important :** +Enregistrer dans un fichier **nouveau** garde l’original intact—un filet de sécurité au cas où vous auriez besoin de revenir en arrière. Si vous devez écraser, pointez simplement la méthode `Save` vers le chemin original, mais sachez que l’opération est irréversible. + +### Vérification du résultat + +Ouvrez `Redacted.pdf` dans n’importe quel lecteur PDF. L’emplacement de l’image devrait apparaître vide, et le reste du document devrait être identique à l’original. Si la mise en page de la page semble décalée, revérifiez que vous avez supprimé uniquement la ressource prévue et non un XObject partagé. + +--- + +## Exemple complet fonctionnel + +En réunissant tous les éléments, voici le programme complet, prêt à être exécuté : + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**Sortie attendue** (dans la console) : + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +Lorsque vous ouvrez `Redacted.pdf`, l’image qui était `Im1` aura disparu, laissant une page propre. + +--- + +## Questions fréquentes + +### Cela fonctionne‑t‑il avec des PDF chiffrés ? + +Si le PDF source est protégé par un mot de passe, transmettez le mot de passe au constructeur `Document` : + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### Et si l’image apparaît sur plusieurs pages ? + +Parcourez chaque page et appelez `RedactResource` sur le même nom d’image (ou découvrez le nom par page). Exemple : + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### Puis‑je caviarder du texte de la même façon ? + +Oui—utilisez `page.Contents.RedactText("confidential")` ou employez la classe `Redactor` pour des modèles plus avancés. C’est un tutoriel complet à part, mais le principe reflète ce que nous avons fait pour les images. + +--- + +## Conclusion – Ce que nous avons accompli + +Nous avons répondu à la question **comment caviarder un PDF** de façon programmatique en : + +1. **Charger le document PDF en C#** avec Aspose PDF. +2. **Accéder à la première page du PDF** pour localiser la ressource cible. +3. **Supprimer l’image du PDF** via `RedactResource`. +4. **Enregistrer** la version nettoyée en toute sécurité. + +Cette approche est rapide, reproductible, et fonctionne en traitements batch—parfaite pour les pipelines de conformité ou la génération automatisée de rapports. + +Si vous êtes prêt à aller plus loin, envisagez d’explorer : + +- **Caviardage par lots** d’un dossier complet de PDFs. +- **Caviarder du texte** avec des expressions régulières en utilisant `Redactor`. +- **Intégrer un filigrane** après le caviardage pour indiquer « sanitized ». + +Essayez‑le, ajustez la logique du nom d’image pour vos propres fichiers, + +{{< /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/french/net/performance-optimization/_index.md b/pdf/french/net/performance-optimization/_index.md index 68fc4e591..bc12bafd4 100644 --- a/pdf/french/net/performance-optimization/_index.md +++ b/pdf/french/net/performance-optimization/_index.md @@ -50,6 +50,9 @@ Maîtrisez l'art de convertir des fichiers SVG en PDF avec précision et efficac ### [Désintégrer les polices dans les fichiers PDF avec Aspose.PDF pour .NET : réduire la taille des fichiers et améliorer les performances](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) Découvrez comment désincorporer les polices de vos fichiers PDF avec Aspose.PDF pour .NET. Optimisez les performances de vos PDF, réduisez la taille de vos fichiers et améliorez les temps de chargement grâce à ce guide étape par étape. +### [Comment compresser un PDF avec Aspose.PDF – guide rapide](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) +Apprenez à compresser rapidement vos fichiers PDF avec Aspose.PDF grâce à ce guide pratique, incluant des exemples de code C# simples. + ## Ressources supplémentaires - [Aspose.PDF pour la documentation réseau](https://docs.aspose.com/pdf/net/) diff --git a/pdf/french/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/french/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..2e71092f5 --- /dev/null +++ b/pdf/french/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,203 @@ +--- +category: general +date: 2026-03-06 +description: Apprenez à compresser un PDF instantanément avec Aspose.Pdf. Ce guide + montre comment réduire la taille d’un fichier PDF avec une compression PDF sans + perte. +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: fr +og_description: Comment compresser un PDF avec Aspose.Pdf ? Suivez ce tutoriel étape + par étape pour réduire la taille du fichier PDF, obtenir une compression PDF sans + perte et enregistrer des fichiers PDF optimisés. +og_title: Comment compresser un PDF avec Aspose.Pdf – guide rapide +tags: +- pdf +- aspnet +- csharp +title: Comment compresser un PDF avec Aspose.Pdf – guide rapide +url: /fr/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# comment compresser pdf avec Aspose.Pdf – guide rapide + +Vous vous êtes déjà demandé **comment compresser pdf** sans le transformer en un flou indéchiffrable ? Vous n'êtes pas seul. La plupart des développeurs se heurtent à un mur lorsqu'ils doivent **réduire la taille du fichier pdf** pour les pièces jointes d'e‑mail, les téléchargements web ou les limites de stockage, tout en craignant de perdre la qualité des images. + +Dans ce tutoriel, nous parcourrons un exemple complet, prêt à l’emploi, qui vous montre exactement **comment compresser pdf** en utilisant l’optimiseur intégré d’Aspose.Pdf. À la fin, vous saurez **réduire la taille du fichier pdf**, garder vos images nettes grâce à la **compression pdf sans perte**, et enfin **enregistrer les pdf optimisés** qui fonctionnent parfaitement avec n’importe quel lecteur. + +## Ce que vous apprendrez + +- Charger un PDF lourd (par ex., rempli d’images haute résolution) en mémoire. +- Appliquer l’optimiseur d’Aspose.Pdf avec ses paramètres par défaut sans perte. +- Persister le résultat sous forme d’un nouveau fichier plus petit. +- Astuces pour ajuster la compression si vous avez besoin d’une réduction supplémentaire. + +Pas d’outils externes, pas de tours de passe‑passe en ligne de commande—juste du code C# propre et des explications claires. + +## Prérequis + +| Exigence | Pourquoi c'est important | +|----------|---------------------------| +| .NET 6.0 ou version ultérieure (ou .NET Framework 4.6+) | Aspose.Pdf prend en charge les deux ; les runtimes plus récents offrent de meilleures performances. | +| Package NuGet Aspose.Pdf for .NET (`Aspose.Pdf`) | La classe `Document` se trouve ici. | +| Un PDF contenant de grandes images (par ex., `HeavyImages.pdf`) | Vous donne quelque chose de concret à réduire. | +| Visual Studio, Rider ou tout éditeur C# de votre choix | Le confort est essentiel—choisissez ce qui vous semble naturel. | + +> **Astuce pro :** Si vous travaillez sur une pipeline CI/CD, ajoutez la référence NuGet dans votre `.csproj` afin que la construction ne l’oublie jamais. + +```xml + + + +``` + +## Étape 1 : Charger le PDF que vous souhaitez compresser + +Tout d’abord, nous avons besoin d’un objet `Document` qui pointe vers le fichier source. Pensez‑y comme à l’ouverture d’un livre avant de commencer à modifier les chapitres. + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*Pourquoi c'est important :* Le chargement du fichier donne à Aspose.Pdf la possibilité de lire toutes les ressources incorporées (images, polices, etc.). Sans cette étape, il n’y a rien à **réduire la taille du fichier pdf**. + +## Étape 2 : Appliquer la compression PDF sans perte + +Aspose.Pdf propose une méthode `Optimize` qui, par défaut, exécute une routine de **compression pdf sans perte**. Elle supprime les objets redondants, recomprime les images en conservant la même fidélité visuelle et élimine les polices inutilisées. + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*Pourquoi c'est important :* L’optimiseur par défaut est conçu pour **réduire la taille du fichier pdf** tout en préservant chaque pixel. Si vous décidez plus tard de tolérer une légère perte de qualité, les `OptimizationOptions` commentées vous permettent d’échanger quelques kilo‑octets supplémentaires contre de la vitesse. + +## Étape 3 : Enregistrer le PDF optimisé + +Maintenant que le document est plus léger, nous l’écrivons dans un nouveau fichier. Conserver l’original intact est une bonne habitude, surtout lorsque vous testez différents paramètres. + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +Après l’enregistrement, comparez les tailles de fichier : + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +Vous devriez constater une baisse notable—souvent **30‑70 %** selon le nombre d’images haute résolution présentes dans le source. + +![illustration de comment compresser pdf](image.png "comment compresser pdf") + +*Texte alternatif de l'image :* comment compresser pdf – avant et après optimisation + +## Avancé : Ajuster la compression pour des scénarios spécifiques + +Si l’optimiseur par défaut convient à la plupart des cas, il arrive que vous deviez **réduire la taille du fichier pdf** encore davantage : + +| Scénario | Paramètre à ajuster | Effet | +|----------|---------------------|-------| +| PDFs contenant de nombreuses images raster | `CompressImages = true` + `ImageQuality` plus bas (ex., 70) | Réduit le nombre d’octets des images, légère perte visuelle. | +| PDFs avec des polices dupliquées | `RemoveUnusedObjects = true` | Supprime les polices qui ne sont pas référencées. | +| PDFs avec de grandes métadonnées | `RemoveMetadata = true` | Élimine les blocs XML/métadonnées cachés. | + +Vous pouvez combiner ces options dans un objet `OptimizationOptions` et le passer à `pdfDoc.Optimize(options)`. + +## Questions fréquentes & cas particuliers + +**Et si le PDF est déjà optimisé ?** +Aspose.Pdf analysera toujours le document, mais le changement de taille sera minime. Exécuter l’optimiseur sur un fichier déjà léger est sûr ; cela ne corrompt rien. + +**Puis‑je compresser des PDFs chiffrés ?** +Oui, mais vous devez fournir le mot de passe avant d’appeler `Optimize`. Exemple : + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**Qu’en est‑il des PDFs contenant des graphiques vectoriels ?** +Les objets vectoriels sont déjà légers, donc l’optimiseur se concentre sur les images raster et les métadonnées. Attendez‑vous à des gains modestes pour les fichiers purement vectoriels. + +## Exemple complet, exécutable + +Voici une application console autonome que vous pouvez copier‑coller dans un nouveau `.csproj`. Elle montre tout ce qui a été abordé—du chargement à la vérification. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +Exécutez le programme, ouvrez `Optimized.pdf` dans n’importe quel lecteur, et vous verrez la même mise en page, les mêmes images nettes, mais un fichier plus mince. C’est la magie de la **compression pdf sans perte**. + +## Conclusion + +Nous avons couvert **comment compresser pdf** en utilisant l’optimiseur intégré d’Aspose.Pdf, démontré un flux de travail pratique pour **réduire la taille du fichier pdf**, et expliqué les raisons sous‑jacentes à chaque étape. En suivant le schéma en trois étapes—charger, optimiser, enregistrer—vous pouvez **réduire la taille du fichier pdf** à la volée, garder vos images intactes avec la **compression pdf sans perte**, et enregistrer en toute confiance des **pdf optimisés** pour une utilisation en aval. + +Prêt pour le prochain défi ? Essayez de chaîner cet optimiseur avec un script batch pour traiter un dossier entier, ou expérimentez les `OptimizationOptions` optionnelles pour extraire les derniers kilo‑octets. Les mêmes principes s’appliquent que vous travailliez sur un outil de bureau, une API web ou un job batch côté serveur. + +Vous avez d’autres questions sur la manipulation de PDF, les particularités d’Aspose.Pdf, ou les I/O de fichiers .NET ? Laissez un commentaire ci‑dessous, et continuons la conversation. Bonne compression ! + +{{< /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/french/net/programming-with-security-and-signatures/_index.md b/pdf/french/net/programming-with-security-and-signatures/_index.md index e15eecf78..3d97192c4 100644 --- a/pdf/french/net/programming-with-security-and-signatures/_index.md +++ b/pdf/french/net/programming-with-security-and-signatures/_index.md @@ -34,6 +34,8 @@ Ce tutoriel vous offre un aperçu détaillé des méthodes et techniques permett | [Signer avec une carte à puce à l'aide d'une signature de fichier PDF](./sign-with-smart-card-using-pdf-file-signature/) | Apprenez à signer des fichiers PDF à l'aide d'une carte à puce avec Aspose.PDF pour .NET. Suivez ce guide étape par étape pour des signatures numériques sécurisées. | | [Signer avec une carte à puce en utilisant le champ de signature](./sign-with-smart-card-using-signature-field/) | Apprenez à signer des PDF en toute sécurité à l'aide d'une carte à puce avec Aspose.PDF pour .NET. Suivez notre guide étape par étape pour une mise en œuvre facile. | | [Vérifier les signatures PDF en C# – Lire les fichiers PDF signés](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) | Apprenez à lire et analyser les signatures numériques des PDF avec Aspose.PDF pour .NET en C#. | +| [Comment vérifier la signature dans un PDF avec C# – Guide complet Aspose](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) | Apprenez à vérifier les signatures PDF en C# avec Aspose.PDF – guide complet étape par étape. | +| [Ajouter une signature numérique PDF en C# – Guide complet étape par étape](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) | Apprenez à ajouter une signature numérique à un PDF en C# avec Aspose.PDF, guide complet étape par étape. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/french/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/french/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..bd22749b8 --- /dev/null +++ b/pdf/french/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,260 @@ +--- +category: general +date: 2026-03-06 +description: Ajouter une signature numérique PDF avec Aspose.PDF. Apprenez à créer + une signature détachée PKCS7 et à signer un PDF à l’aide d’un fichier PFX avec un + rappel personnalisé. +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: fr +og_description: Ajoutez rapidement une signature numérique à un PDF. Ce guide montre + comment créer une signature détachée PKCS7 et signer un PDF en utilisant un fichier + PFX en C#. +og_title: Ajouter une signature numérique PDF en C# – Tutoriel complet de programmation +tags: +- Aspose.PDF +- C# +- Digital Signature +title: Ajouter une signature numérique PDF en C# – Guide complet étape par étape +url: /fr/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Ajouter digital signature pdf – Guide complet étape par étape + +Vous avez déjà eu besoin d'**add digital signature pdf** mais vous ne saviez pas par où commencer ? Vous n'êtes pas seul ; de nombreux développeurs rencontrent le même problème lorsque les documents exigent une signature juridiquement contraignante et que le code ne sait générer que des PDF simples. + +Dans ce tutoriel, nous allons parcourir une solution pratique qui vous permet d'**add digital signature pdf** des documents en utilisant Aspose.PDF for .NET, de créer une signature PKCS#7 détachée, et de signer le PDF avec un certificat PFX — le tout en pur C#. À la fin, vous disposerez d’un extrait prêt à l’exécution, comprendrez le « pourquoi » de chaque appel, et saurez comment adapter l’approche aux cas particuliers. + +## Ce que vous allez apprendre + +- Comment charger un PDF non signé et le préparer pour la signature. +- La mécanique d’une **create pkcs7 detached signature** et pourquoi vous pourriez préférer une signature détachée à une intégrée. +- Les étapes exactes pour **sign pdf using pfx** avec un rappel personnalisé, vous donnant un contrôle total sur le processus cryptographique. +- Astuces pour dépanner les problèmes courants (certificat manquant, algorithme de hachage incorrect, etc.). + +### Prérequis + +| Exigence | Raison | +|----------|--------| +| .NET 6.0 ou version ultérieure | Fonctionnalités modernes du langage et meilleure gestion de la mémoire. | +| Aspose.PDF for .NET (package NuGet) | Fournit `PdfFileSignature`, `PKCS7Detached` et d'autres utilitaires PDF. | +| Un fichier PFX valide (`.pfx`) avec clé privée | Nécessaire pour l'étape **sign pdf using pfx**. | +| Connaissances de base en C# | Le code est simple, mais comprendre les instructions `using` aide. | + +> **Astuce :** Gardez votre mot de passe PFX hors du contrôle de version — utilisez des variables d'environnement ou Azure Key Vault en production. + +--- + +## Comment ajouter digital signature pdf avec Aspose.PDF + +Ci‑dessous, nous décomposons le processus en cinq étapes digestes. Chaque étape comprend un extrait de code, une explication du *pourquoi* et une petite vérification de bon sens. + +![Capture d'écran d'un PDF signé dans un visualiseur, montrant un champ de signature visible](/images/add-digital-signature-pdf.png "exemple d'add digital signature pdf") + +### Étape 1 – Charger le document PDF non signé + +Tout d'abord, nous avons besoin d’un objet `Document` qui représente le PDF que vous souhaitez signer. L’utilisation de `using var` garantit que le handle du fichier est libéré automatiquement. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**Pourquoi ?** +Aspose traite un PDF comme un graphe d’objets ; le charger vous donne accès aux pages, aux annotations et au flux d’octets interne qui sera ensuite haché pour la signature. + +### Étape 2 – Initialiser l’assistant PdfFileSignature + +`PdfFileSignature` est la classe qui applique réellement l’enveloppe cryptographique. Elle travaille main‑dans‑la‑main avec `PKCS7Detached`. + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**Pourquoi ?** +Séparer le signataire du document vous permet de réutiliser la même instance `Document` pour d’autres opérations (par ex., ajouter des filigranes) avant de finaliser la signature. + +### Étape 3 – Créer une signature PKCS#7 détachée (Create PKCS7 Detached Signature) + +Une **PKCS#7 detached signature** ne stocke que le hachage du PDF, pas le PDF lui‑même. C’est idéal pour les documents volumineux ou lorsque vous devez garder le fichier original inchangé. + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**Pourquoi un rappel personnalisé ?** +Parfois, la clé de signature réside dans un HSM ou Azure Key Vault, et vous ne pouvez pas extraire la clé privée directement. En fournissant `CustomSignHash`, vous transmettez le hachage au service qui détient la clé, gardant le matériel privé sécurisé. + +**Et si vous n’avez pas besoin d’un rappel personnalisé ?** +Vous pouvez omettre `CustomSignHash` ; Aspose utilisera automatiquement la clé privée contenue dans le PFX. Cependant, la voie personnalisée est plus flexible et répond aux exigences de conformité. + +### Étape 4 – Appliquer la signature à une page spécifique (Sign PDF Using PFX) + +Nous plaçons maintenant un champ de signature visible sur la page. Le rectangle définit la position et la taille (en points). + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**Pourquoi spécifier un rectangle ?** +Une signature visible aide les utilisateurs finaux à constater que le document est signé. Si vous définissez `isVisible` à `false`, la signature devient invisible — toujours valide, mais plus difficile à repérer. + +**Cas limite :** Si le PDF ne contient aucune page (fichier vide), l’appel lève `ArgumentOutOfRangeException`. Vérifiez toujours que `pdfDocument.Pages.Count > 0` avant de signer. + +### Étape 5 – Enregistrer le PDF signé + +Enfin, persistez le document signé sur le disque. Vous pouvez également le diffuser directement dans une réponse ASP.NET Core. + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**Astuce de vérification :** Ouvrez le fichier résultant dans Adobe Acrobat Reader. Le panneau des signatures doit afficher une coche verte (à condition que le certificat soit approuvé sur la machine). + +--- + +## Exemple complet fonctionnel + +En réunissant le tout, voici un programme console autonome que vous pouvez copier‑coller et exécuter (après avoir ajusté les chemins et les mots de passe). + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**Sortie attendue :** La console affiche « ✅ PDF signed successfully! » et le fichier `CustomSigned.pdf` apparaît dans le même dossier. Lorsqu’il est ouvert, vous verrez un widget de signature aux coordonnées (100,100)‑(300,200). + +--- + +## Questions fréquentes et cas limites + +### Et si mon PFX est protégé par une carte à puce ? + +Utilisez le délégué `CustomSignHash` pour transmettre le hachage au pilote de la carte à puce. Le pilote renverra les octets de signature, et Aspose les intégrera sans jamais exposer la clé privée. + +### Puis-je signer plusieurs pages en même temps ? + +Oui. Appelez `pdfSigner.Sign` dans une boucle, en ajustant `pageNumber` et éventuellement le rectangle pour chaque page. Chaque appel ajoute un objet de signature distinct ; certains visualiseurs les listent séparément. + +### Comment changer l'algorithme de hachage ? + +`PKCS7Detached` utilise SHA‑256 par défaut, mais vous pouvez définir la propriété `HashAlgorithm` : + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +Assurez‑vous que votre fournisseur de signature prend en charge l’algorithme choisi. + +### Et si la chaîne de certificats n’est pas fiable sur la machine cliente ? + +Incluez la chaîne complète dans le PFX, ou distribuez le certificat racine dans le magasin de confiance de l’utilisateur final. Sinon, Acrobat affichera « Signature inconnue ». + +### Une signature détachée est‑elle compatible avec PDF/A‑3 ? + +PDF/A‑3 exige des signatures intégrées, donc une PKCS#7 détachée peut ne pas être conforme. Dans ce cas, supprimez le délégué `CustomSignHash` et laissez Aspose gérer la signature en interne, ce qui crée une signature intégrée. + +--- + +## Bonnes pratiques pour la production + +1. **Ne jamais coder en dur les mots de passe.** Récupérez‑les depuis des variables d’environnement ou un gestionnaire de secrets. +2. **Valider le PDF avant de signer.** Les fichiers corrompus provoquent `PdfFileSignatureException`. +3. **Consigner l'algorithme de hachage et l'empreinte du certificat** pour les pistes d’audit. +4. **Tester avec plusieurs visionneuses PDF** (Adobe Reader, Foxit, Chrome) afin de garantir que la signature apparaît comme prévu. +5. **Envisager le horodatage** en ajoutant une requête TSA (Time‑Stamp Authority), ce qui renforce davantage la valeur juridique de la signature. + +--- + +## Conclusion + +Nous venons de vous montrer comment **add digital signature pdf** des fichiers en utilisant Aspose.PDF, créer une **PKCS#7 detached signature**, et **sign pdf using pfx** avec un rappel personnalisé. L’exemple complet fonctionne immédiatement, et les explications vous donnent la confiance nécessaire pour adapter le processus aux HSM, aux services de timestamp ou à la conformité PDF/A. + +Ensuite, vous pourriez explorer **la signature de plusieurs documents en lot**, l’intégration **Azure Key Vault** pour le stockage sécurisé des clés, ou la **personnalisation visuelle** de l’apparence de la signature. Chacun de ces sujets s’appuie directement sur les bases posées ici. + +Si vous avez suivi les étapes, vous disposez maintenant d’une solution solide, digne d’être citée, que vous pouvez partager avec vos collègues — ou même référencer dans la réponse d’un assistant IA. Bonne signature, et n’hésitez pas à laisser un commentaire si quelque chose n’est pas clair ! + +{{< /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/french/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/french/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..f97824b28 --- /dev/null +++ b/pdf/french/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-03-06 +description: Apprenez à vérifier la signature dans un PDF avec Aspose PDF en C#. Vérification + de la signature PDF étape par étape, validez la signature PDF et gérez les signatures + compromises. +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: fr +og_description: Comment vérifier la signature dans un PDF avec Aspose PDF. Suivez + ce guide pour effectuer la vérification de la signature PDF, valider la signature + PDF et détecter les signatures compromises en C#. +og_title: Comment vérifier la signature dans un PDF avec C# – Guide complet Aspose +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: Comment vérifier une signature dans un PDF avec C# – Guide complet Aspose +url: /fr/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment vérifier une signature dans un PDF avec C# – Guide complet Aspose + +Vous vous êtes déjà demandé **comment vérifier une signature** dans un PDF sans perdre patience ? Vous n'êtes pas seul. De nombreux développeurs se heurtent à un mur lorsqu'ils ont besoin de **pdf signature verification** pour des raisons de conformité ou d'audit, et l'approche habituelle « faire confiance à la bibliothèque » peut se retourner contre vous. + +Dans ce tutoriel, nous parcourrons une solution pratique, de bout en bout, qui non seulement **validate pdf signature** mais indique également si la signature a été altérée. Nous utiliserons la bibliothèque **Aspose PDF**, ce qui signifie que le code fonctionne sur .NET 6+, .NET Framework 4.6+ et même .NET Core. À la fin, vous disposerez d’un extrait prêt à l’exécution que vous pourrez intégrer à n’importe quel projet C#. + +## Ce dont vous avez besoin + +- **Aspose.Pdf** package NuGet (dernière version au moment de la rédaction – 23.12). +- Environnement de développement .NET (Visual Studio, Rider ou VS Code). +- Un fichier PDF signé (nous l’appellerons `Signed.pdf`). +- Connaissances de base en C# – rien de compliqué, juste les habituelles instructions `using` et les entrées/sorties `Console`. + +C’est tout. Aucun service supplémentaire, aucun fichier de configuration obscur. Prêt ? Plongeons‑y. + +![diagramme de vérification de signature](image.png "comment vérifier la signature") + +## Étape 1 : Configurer votre projet pour la vérification de signature PDF + +Avant de pouvoir appeler une API Aspose, vous devez référencer la bibliothèque. Ouvrez votre terminal ou la console du gestionnaire de packages et exécutez : + +```bash +dotnet add package Aspose.Pdf +``` + +Ou, si vous préférez l’interface graphique, recherchez **Aspose.Pdf** dans le gestionnaire de packages NuGet et installez‑le. Cette étape est cruciale car sans l’assembly **aspose pdf signature**, vous ne pourrez pas accéder plus tard à la classe `PdfFileSignature`. + +> **Astuce :** Ciblez .NET 6 ou supérieur pour obtenir les meilleures performances et éviter les avertissements de compatibilité héritée. + +## Étape 2 : Charger le document PDF + +Maintenant que le package est installé, nous pouvons charger le PDF que nous voulons vérifier. La classe `Document` représente le fichier complet en mémoire. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**Pourquoi c’est important :** Charger le document nous donne accès à ses structures internes, y compris les champs de signature. Si le fichier est manquant ou corrompu, `Document` lèvera une exception, que vous pouvez intercepter pour offrir une expérience utilisateur plus fluide. + +## Étape 3 : Créer l’objet Aspose PdfFileSignature + +Avec le document en main, l’étape suivante consiste à instancier `PdfFileSignature`. Cette classe façade sait comment lire, vérifier et manipuler les signatures numériques intégrées aux PDF. + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**Explication :** Le constructeur `PdfFileSignature` prend le `Document` chargé. En interne, il analyse le dictionnaire de signature, rendant disponibles des méthodes comme `VerifySignature` et `IsSignatureCompromised`. + +## Étape 4 : Vérifier l’intégrité de la signature + +Le cœur de la **pdf signature verification** est la méthode `VerifySignature`. Elle renvoie `true` si le hachage cryptographique correspond à la valeur stockée et que la chaîne de certificats est fiable (à condition d’avoir configuré un gestionnaire de confiance, ce que nous omettrons pour plus de concision). + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +Si vous avez plusieurs signatures, modifiez simplement l’index (`0`, `1`, …). La méthode vérifie à la fois l’intégrité et la confiance en une seule fois, ce qui en fait la solution de référence pour la plupart des scénarios. + +## Étape 5 : Détecter une signature compromise + +Même une signature « valide » peut être compromise si le document a été modifié après la signature. Aspose nous fournit `IsSignatureCompromised` pour détecter ce cas subtil. + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**Quand l’utiliser :** Supposons qu’un PDF soit signé, puis qu’un utilisateur ajoute un commentaire ou modifie une page. Le hachage sera différent, et `IsSignatureCompromised` renverra `true` tandis que `VerifySignature` pourra encore être `true` si le certificat lui‑même est correct. Vérifier les deux indicateurs vous donne une vue complète. + +## Étape 6 : Interpréter les résultats + +Nous disposons maintenant de deux booléens : `isSignatureValid` et `isSignatureCompromised`. Transformons‑les en une sortie console conviviale. + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### Sortie attendue + +| Scénario | Sortie console | +|---------------------------------------|-------------------------------| +| Valide et non compromise | `Signature OK` | +| Valide mais compromise (document modifié) | `Signature compromised!` | +| Invalide (certificat non fiable, hachage ne correspond pas) | `Signature verification failed` | + +## Exemple complet fonctionnel + +En assemblant le tout, voici le programme complet, prêt à l’exécution : + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +Copiez, collez, ajustez le `pdfPath`, puis exécutez. Si tout est correctement configuré, vous verrez l’un des trois messages indiqués ci‑dessus. + +## Pièges courants et conseils pour la vérification de signature PDF + +| Problème | Pourquoi cela se produit | Comment corriger / éviter | +|----------|--------------------------|---------------------------| +| **Missing Aspose license** | L'évaluation gratuite ajoute un filigrane et peut limiter certains appels d'API. | Enregistrez une licence (`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`). | +| **Multiple signatures but wrong index** | Vous pourriez vérifier la mauvaise signature, entraînant des faux négatifs. | Parcourez `signatureVerifier.GetSignatureCount()` et inspectez chacune. | +| **Certificate chain not trusted** | `VerifySignature` échoue si l'autorité racine n'est pas dans le magasin de confiance. | Ajoutez l'autorité de certification signataire au magasin Racine de confiance Windows ou configurez un `CertificateValidator` personnalisé. | +| **File locked by another process** | Ouvrir un PDF encore ouvert ailleurs peut lever une `IOException`. | Utilisez un `FileStream` avec `FileShare.ReadWrite` ou copiez d'abord le fichier dans un fichier temporaire. | +| **Incorrect PDF path** | Une simple faute de frappe entraîne une `FileNotFoundException`. | Validez le chemin avec `File.Exists(pdfPath)` avant de charger. | + +### Cas limites que vous pourriez rencontrer + +- **Detached signatures** : Certains PDF stockent les signatures à l’extérieur. `PdfFileSignature` d’Aspose ne prend actuellement en charge que les signatures intégrées. +- **Timestamped signatures** : Si vous devez vérifier l’autorité d’horodatage (TSA), vous devrez appeler `VerifySignature` avec un objet `VerificationOptions` personnalisé — cela dépasse le cadre de ce guide rapide mais vaut la peine d’être mentionné pour les projets fortement soumis à la conformité. + +## Prochaines étapes – Étendre votre logique de validation + +Maintenant que vous avez maîtrisé les bases de **how to verify signature**, vous pourriez vouloir : + +1. **Validate PDF signature** contre une liste de certificats de confiance (par ex., PKI d’entreprise). +2. **Export signature details** (nom du signataire, heure de signature, empreinte du certificat) en utilisant `GetSignatureInfo`. +3. **Batch‑process multiple PDFs** dans un dossier, en enregistrant les résultats dans un CSV à des fins d’audit. + +Toutes ces options sont des extensions simples du code que nous venons de couvrir, et elles vous maintiennent dans le même écosystème **aspose pdf signature**. + +En résumé, vous savez maintenant exactement **how to verify signature** dans un PDF avec C# et Aspose, comment détecter une signature compromise, et quoi faire lorsque la vérification échoue. L’approche est robuste, fonctionne avec plusieurs signatures, et peut être intégrée à des pipelines de traitement de documents plus vastes. + +Vous avez une variante de ce scénario ? Peut‑être devez‑vous signer des PDF au lieu de les vérifier, ou vous travaillez avec des PDF chiffrés. Laissez un commentaire, et nous explorerons ces aspects ensemble. Bon codage ! + +{{< /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/french/net/programming-with-stamps-and-watermarks/_index.md b/pdf/french/net/programming-with-stamps-and-watermarks/_index.md index 7adbd1499..d3472293c 100644 --- a/pdf/french/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/french/net/programming-with-stamps-and-watermarks/_index.md @@ -39,6 +39,7 @@ Les tutoriels « Programmation avec tampons et filigranes » d'Aspose.PDF pour | [Tableau dans la section En-tête/Pied de page](./table-in-header-footer-section/) | Apprenez à ajouter facilement du texte au pied de page d'un fichier PDF avec Aspose.PDF pour .NET. Guide étape par étape inclus pour une intégration transparente. | | [Texte dans le pied de page du fichier PDF](./text-in-footer/) | Apprenez à ajouter du texte dans le pied de page d'un fichier PDF avec Aspose.PDF pour .NET. | | [Texte dans l'en-tête du fichier PDF](./text-in-header/) | Apprenez à ajouter des en-têtes de texte à vos PDF avec Aspose.PDF pour .NET grâce à ce tutoriel étape par étape. Améliorez vos documents efficacement. | +| [Créer un document PDF avec numérotation Bates en C# – Guide complet](./create-pdf-document-with-bates-numbering-in-c-full-guide/) | Apprenez à générer des PDF avec numérotation Bates en C# grâce à ce guide complet pas à pas. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/french/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/french/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..4be9b1285 --- /dev/null +++ b/pdf/french/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,184 @@ +--- +category: general +date: 2026-03-06 +description: Créez un document PDF en C# et ajoutez facilement un numéro de Bates. + Apprenez comment ajouter une page blanche au PDF, placer un tampon sur la page et + mettre en œuvre la numérotation Bates. +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: fr +og_description: Créer un document PDF en C# et ajouter un numéro de Bates. Ce guide + montre comment ajouter une page blanche au PDF, placer un tampon sur la page et + appliquer la numérotation Bates. +og_title: Créer un document PDF avec numérotation Bates – Tutoriel C# +tags: +- Aspose.Pdf +- C# +- PDF automation +title: Créer un document PDF avec numérotation Bates en C# – Guide complet +url: /fr/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Créer un document PDF avec numérotation Bates en C# + +Vous avez déjà eu besoin de **créer un document PDF** en C# et vous vous êtes demandé comment ajouter un numéro Bates sans perdre patience ? Vous n'êtes pas seul — les cabinets d’avocats, les tribunaux et même certaines équipes de conformité d’entreprise rencontrent ce même problème chaque jour. La bonne nouvelle ? En quelques lignes de code Aspose.Pdf, vous pouvez générer un tout nouveau PDF, y ajouter une page blanche et apposer un numéro Bates correctement, le tout en un seul flux fluide. + +Dans ce tutoriel, nous parcourrons l’ensemble du processus : de la configuration du projet, à l’ajout d’une page blanche, à la façon **d’ajouter la numérotation Bates**, puis **placer le tampon sur la page** et enregistrer le résultat. À la fin, vous disposerez d’un extrait prêt à l’emploi que vous pourrez intégrer dans n’importe quelle application .NET. Pas de références vagues, juste un exemple complet et exécutable. + +## Ce dont vous avez besoin + +- **.NET 6+** (ou .NET Framework 4.6+ – Aspose.Pdf fonctionne avec les deux) +- **Aspose.Pdf for .NET** package NuGet (`Install-Package Aspose.Pdf`) +- Un IDE correct (Visual Studio, Rider ou VS Code avec l’extension C#) + +C’est tout. Aucun DLL supplémentaire, aucun service externe. Plongeons‑y. + +## Étape 1 : Créer le document PDF – Configuration initiale + +Tout d’abord, nous avons besoin d’un nouvel objet `Document`. Considérez‑le comme la toile vierge où tout le reste prendra forme. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **Pourquoi c’est important :** La classe `Document` est le point d’entrée de chaque opération Aspose. L’instancier vous donne accès à la collection `Pages`, aux métadonnées et aux paramètres de sécurité — tous les éléments de base pour un PDF professionnel. + +## Étape 2 : Ajouter une page blanche au PDF + +Un PDF sans pages, c’est comme un livre sans feuilles — pratiquement inutile. Ajouter une page blanche est simple, et cela nous fournit une surface sur laquelle apposer le numéro Bates. + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **Astuce pro :** Si vous avez besoin de plusieurs pages, appelez simplement `pdfDocument.Pages.Add()` dans une boucle. Chaque appel renvoie un nouvel objet `Page` que vous pouvez personnaliser indépendamment. + +## Étape 3 : Comment ajouter la numérotation Bates – Créer le TextStamp + +Voici le cœur du sujet : le **numéro Bates**. Dans Aspose.Pdf, il s’agit simplement d’un `TextStamp` avec un drapeau d’artefact spécial. + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **Pourquoi nous définissons `Artifact` :** Certains lecteurs PDF exposent les numéros Bates comme métadonnées recherchables. Marquer le tampon comme un artefact `BatesNumbering` garantit que les outils en aval le reconnaissent automatiquement. + +## Étape 4 : Placer le tampon sur la page + +Le tampon étant prêt, nous **plaçons le tampon sur la page**. C’est à cette étape que le numéro apparaît visuellement dans le PDF. + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **Cas limite :** Si vous devez incrémenter le numéro sur chaque page, parcourez `pdfDocument.Pages` et mettez à jour `batesStamp.Value` avant d’appeler `AddStamp`. L’exemple ici reste simple avec un « Bates‑001 » statique. + +## Étape 5 : Enregistrer et vérifier le résultat + +Enfin, nous persistons le PDF sur le disque. Choisissez un dossier où vous avez les droits d’écriture ; sinon, vous rencontrerez une `UnauthorizedAccessException`. + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +Lorsque vous ouvrirez `BatesStamped.pdf` dans n’importe quel visualiseur, vous devriez voir un petit « Bates‑001 » discrètement placé dans le coin inférieur droit de la page blanche. + +> **Résultat attendu :** +> ![PDF avec tampon de numéro Bates](image-placeholder.png "PDF avec tampon de numéro Bates") +> *Texte alternatif : PDF avec tampon de numéro Bates dans le coin inférieur droit.* + +Si le numéro n’apparaît pas, revérifiez les valeurs de marge et assurez‑vous que la taille de la page n’est pas trop petite (le format A4 par défaut fonctionne bien). Vérifiez également que le drapeau `Artifact` n’est pas supprimé par un outil de post‑traitement. + +## Exemple complet fonctionnel + +Voici le programme complet, prêt à copier‑coller. Il inclut toutes les directives `using` et les commentaires pour vous guider. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +Exécutez le programme, ouvrez le PDF, et vous verrez le numéro Bates exactement à l’endroit indiqué. 🎉 + +## Variantes courantes & pièges + +| Scénario | Ce qu’il faut modifier | Pourquoi | +|----------|------------------------|----------| +| **Pages multiples, numéros incrémentiels** | Boucler sur `pdfDocument.Pages`, définir `batesStamp.Value = $"Bates-{i:D3}"` avant `AddStamp` | Attribue à chaque page un identifiant unique, typique pour les dossiers juridiques | +| **Placement différent (en haut à gauche)** | Modifier `HorizontalAlignment = HorizontalAlignment.Left` et `VerticalAlignment = VerticalAlignment.Top` | Certaines organisations préfèrent le numéro dans l’en‑tête plutôt qu’en bas | +| **Police ou couleur personnalisée** | Définir `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` | Améliore la lisibilité ou répond aux exigences de la charte graphique | +| **Ajouter un PDF existant comme arrière‑plan** | Charger le PDF source avec `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` | Utile lorsqu’il faut tamponner un formulaire déjà généré | + +## Conclusion + +Nous venons de montrer comment **créer un document PDF**, **ajouter une page blanche**, et **ajouter un numéro Bates** avec Aspose.Pdf for .NET, puis **placer le tampon sur la page** et enregistrer le fichier. Le code est volontairement compact afin que vous puissiez l’adapter à des flux de travail plus importants — que vous traitiez des dizaines de fichiers ou que vous l’intégriez à un service web. + +Si vous êtes prêt à aller plus loin, pensez à : + +- Automatiser la logique d’incrémentation pour de gros dossiers. +- Intégrer la génération de PDF dans une API ASP.NET Core. +- Ajouter de la sécurité (protection par mot de passe) avec `pdfDocument.Encrypt(...)`. + +N’hésitez pas à expérimenter, à casser des choses et à poser des questions dans les commentaires. Bon codage, et que vos PDFs soient toujours parfaitement tamponnés ! + +{{< /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/french/net/programming-with-tagged-pdf/_index.md b/pdf/french/net/programming-with-tagged-pdf/_index.md index c8d4621b7..b9b8f65b0 100644 --- a/pdf/french/net/programming-with-tagged-pdf/_index.md +++ b/pdf/french/net/programming-with-tagged-pdf/_index.md @@ -45,6 +45,7 @@ Les tutoriels « Programmation avec des PDF balisés » d'Aspose.PDF pour .NET | [Éléments de structure de texte dans un fichier PDF](./text-structure-elements/) Apprenez à manipuler les éléments de structure de texte dans les PDF avec Aspose.PDF pour .NET. Ce guide étape par étape couvre tout ce dont vous avez besoin pour créer des PDF structurés. | | [Valider le fichier PDF](./validate-pdf/) | Apprenez à valider un fichier PDF avec Aspose.PDF pour .NET. Vérifiez sa conformité aux normes et générez un rapport de validation. | | [Créer un PDF balisé en C# – Guide complet étape par étape](./create-tagged-pdf-in-c-complete-step-by-step-guide/) | Apprenez à créer un PDF balisé en C# avec Aspose.PDF pour .NET grâce à ce guide complet étape par étape. | +| [Créer un PDF balisé en C# – Guide étape par étape](./create-tagged-pdf-in-c-step-by-step-guide/) | Apprenez à créer un PDF balisé en C# avec Aspose.PDF pour .NET grâce à ce guide étape par étape. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/french/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/french/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..36b765bdc --- /dev/null +++ b/pdf/french/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,263 @@ +--- +category: general +date: 2026-03-06 +description: Créer un PDF balisé avec Aspose.Pdf en C#. Apprenez comment ajouter une + image à un PDF, définir la position de la figure et baliser le PDF pour l’accessibilité. +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: fr +og_description: Créer un PDF balisé avec Aspose.Pdf. Ce guide montre comment ajouter + une image à un PDF, définir la position de la figure et baliser le PDF pour l’accessibilité. +og_title: Créer un PDF balisé en C# – Tutoriel complet +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: Créer un PDF balisé en C# – Guide étape par étape +url: /fr/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Créer un PDF balisé en C# – Tutoriel complet + +Vous avez déjà eu besoin de **create tagged PDF** en C# mais vous ne saviez pas par où commencer ? Vous n'êtes pas seul ; l'accessibilité est indispensable de nos jours, et un PDF balisé est l'épine dorsale d'un document conforme. Dans ce tutoriel, nous parcourrons un exemple réel qui **adds image to PDF**, définit la position de la figure, et montre **how to tag PDF** en utilisant Aspose.Pdf. À la fin, vous disposerez d'un PDF entièrement balisé que vous pourrez envoyer à n'importe qui. + +Nous couvrirons tout, du chargement d'un fichier existant à l'enregistrement du résultat final, afin que vous n'ayez pas à chercher “how to add image” ailleurs. Pas de fioritures — juste une solution claire et exécutable qui fonctionne avec Aspose.Pdf 23.8 (la dernière version au moment de la rédaction). Prenez votre IDE et commençons. + +--- + +## Ce dont vous avez besoin + +- **Aspose.Pdf for .NET** (package NuGet `Aspose.Pdf`). +- .NET 6+ (ou .NET Framework 4.7.2+). +- Un PDF d'entrée qui possède déjà une structure logique (c’est‑à‑dire qu’il est déjà balisé) – sinon, vous pouvez activer le balisage via `pdfDocument.TaggedContent = true`. +- Un fichier image (`image.png`) que vous souhaitez intégrer. + +C’est tout. Aucune bibliothèque supplémentaire, aucun fichier de configuration obscur. + +## Étape 1 : Charger le document PDF existant (Base du PDF balisé) + +La première chose que nous faisons est d'ouvrir le PDF que nous voulons améliorer. Charger le fichier nous donne accès à sa structure logique, ce qui est essentiel pour les flux de travail **create tagged pdf**. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*Pourquoi c’est important :* Sans arbre de balises, le PDF ne transmettra pas d'informations structurelles aux lecteurs d'écran. Activer le balisage garantit que tout nouvel élément que nous ajoutons (comme une figure) hérite de la hiérarchie appropriée. + +## Étape 2 : Accéder à la racine de la structure logique (How to Tag PDF) + +Nous accédons maintenant à la structure logique du PDF. L'élément racine est le conteneur de toutes les balises — pensez-y comme à la structure du document. + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*Explication :* `logicalRoot` nous permet d'ajouter de nouvelles balises telles que `
` ou `
`. C’est le cœur du **how to tag PDF** programmatique. + +## Étape 3 : Créer une balise Figure et définir sa position (Set Figure Position) + +Une balise *Figure* regroupe le contenu visuel avec une légende facultative. Nous en créerons une, la positionnerons et l'attacherons à la racine. + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*Pourquoi nous définissons une position :* L’étape **set figure position** détermine où l’élément visuel se place sur la page. Si vous l’omettez, la figure peut apparaître à un endroit inattendu ou être invisible pour les technologies d’assistance. + +## Étape 4 : Ajouter une représentation visuelle – Insérer une image (Add Image to PDF) + +Avec la balise en place, nous avons besoin d’une image réelle. C’est la partie qui répond à **add image to pdf**. + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*Point clé :* Les coordonnées du rectangle doivent correspondre à `figureTag.Position` que nous avons définies précédemment ; sinon la figure et son contenu visuel seront désynchronisés, ce qui compromet l’accessibilité. + +## Étape 5 : Enregistrer le PDF mis à jour (Finish Creating Tagged PDF) + +Enfin, nous enregistrons les modifications dans un nouveau fichier. Conserver l'original intact est une bonne pratique. + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +À ce stade, vous avez un fichier **create tagged pdf** qui contient une image correctement positionnée enveloppée dans une balise `
`. Ouvrez `output.pdf` dans Adobe Acrobat et vérifiez le panneau *Tags* – vous devriez voir un nœud `Figure` sous la racine. + +## Exemple complet, prêt à l'exécution + +Ci-dessous le programme complet que vous pouvez copier‑coller dans une application console. Toutes les étapes sont déjà dans le bon ordre. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### Résultat attendu + +- `output.pdf` s'ouvre avec l'image affichée à (100, 150) points, de taille 300 × 200 points. +- Le volet *Tags* montre un élément `Figure` qui englobe l'image. +- Les outils de lecteur d'écran annoncent « Figure » avant de décrire l'image, satisfaisant les normes d'accessibilité de base. + +## Questions fréquentes et cas particuliers + +### Et si le PDF source n’est pas déjà balisé ? + +Aspose.Pdf vous permet d’activer le balisage en définissant `pdfDocument.TaggedContent.IsTagged = true;`. La bibliothèque générera un arbre de balises par défaut, après quoi vous pourrez ajouter des balises personnalisées comme indiqué. + +### Puis‑je ajouter une légende à la figure ? + +Oui. Après avoir créé `figureTag`, vous pouvez attacher un `Paragraph` avec un `TextFragment` et définir son `Tag` à `Caption`. Exemple : + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### Comment placer la figure sur une page différente ? + +Remplacez `var firstPage = pdfDocument.Pages[1];` par l’indice de page souhaité, par ex., `pdfDocument.Pages[3]`. N'oubliez pas d'ajuster les coordonnées `Position` si la taille de la page diffère. + +### Et si je dois baliser plusieurs images ? + +Créez une nouvelle `Figure` pour chaque image, attribuez à chacune une `Position` unique, et ajoutez l’objet `Image` correspondant à la page appropriée. Parcourir une collection d'images fonctionne très bien. + +### Cette méthode fonctionne‑t‑elle avec la conformité PDF/A ? + +Aspose.Pdf prend en charge PDF/A‑1b, PDF/A‑2b et PDF/A‑3b. Lors de la génération d’un document PDF/A, assurez‑vous de définir le mode de conformité avant l’enregistrement : + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +La logique de balisage reste la même. + +## Astuces professionnelles et pièges + +- **Pro tip :** Utilisez toujours des chemins absolus ou `Path.Combine` pour éviter les erreurs de fichier introuvable à l’exécution. +- **Attention à :** Des coordonnées non concordantes entre la balise `Figure` et le rectangle `Image` — les technologies d’assistance dépendent de cet alignement. +- **Note de performance :** Si vous traitez de nombreuses pages, encapsulez le flux d’image dans un bloc `using` pour libérer rapidement les ressources. +- **Vérification de version :** L’API présentée fonctionne avec Aspose.Pdf 23.8+. Les versions antérieures peuvent avoir des noms de classe légèrement différents (par ex., `LogicalStructureElement` au lieu de `FigureElement`). + +## Conclusion + +Nous venons de **create tagged pdf** du début à la fin, démontré **add image to pdf**, et montré comment **set figure position** tout en répondant à **how to tag pdf** et **how to add image** dans un exemple unique et cohérent. Le code est prêt à l’exécution, les explications couvrent le « pourquoi » de chaque étape, et vous disposez désormais d’une base solide pour créer des PDF accessibles en C#. + +Prêt pour le prochain défi ? Essayez d’ajouter des tables avec des balises `
`, ou intégrez une couche de conformité PDF/A‑2b pour l’archivage. Le même schéma — charger, accéder à la structure logique, créer une balise, attacher le contenu visuel, enregistrer — s’applique à la plupart des tâches d’accessibilité PDF. + +Si vous rencontrez un problème ou avez un cas d’utilisation qui n’est pas couvert ici, laissez un commentaire ci‑dessous. Bon balisage, et amusez‑vous à créer des PDF que tout le monde peut lire ! + +![Diagramme montrant un PDF avec une balise Figure et une image – illustre comment créer un PDF balisé](placeholder-image.png "exemple de PDF balisé") + +{{< /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/digital-signatures/_index.md b/pdf/german/net/digital-signatures/_index.md index de270919c..5a4d85655 100644 --- a/pdf/german/net/digital-signatures/_index.md +++ b/pdf/german/net/digital-signatures/_index.md @@ -59,6 +59,9 @@ Erfahren Sie, wie Sie mit Aspose.PDF für .NET PDF-Signaturen in C# überprüfen ### [So überprüfen Sie PDF – PDF-Signatur mit Aspose validieren](./how-to-verify-pdf-validate-pdf-signature-with-aspose/) Erfahren Sie, wie Sie mit Aspose PDF die Signatur einer PDF-Datei prüfen und validieren. +### [Wie man Signaturen in PDF mit C# liest – Schritt‑für‑Schritt‑Anleitung](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +Erfahren Sie, wie Sie mit Aspose.PDF für .NET PDF‑Signaturen in C# auslesen und analysieren. + ## Weitere Ressourcen - [Aspose.PDF für Net-Dokumentation](https://docs.aspose.com/pdf/net/) diff --git a/pdf/german/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/german/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..883ee8dd8 --- /dev/null +++ b/pdf/german/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-06 +description: Wie man Signaturen in einem PDF mit C# ausliest. Lernen Sie, ein PDF‑Dokument + mit C# zu laden, PDF‑Signaturen aufzulisten und digitale PDF‑Signaturen schnell + und zuverlässig zu erhalten. +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: de +og_description: Wie man Signaturen in einem PDF mit C# liest. Dieser Leitfaden zeigt, + wie man ein PDF‑Dokument in C# lädt, PDF‑Signaturen auflistet und digitale Signaturen + aus einem PDF in wenigen einfachen Schritten abruft. +og_title: Wie man Signaturen in PDFs mit C# liest – Vollständiger Leitfaden +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: Wie man Signaturen in PDF mit C# liest – Schritt‑für‑Schritt‑Anleitung +url: /de/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man Signaturen in PDF mit C# liest – Komplettanleitung + +Haben Sie sich schon einmal gefragt, **wie man Signaturen** liest, die bereits in einer PDF‑Datei eingebettet sind? Vielleicht bauen Sie ein Compliance‑Dashboard, oder Sie müssen unterschriebene Verträge prüfen, bevor sie in Ihre Datenbank gelangen. Die gute Nachricht: Mit ein paar Zeilen C# und der Aspose.Pdf‑Bibliothek können Sie die Signatur‑Namen direkt aus der Datei auslesen – ohne manuelle Inspektion. + +In diesem Tutorial führen wir Sie durch das Laden eines PDF‑Dokuments in C#, das Auflisten von PDF‑Signaturen und das Abrufen von Informationen zu digitalen Signaturen. Am Ende haben Sie eine sofort lauffähige Konsolen‑App, die jeden gefundenen Signatur‑Namen ausgibt, plus Tipps zum Umgang mit Sonderfällen wie passwortgeschützten Dateien. + +## Voraussetzungen + +- .NET 6.0 oder höher (der Code funktioniert auch mit .NET Framework 4.6+) +- Aspose.Pdf für .NET (eine kostenlose Testlizenz erhalten Sie auf der Aspose‑Website) +- Eine PDF, die bereits eine oder mehrere digitale Signaturen enthält (die Beispiel‑Datei `MultiSigned.pdf` ist im Repository enthalten) + +> **Pro‑Tipp:** Wenn Sie Visual Studio verwenden, aktivieren Sie *Nullable Reference Types*, um Null‑bezogene Fehler frühzeitig zu erkennen. + +## Schritt 1: Das PDF‑Dokument in C# laden + +Als erstes benötigen wir ein `Document`‑Objekt, das die PDF‑Datei auf der Festplatte repräsentiert. Die Klasse `Document` von Aspose.Pdf übernimmt alles, von einfacher Textextraktion bis hin zu komplexer Formularverarbeitung. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**Warum das wichtig ist:** Das Laden der PDF prüft, ob die Datei existiert und lesbar ist. Ist die Datei beschädigt oder der Pfad falsch, brechen wir frühzeitig ab, anstatt später kryptische Fehler zu erhalten, wenn wir versuchen, die Signaturen zu enumerieren. + +## Schritt 2: Einen `PdfFileSignature`‑Helper erstellen + +Aspose trennt die generische PDF‑Verarbeitung (`Document`) von signatur‑spezifischen Vorgängen (`PdfFileSignature`). Durch das Instanziieren dieses Helpers erhalten wir Zugriff auf Methoden wie `GetSignatureNames()`. + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**Warum das wichtig ist:** Die Klasse `PdfFileSignature` weiß, wie man die `/Sig`‑Dictionary‑Einträge der PDF parst, wo digitale Signaturen gespeichert sind. Die Verwendung stellt sicher, dass wir die Signaturen exakt so lesen, wie sie hinzugefügt wurden, und alle kryptografischen Metadaten erhalten bleiben. + +## Schritt 3: Alle Signatur‑Namen abrufen + +Jetzt kommt der Kern von **wie man Signaturen liest**: Aufruf von `GetSignatureNames()`. Diese Methode liefert ein String‑Array mit den *Feldnamen* jeder Signatur. + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**Was Sie sehen werden:** Enthält `MultiSigned.pdf` drei Signaturen mit den Namen `Signature1`, `Signature2` und `Signature3`, lautet die Konsolenausgabe: + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## Schritt 4: (Optional) Gültigkeit jeder Signatur prüfen + +Das Auslesen der Namen reicht oft aus, doch viele Projekte müssen zudem wissen, ob jede Signatur noch gültig ist. Aspose ermöglicht die Validierung einer Signatur über ihren Feldnamen: + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **Sonderfall:** Ist die PDF passwortgeschützt, müssen Sie das Passwort setzen, bevor Sie `VerifySignature` aufrufen. Verwenden Sie `pdfDocument.Encrypt.Password = "yourPassword";` direkt nach dem Laden des Dokuments. + +## Vollständiges funktionierendes Beispiel + +Unten finden Sie das komplette Programm, das Sie in ein neues Konsolen‑Projekt (`dotnet new console`) kopieren können. Es enthält alle Schritte, Fehlerbehandlung und optionale Verifizierung. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**Erwartete Ausgabe** (bei drei gültigen Signaturen): + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## Umgang mit gängigen Variationen + +| Situation | Was zu ändern ist | Warum | +|-----------|-------------------|-------| +| **Passwortgeschützte PDF** | `pdfDocument.Encrypt.Password = "yourPwd";` vor dem Erzeugen von `PdfFileSignature` setzen. | Ohne das Passwort sind die Signatur‑Dictionaries verschlüsselt und `GetSignatureNames()` liefert ein leeres Array. | +| **Große PDFs ( > 100 MB )** | `pdfSigner.GetSignatureNames(0, 10)` verwenden, um die Ergebnisse zu paginieren (erster Parameter = Start‑Index). | Das Laden der gesamten Signaturliste auf einmal kann viel Speicher verbrauchen. | +| **Keine Signaturen vorhanden** | Der Code gibt bereits eine freundliche Warnung aus. Loggen Sie dies ggf. als Audit‑Ereignis. | Hilft nachgelagerten Prozessen zu entscheiden, ob die Datei abgelehnt oder der Nutzer nach einer signierten Version gefragt werden soll. | +| **Benutzerdefinierte Signatur‑Feldnamen** | Die Methode gibt exakt den beim Signieren verwendeten Feldnamen zurück, z. B. `EmployeeApproval`. Keine zusätzliche Arbeit nötig. | Ermöglicht die Zuordnung von Signaturen zu geschäftlichen Rollen. | + +## Best Practices & Tipps + +- **Objekte freigeben**: Das Muster `using var pdfSigner` stellt sicher, dass native Ressourcen zeitnah freigegeben werden. +- **Lizenz früh setzen**: `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` am Anfang von `Main` aufrufen, um das Evaluations‑Wasserzeichen zu vermeiden. +- **Thread‑Sicherheit**: Wenn Sie viele PDFs parallel verarbeiten, erzeugen Sie pro Thread ein separates `PdfFileSignature`‑Objekt. Die Klasse ist nicht thread‑sicher. +- **Logging**: In der Produktion `Console.WriteLine` durch einen strukturierten Logger (Serilog, NLog) ersetzen, um die genauen Signatur‑Namen für Audits zu erfassen. +- **Versions‑Check**: Der Code funktioniert mit Aspose.Pdf für .NET 23.10 und neuer. Ältere Versionen benötigen eventuell `PdfSignature` anstelle von `PdfFileSignature`. + +## Fazit + +Wir haben gezeigt, **wie man Signaturen** aus einer PDF mit C# ausliest. Durch das Laden des PDF‑Dokuments, das Erzeugen eines `PdfFileSignature`‑Helpers und den Aufruf von `GetSignatureNames()` können Sie jede digitale Signatur im Dokument auflisten. Eine optionale Verifizierung fügt ein Vertrauens‑Level hinzu, und der Beispielcode demonstriert, wie Sie das in einer realen Konsolen‑App integrieren. + +Bereit für den nächsten Schritt? Kombinieren Sie das mit Aspose’s `DigitalSignatureUtil`, um Zertifikate der Unterzeichner zu extrahieren, oder speisen Sie die Signaturliste in ein Compliance‑Dashboard ein, das unsignierte Verträge markiert. Die Möglichkeiten sind endlos – denken Sie einfach daran, **PDF‑Dokument C# laden**, **PDF‑Signaturen auflisten** und **digitale Signaturen PDF erhalten**, wann immer Sie einen schnellen Audit benötigen. + +Viel Spaß beim Coden und mögen Ihre PDFs stets sicher signiert bleiben! + +{{< /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-conversion/_index.md b/pdf/german/net/document-conversion/_index.md index e48aee996..959c0962a 100644 --- a/pdf/german/net/document-conversion/_index.md +++ b/pdf/german/net/document-conversion/_index.md @@ -44,6 +44,7 @@ Sie lernen, wie Sie Konvertierungseinstellungen festlegen, Text und Bilder extra | [PDF zu XML](./pdf-to-xml/) | Erfahren Sie in diesem umfassenden Tutorial, wie Sie mit Aspose.PDF für .NET PDF in XML konvertieren. Schritt-für-Schritt-Anleitung mit Codebeispielen. | | [PDF zu XPS](./pdf-to-xps/) | Erfahren Sie in dieser Schritt-für-Schritt-Anleitung, wie Sie PDF mit Aspose.PDF für .NET in XPS konvertieren. Perfekt für Entwickler und Dokumentenverarbeitungs-Enthusiasten. | | [PDF zu PDF/X‑4 in C# – Schritt‑für‑Schritt ASP.NET PDF‑Tutorial](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | Erfahren Sie in dieser Schritt‑für‑Schritt‑Anleitung, wie Sie PDF‑Dateien mit Aspose.PDF für .NET in das PDF/X‑4‑Format konvertieren. | +| [Aspose PDF Tutorial: PDF nach PDF/X‑4 in C#](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) | Erfahren Sie in dieser Schritt‑für‑Schritt‑Anleitung, wie Sie PDF‑Dateien mit Aspose.PDF für .NET in das PDF/X‑4‑Format konvertieren. | | [Postscript zu PDF](./postscript-to-pdf/) | Erfahren Sie in diesem Schritt-für-Schritt-Tutorial, wie Sie Postscript-Dateien mit Aspose.PDF für .NET in PDF konvertieren. Perfekt für Entwickler aller Erfahrungsstufen. | | [Geben Sie beim Konvertieren von HTML in PDF Anmeldeinformationen an](./provide-credentials-during-html-to-pdf/) | Erfahren Sie in dieser Schritt-für-Schritt-Anleitung, wie Sie HTML mit Aspose.PDF für .NET in PDF konvertieren. Ideal für Entwickler, die die Dokumenterstellung optimieren möchten. | | [Entfernen Sie Hyperlinks nach der Konvertierung aus HTML](./remove-hyperlinks-after-converting-from-html/) Erfahren Sie in dieser Schritt-für-Schritt-Anleitung, wie Sie Hyperlinks aus HTML-Dokumenten entfernen, nachdem Sie sie mit Aspose.PDF für .NET in PDF konvertiert haben. | diff --git a/pdf/german/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/german/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..cc3346492 --- /dev/null +++ b/pdf/german/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-03-06 +description: Das Aspose PDF‑Tutorial zeigt, wie man Aspose verwendet, um ein PDF‑Dokument + in C# zu laden, PDF in PDF/X‑4 zu konvertieren und das konvertierte PDF effizient + zu speichern. +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: de +og_description: Das Aspose PDF Tutorial erklärt, wie man ein PDF‑Dokument in C# lädt, + es in das PDF/X‑4‑Format konvertiert und das konvertierte PDF mit klaren Codebeispielen + speichert. +og_title: 'Aspose PDF‑Tutorial: PDF in PDF/X‑4 mit C# konvertieren' +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: 'Aspose PDF‑Tutorial: PDF in PDF/X‑4 mit C# konvertieren' +url: /de/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose PDF Tutorial: PDF nach PDF/X‑4 in C# konvertieren + +Haben Sie sich jemals gefragt, wie man Aspose verwendet, um ein normales PDF ohne großen Aufwand in eine PDF/X‑4‑Datei zu verwandeln? Sie sind nicht allein – Entwickler benötigen häufig eine zuverlässige Methode, um **PDF‑Dokument in C#**‑Stil zu **laden**, es zu konvertieren und dann **das konvertierte PDF zu speichern** für nachgelagerte Workflows. In diesem Leitfaden führen wir Sie durch ein vollständiges, ausführbares Beispiel, das genau das tut, und verwenden dabei die neueste Aspose.Pdf für .NET. + +Wir behandeln alles von der Installation der Bibliothek, dem Laden einer Quell‑PDF, der Konvertierung in den PDF/X‑4‑Standard und schließlich dem Persistieren des Ergebnisses auf der Festplatte. Am Ende haben Sie ein solides Verständnis davon, **wie man Aspose verwendet** für dieses gängige Konvertierungsszenario, plus Tipps zum Umgang mit Sonderfällen. + +## Voraussetzungen + +- .NET 6.0 oder höher (der Code funktioniert auch unter .NET Framework, aber .NET 6+ wird empfohlen). +- Eine gültige Aspose.Pdf für .NET Lizenzdatei (oder Sie können im Evaluierungsmodus für einen schnellen Test ausführen). +- Visual Studio 2022 oder jede C#‑kompatible IDE. +- Eine Eingabe‑PDF‑Datei unter `YOUR_DIRECTORY/input.pdf`. + +Keine zusätzlichen NuGet‑Pakete über `Aspose.Pdf` hinaus sind erforderlich. + +## Aspose.Pdf via NuGet installieren + +Öffnen Sie Ihr Terminal oder die Package Manager Console und führen Sie aus: + +```bash +dotnet add package Aspose.Pdf +``` + +Damit wird die neueste stabile Version (Stand März 2026, Version 23.12) heruntergeladen. Wenn Sie die UI bevorzugen, suchen Sie im NuGet Package Manager nach *Aspose.Pdf* und installieren Sie sie. + +## Schritt 1: PDF‑Dokument in C# mit Aspose laden + +Das Erste, was Sie tun müssen, ist das Quell‑PDF in den Speicher zu laden. Die `Document`‑Klasse von Aspose ist der Einstiegspunkt. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**Warum das wichtig ist:** Das Laden der Datei prüft, ob der Pfad existiert und das PDF nicht beschädigt ist. Der `try/catch`‑Block bietet Ihnen eine elegante Möglichkeit, Fehler anzuzeigen – praktisch, wenn die Datei von Benutzer‑Uploads stammt. + +## Schritt 2: PDF in das PDF/X‑4‑Format konvertieren + +PDF/X‑4 ist ein Unterset des PDF, das für zuverlässiges Drucken und Archivieren entwickelt wurde. Die Konvertierung stellt sicher, dass alle Schriften eingebettet sind und die Datei den Branchenstandards entspricht. + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**Warum `ConvertErrorAction.Delete` wählen?** Einige ältere PDFs enthalten Elemente (wie nicht unterstützte Anmerkungen), die sonst die Konvertierung stoppen würden. Das Löschen dieser Elemente hält den Prozess reibungslos, aber Sie sollten die Ausgabe prüfen, falls Sie diese Elemente erhalten möchten. + +### Optional: Konvertierungserfolg überprüfen + +Wenn Sie ganz sicher gehen wollen, können Sie nach der Konvertierung das `PdfFormat` des Dokuments prüfen: + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## Schritt 3: Die konvertierte PDF‑Datei speichern + +Jetzt, da das Dokument im PDF/X‑4‑Format vorliegt, schreiben Sie es zurück auf die Festplatte. + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**Ergebnis, das Sie sehen werden:** Eine neue Datei namens `Converted_PDFX4.pdf` erscheint in `YOUR_DIRECTORY`. Öffnen Sie sie mit einem beliebigen PDF‑Betrachter, der PDF/X‑4 unterstützt (Adobe Acrobat, Foxit usw.), und Sie werden feststellen, dass alle Schriften eingebettet sind und das Dokument der PDF/X‑4‑Spezifikation entspricht. + +![aspose pdf tutorial - PDF nach PDF/X‑4 konvertieren](/images/aspose-pdf-conversion.png "aspose pdf tutorial zeigt das Ergebnis der PDF/X‑4-Konvertierung") + +*Der Alt‑Text des Bildes enthält das Haupt‑Keyword und erfüllt damit die SEO‑Anforderungen.* + +## Vollständiges End‑zu‑Ende‑Beispiel + +Wenn wir alles zusammenfügen, erhalten Sie eine eigenständige Konsolen‑App, die Sie in ein neues C#‑Projekt kopieren und einfügen können: + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +Führen Sie das Programm aus, und Sie sollten Konsolenmeldungen sehen, die jeden Schritt bestätigen. Wenn etwas schiefgeht, weisen die Fehlermeldungen auf die genaue Phase hin. + +## Häufige Fragen & Sonderfälle + +### Was, wenn ich Anmerkungen behalten muss? + +`ConvertErrorAction.Delete` entfernt nicht unterstützte Objekte, einschließlich einiger Anmerkungen. Wechseln Sie zu `ConvertErrorAction.Keep`, wenn das Beibehalten entscheidend ist, testen Sie jedoch die Ausgabe – einige Anmerkungen können weiterhin Compliance‑Warnungen auslösen. + +### Wie gehe ich mit großen PDFs (Hunderte MB) um? + +Aspose.Pdf streamt die Datei, sodass der Speicherverbrauch moderat bleibt. Dennoch könnten Sie die `System.GC`‑Schwellenwerte erhöhen oder das Dokument in Teilen verarbeiten (z. B. Seite‑für‑Seite konvertieren) bei extrem großen Dateien. + +### Kann ich mehrere Dateien stapelweise konvertieren? + +Auf jeden Fall. Verpacken Sie die Lade‑Konvertierungs‑Speicher‑Logik in eine `foreach`‑Schleife, die über ein Verzeichnis von PDFs iteriert. Denken Sie daran, Ausnahmen pro Datei zu behandeln, damit ein fehlerhaftes PDF nicht den gesamten Batch abbricht. + +### Funktioniert das unter .NET Core auf Linux? + +Ja. Aspose.Pdf ist plattformübergreifend. Stellen Sie lediglich sicher, dass das `Aspose.Pdf`‑NuGet‑Paket referenziert wird und dass die entsprechenden Schriftdateien auf dem Linux‑Host installiert sind, falls Sie Textdarstellung benötigen. + +## Profi‑Tipps aus der Praxis + +- **Lizenz früh setzen**: `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` – das entfernt das Evaluations‑Wasserzeichen und steigert die Leistung. +- **Ausgabe validieren**: Verwenden Sie Asposes `PdfFormatValidator`, um programmgesteuert die PDF/X‑4‑Konformität vor dem Versand der Datei zu bestätigen. +- **Konvertierungszeit protokollieren**: Große Batches profitieren davon, jede Konvertierung (`Stopwatch`) zu timen, um Leistungs‑Regressionen zu erkennen. +- **Vermeiden Sie hartkodierte Pfade**: Bevorzugen Sie Konfigurationsdateien oder Umgebungsvariablen für `inputPath` und `outputPath` — macht die App portabel. + +## Fazit + +In diesem **Aspose PDF Tutorial** haben wir einen sauberen End‑zu‑Ende‑Workflow gezeigt, **wie man Aspose verwendet**, um **PDF‑Dokument in C# zu laden**, es in den **PDF/X‑4**‑Standard zu konvertieren und **das konvertierte PDF zu speichern**. Das Snippet ist vollständig ausführbar, erklärt das *Warum* hinter jedem Schritt und hebt Fallstricke hervor, die in realen Projekten auftreten können. + +Jetzt, da Sie die Grundlagen beherrschen, können Sie die Lösung erweitern – Dutzende Dateien stapelweise verarbeiten, benutzerdefinierte Metadaten einbetten oder die Konvertierung in eine Web‑API integrieren. Die Möglichkeiten sind vielfältig, und Aspose.Pdf liefert Ihnen die Werkzeuge, um schnell dorthin zu gelangen. + +Haben Sie weitere Fragen zur PDF‑Verarbeitung mit Aspose? Hinterlassen Sie einen Kommentar, erkunden Sie die offizielle Aspose‑Dokumentation oder experimentieren Sie mit dem obigen Code. Viel Spaß beim Konvertieren! + +{{< /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-creation/_index.md b/pdf/german/net/document-creation/_index.md index 5080cc01c..100a2d798 100644 --- a/pdf/german/net/document-creation/_index.md +++ b/pdf/german/net/document-creation/_index.md @@ -77,6 +77,12 @@ Ein Code-Tutorial für Aspose.PDF Net ### [PDF-Dokument mit Aspose.PDF erstellen – Seite hinzufügen, Form einfügen & speichern](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) Erfahren Sie, wie Sie mit Aspose.PDF ein PDF-Dokument erstellen, Seiten und Formen hinzufügen und das Dokument speichern. +### [Erstellen Sie ein PDF-Dokument mit Aspose.PDF – Schritt‑für‑Schritt‑Leitfaden](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +Erfahren Sie, wie Sie mit Aspose.PDF ein PDF-Dokument Schritt für Schritt erstellen, Seiten hinzufügen, Formen einfügen und speichern. + +### [Erstellen Sie ein PDF-Dokument mit Aspose.PDF – Vollständiger C#‑Leitfaden](./create-pdf-document-with-aspose-pdf-full-c-guide/) +Erfahren Sie, wie Sie mit Aspose.PDF in C# ein PDF-Dokument von Grund auf erstellen, inklusive Code‑Beispielen und detaillierten Schritten. + ## Weitere Ressourcen - [Aspose.PDF für Net-Dokumentation](https://docs.aspose.com/pdf/net/) diff --git a/pdf/german/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/german/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..546cf47c0 --- /dev/null +++ b/pdf/german/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,236 @@ +--- +category: general +date: 2026-03-06 +description: Erstellen Sie ein PDF-Dokument in C# mit Aspose.PDF – lernen Sie, wie + Sie leere PDF-Seiten, Textfelder, Widgets hinzufügen und das PDF schnell speichern. +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: de +og_description: Erstellen Sie ein PDF-Dokument in C# mit Aspose.PDF. Dieser Leitfaden + zeigt, wie man leere PDF-Seiten, Textfelder, Widgets hinzufügt und wie man das PDF + speichert. +og_title: PDF-Dokument mit Aspose.PDF erstellen – Vollständiges C#‑Tutorial +tags: +- pdf +- csharp +- aspose +- forms +title: PDF-Dokument mit Aspose.PDF erstellen – Vollständige C#‑Anleitung +url: /de/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF-Dokument mit Aspose.PDF erstellen – Vollständige C#‑Anleitung + +Haben Sie schon einmal **PDF-Dokument erstellen** von Grund auf in einem .NET‑Projekt nötig gehabt und sich gefragt, wo Sie anfangen sollen? Sie sind nicht allein; viele Entwickler stoßen auf dieselbe Hürde, wenn die erste Anforderung lautet „ein ausfüllbares PDF mit demselben Textfeld auf drei Seiten generieren“. Die gute Nachricht? Mit Aspose.PDF können Sie in nur wenigen Zeilen ein professionell aussehendes PDF erzeugen. + +In diesem Tutorial gehen wir den gesamten Prozess durch: vom Initialisieren eines neuen PDFs, **Hinzufügen leerer Seiten pdf**, Einfügen eines **Textfelds**, Replizieren mit **Widget**‑Annotationen und schließlich **Speichern des PDFs** auf die Festplatte. Am Ende haben Sie eine einsatzbereite Datei namens *MultiWidgetField.pdf* und ein solides Verständnis dafür, warum jeder Schritt wichtig ist. + +## Was dieser Leitfaden abdeckt + +- Voraussetzungen, die Sie benötigen, bevor Sie eine einzige Code‑Zeile tippen. +- Schritt‑für‑Schritt‑Erstellung eines PDF‑Dokuments mit Aspose.PDF für .NET. +- Wie man leere Seiten, ein Textfeld‑Formularfeld und zusätzliche Widget‑Instanzen hinzufügt. +- Tipps zum Umgang mit häufigen Stolperfallen (z. B. Seiten‑Indexierung, Namenskollisionen von Feldern). +- Ein vollständiges, copy‑and‑paste‑bereites C#‑Programm, das Sie noch heute ausführen können. + +Keine externen Dokumentations‑Links, keine „siehe die API‑Docs“ Abkürzungen – alles, was Sie brauchen, finden Sie hier. + +## Voraussetzungen + +Bevor Sie loslegen, stellen Sie sicher, dass Sie folgendes haben: + +1. **.NET 6.0** (oder eine neuere Version) auf Ihrem Rechner installiert. +2. Eine aktive **Aspose.PDF for .NET**‑Lizenz oder einen temporären Evaluierungsschlüssel. +3. Eine Entwicklungsumgebung wie **Visual Studio 2022** oder **VS Code** mit der C#‑Erweiterung. + +Das ist alles – nichts Weiteres wird benötigt. + +## Schritt 1: PDF‑Dokument initialisieren und leere Seiten hinzufügen + +Das Erste, was Sie tun, wenn Sie **PDF‑Dokument erstellen** programmgesteuert, ist ein `Document`‑Objekt zu instanziieren. Denken Sie daran wie an das Öffnen eines brandneuen Notizbuchs. Dann fügen Sie die benötigten Seiten hinzu; in unserem Fall drei leere Seiten. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**Warum das wichtig ist:** Aspose.PDF behandelt Seiten intern als nullbasierte Sammlung, aber seine öffentliche API ist 1‑basiert, sodass `Pages[1]` die erste von Ihnen hinzugefügte Seite ist. Das Vorab‑Hinzufügen von Seiten gibt Ihnen eine Leinwand, auf der Sie später Formularfelder platzieren können, und ist deutlich günstiger, als Seiten nachträglich einzufügen, wenn das Dokument bereits gewachsen ist. + +> **Pro‑Tipp:** Wenn Sie nur eine einzelne Seite benötigen, können Sie die Schleife überspringen und `pdfDocument.Pages.Add()` einmal aufrufen. Das Hinzufügen mehrerer Seiten in einer Schleife macht den Code skalierbarer. + +## Schritt 2: TextBox‑Formularfeld auf der ersten Seite definieren + +Jetzt, wo wir drei leere Blätter haben, lassen Sie uns ein **Textfeld** auf die erste Seite legen. Ein `TextBoxField` ist ein Formularelement, in das Endbenutzer tippen können, wenn das PDF in Acrobat Reader oder einem anderen PDF‑Viewer mit Formularunterstützung geöffnet wird. + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**Warum die Rechteck‑Koordinaten?** Aspose.PDF verwendet Punkte (1/72 Zoll). Das Rechteck `(100, 700, 300, 730)` positioniert das Textfeld etwa in der Mitte der Seite, 200 pt breit und 30 pt hoch. Passen Sie diese Zahlen an Ihr Layout an. + +> **Häufige Frage:** *Muss ich die Eigenschaft `Value` setzen?* +> Nein, das ist optional. Leer gelassen erscheint ein leeres Feld; das Setzen eines Standardwertes kann den Benutzer leiten. + +## Schritt 3: Widget‑Annotationen für dasselbe Feld auf den Seiten 2 und 3 hinzufügen + +Ein **Widget** ist die visuelle Darstellung eines Formularfeldes auf einer bestimmten Seite. Standardmäßig erscheint ein Feld nur auf der Seite, auf der es erstellt wurde. Um dasselbe Textfeld auf anderen Seiten zu verwenden, hängen Sie zusätzliche `WidgetAnnotation`‑Objekte an die `Widgets`‑Sammlung des Feldes an. + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**Warum Widgets?** Ohne sie würde der Benutzer das Textfeld nur auf Seite 1 sehen, obwohl das zugrunde liegende Feld existiert. Widgets ermöglichen es, ein einziges logisches Feld über mehrere Seiten zu teilen, sodass der eingegebene Text überall dort erscheint, wo das Feld angezeigt wird. + +> **Randfall:** Wenn Sie das Textfeld auf jeder Seite an anderen Koordinaten benötigen, ändern Sie einfach die `Rectangle`‑Werte für jedes Widget. + +## Schritt 4: Feld im Form‑Katalog des Dokuments registrieren + +Aspose.PDF führt ein zentrales Register aller Formularfelder. Das Hinzufügen des Feldes zur `Form`‑Sammlung macht es Teil der interaktiven Formularstruktur des PDFs. + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +Das zweite Argument (`"Comment"`) ist der **vollqualifizierte Name** des Feldes. Er muss im gesamten Dokument eindeutig sein; andernfalls wirft Aspose eine Ausnahme. + +## Schritt 5: Ergebnis‑PDF speichern – Wie man PDF speichert + +Abschließend persistieren wir das im Speicher befindliche Dokument auf die Festplatte. Das ist der **Wie‑man‑PDF‑speichert**‑Teil des Tutorials. + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**Warum einen absoluten Pfad angeben?** Ein absoluter Pfad vermeidet Verwirrungen über das Arbeitsverzeichnis, besonders wenn das Programm aus dem Debugger von Visual Studio gestartet wird. Wenn Sie einen relativen Pfad bevorzugen, stellen Sie sicher, dass der Ordner existiert, bevor Sie `Save` aufrufen. + +### Erwartetes Ergebnis + +Öffnen Sie *MultiWidgetField.pdf* in Adobe Acrobat Reader. Sie sehen dasselbe Textfeld auf den Seiten 1, 2 und 3. Geben Sie etwas in das Feld auf einer beliebigen Seite ein – der Text erscheint sofort auf den anderen Seiten, weil sie dasselbe zugrunde liegende Formularfeld teilen. + +![PDF-Dokument erstellen Beispiel, das ein Textfeld auf drei Seiten zeigt](https://example.com/placeholder-image.png "PDF-Dokument erstellen Beispiel") + +*Bild‑Alt‑Text: PDF-Dokument erstellen Beispiel, das ein Textfeld auf drei Seiten zeigt.* + +## Vollständiges, sofort ausführbares Beispiel + +Unten finden Sie das komplette Programm, das Sie in ein neues Konsolen‑Projekt (`dotnet new console`) kopieren und ausführen können. Alle Schritte sind bereits in der richtigen Reihenfolge, und der Code enthält Kommentare zur Klarheit. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +Führen Sie das Programm aus, navigieren Sie zu `C:\Temp\` und öffnen Sie das erzeugte PDF. Sie sehen die drei identischen Textfelder, bereit für Benutzereingaben. + +## Häufige Variationen & Randfälle + +| Szenario | Was zu ändern ist | Warum | +|----------|-------------------|-------| +| **Unterschiedliche Textfeld‑Größe auf jeder Seite** | Passen Sie die `Rectangle`‑Werte für jede `WidgetAnnotation` an. | Ermöglicht das Anpassen des Feldes an verschiedene Layouts. | +| **Schreibgeschütztes Feld** | Setzen Sie `commentField.ReadOnly = true;`. | Verhindert, dass Benutzer den Inhalt nach der ersten Eingabe ändern. | +| **Mehrzeiliges Textfeld** | Setzen Sie `commentField.Multiline = true;` und erhöhen Sie die Rechteck‑Höhe. | Ermöglicht längere Kommentare ohne Scrollen. | +| **Ein zweites Feld hinzufügen** | Erstellen Sie ein weiteres `TextBoxField` (oder ein beliebiges `FormField`) und wiederholen Sie die Schritte 2‑4 mit einem neuen Namen. | Sie können mehrere Informationen im selben PDF sammeln. | + +## Pro‑Tipps & Fallen, die Sie vermeiden sollten + +- **Seiten‑Indexierung:** Denken Sie daran, dass `pdfDocument.Pages[1]` die erste Seite ist, nicht `[0]`. Das Vermischen von 0‑basierten und 1‑basierten Indizes führt zu „Index out of range“‑Ausnahmen. +- **Namenskollisionen bei Feldern:** Zwei Felder können nicht denselben vollqualifizierten Namen besitzen. Wenn Sie einen Fehler wegen doppelter Namen erhalten, prüfen Sie den String, den Sie an `Form.Add` übergeben. +- **Lizenz vs. Evaluation:** Die Evaluierungs‑Version fügt jedem Blatt ein Wasserzeichen hinzu. Deployen Sie eine gültige Lizenz, um es in der Produktion zu entfernen. +- **Performance:** Das Hinzufügen von Hunderten von Seiten in einer Schleife ist in Ordnung, aber wenn Sie massive PDFs (Tausende von Seiten) erzeugen müssen, sollten Sie überlegen, + +{{< /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-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/german/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..0b5a7c115 --- /dev/null +++ b/pdf/german/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-03-06 +description: Erstellen Sie ein PDF-Dokument mit Aspose.PDF in C#. Erfahren Sie, wie + Sie einer PDF-Seite hinzufügen, ein Rechteck zeichnen, eine Form einfügen und die + Rahmenstärke des Rechtecks steuern – alles in einem Tutorial. +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: de +og_description: PDF-Dokument in C# mit Aspose.PDF erstellen. Dieses Tutorial zeigt, + wie man eine PDF‑Seite hinzufügt, ein Rechteck zeichnet, eine Form einfügt und die + Rahmenstärke des Rechtecks festlegt. +og_title: PDF-Dokument mit Aspose.PDF erstellen – Vollständige Anleitung +tags: +- Aspose.PDF +- C# +- PDF generation +title: PDF-Dokument mit Aspose.PDF erstellen – Schritt‑für‑Schritt‑Anleitung +url: /de/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF-Dokument mit Aspose.PDF erstellen – Schritt‑für‑Schritt-Anleitung + +Haben Sie jemals **PDF-Dokument** programmgesteuert erstellen müssen und wussten nicht, wo Sie anfangen sollten? Sie sind nicht allein – viele Entwickler stoßen auf dasselbe Problem, wenn ihre Apps Rechnungen, Berichte oder Zertifikate on‑the‑fly ausgeben müssen. + +Die gute Nachricht ist, dass Sie mit Aspose.PDF für .NET das in wenigen Zeilen erledigen können und Sie außerdem lernen, wie man **add page PDF**, **draw rectangle PDF**, **add shape PDF** verwendet und die **rectangle border thickness** anpasst. Lassen Sie uns loslegen. + +## Was Sie bauen werden + +Am Ende dieser Anleitung haben Sie eine voll funktionsfähige C#‑Konsolenanwendung, die: + +1. **Erstellt ein PDF‑Dokument** von Grund auf. +2. **Fügt ein page PDF** zum Dokument hinzu. +3. **Zeichnet ein rectangle PDF** auf dieser Seite. +4. **Validiert**, dass das Rechteck innerhalb der Seitenränder bleibt (**add shape PDF**‑Schritt). +5. Setzt eine benutzerdefinierte **rectangle border thickness**. +6. Speichert das Ergebnis als `ShapeValidated.pdf`. + +Keine externen Dienste, keine mysteriöse Konfiguration – nur reines C# und Aspose.PDF. + +### Voraussetzungen + +- .NET 6.0 oder höher (der Code funktioniert auch mit .NET Framework 4.6+). +- Ein Verweis auf das NuGet‑Paket `Aspose.Pdf`. Sie können es hinzufügen via: + +```bash +dotnet add package Aspose.Pdf +``` + +- Ein Texteditor oder eine IDE – Visual Studio, VS Code, Rider, was immer Sie bevorzugen. + +> **Pro‑Tipp:** Wenn Sie an einem Firmencomputer arbeiten, stellen Sie sicher, dass der NuGet‑Feed nicht blockiert ist; andernfalls erhalten Sie einen „Package not found“-Fehler. + +--- + +## PDF-Dokument erstellen – Dokument initialisieren + +Der allererste Schritt besteht darin, ein `Document`‑Objekt zu erzeugen. Denken Sie daran als leere Leinwand, auf der jede Seite und jede Form leben wird. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +Warum benötigen wir dieses Objekt? Es repräsentiert die gesamte PDF‑Datei im Speicher und gibt uns Zugriff auf die `Pages`‑Sammlung, Metadaten und Sicherheitseinstellungen. Sobald Sie das Dokument haben, können Sie beginnen, Seiten, Text, Bilder und Vektorgrafiken zu stapeln. + +--- + +## Eine Seite zum PDF hinzufügen (add page pdf) + +Ein PDF ohne Seiten ist im Grunde eine leere Datei – sinnlos. Das Hinzufügen einer Seite ist unkompliziert, und Sie können die Größe bei Bedarf anpassen. Hier verwenden wir die Standardgröße A4. + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +Die Methode `Add()` gibt eine neue `Page`‑Instanz zurück, die bereits Teil der `Pages`‑Sammlung ist, sodass Sie sofort mit dem Zeichnen beginnen können. In realen Szenarien könnten Sie über einen Datensatz iterieren und Dutzende von Seiten hinzufügen; derselbe einzeilige Aufruf funktioniert für jede Iteration. + +--- + +## Ein Rechteck zeichnen (draw rectangle pdf) + +Jetzt zum visuellen Teil: ein Rechteck mit sichtbarem Rand. Hier kommt **draw rectangle pdf** zum Einsatz. + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +Ein paar Dinge sind zu beachten: + +- `Rect` verwendet Punkte (1 pt ≈ 1/72 Zoll). Die Koordinaten definieren die linke untere und rechte obere Ecke, sodass Sie Breite und Höhe präzise steuern können. +- `BorderInfo` ermöglicht es, festzulegen, welche Seiten eine Linie erhalten und wie dick die Linie ist. Hier wenden wir eine 2‑Punkt‑Linie auf **alle** Seiten an, was dem Rechteck ein sauberes, einheitliches Aussehen verleiht. + +--- + +## Platzierung der Form validieren (add shape pdf) + +Bevor wir das Rechteck auf der Seite festlegen, ist es ratsam zu prüfen, ob es in den druckbaren Bereich der Seite passt. Aspose.PDF stellt dafür eine praktische Hilfsmethode bereit. + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +Warum das? Wenn Sie versehentlich eine Form teilweise außerhalb des Bildschirms platzieren, könnte der PDF‑Viewer sie abschneiden, was zu einer verwirrenden Benutzererfahrung führt. Diese **add shape pdf**‑Schutzklausel stellt sicher, dass Sie nur Inhalte hinzufügen, die vollständig sichtbar sind. + +--- + +## PDF speichern (add page pdf) + +Abschließend speichern wir das im Speicher befindliche Dokument auf die Festplatte. Sie können jeden Ort wählen, für den Sie Schreibrechte haben. + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +Nach dem Ausführen des Programms öffnen Sie `ShapeValidated.pdf` – Sie sollten eine einzelne Seite mit einem sauber umrandeten Rechteck sehen, das ungefähr in der Mitte zentriert ist. + +--- + +## Erwartetes Ergebnis + +Wenn Sie das erzeugte PDF öffnen, sehen Sie: + +- Eine A4‑große Seite. +- Ein Rechteck, dessen linke untere Ecke bei (50 pt, 50 pt) beginnt und dessen rechte obere Ecke bei (600 pt, 800 pt) endet. +- Ein **2‑Punkt‑dicker** Rand, der das Rechteck umgibt. + +Wenn die Konsole „PDF created successfully!“ ausgibt, wissen Sie, dass der Code ohne Probleme die Grenzprüfung durchlaufen hat. + +![Diagramm, das zeigt, wie man ein PDF-Dokument mit Aspose.PDF erstellt](https://example.com/diagram-create-pdf.png "PDF-Dokument erstellen – visuelle Übersicht") + +*Der Alt‑Text des Bildes enthält das Haupt‑Keyword, um SEO‑Anforderungen zu erfüllen.* + +--- + +## Häufige Fragen & Sonderfälle + +### Was ist, wenn ich eine andere Seitengröße benötige? + +Ersetzen Sie die Standardseite durch eine benutzerdefinierte Größe: + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### Wie ändere ich die Randfarbe? + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### Kann ich mehrere Formen auf derselben Seite hinzufügen? + +Absolut. Wiederholen Sie einfach den **add shape pdf**‑Block mit einem neuen `RectangleShape` (oder anderen `Shape`‑Unterklassen) und passen Sie die `Rect`‑Koordinaten entsprechend an. + +### Was ist, wenn das Rechteck die Seitenränder überschreitet? + +Der Aufruf `IsShapeWithinBounds` gibt `false` zurück. Im Produktionscode möchten Sie die Form möglicherweise automatisch skalieren: + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +--- + +## Zusammenfassung + +Wir haben den gesamten Lebenszyklus des **Erstellens eines PDF-Dokuments** mit Aspose.PDF durchlaufen: + +1. Initialisieren Sie das `Document`. +2. **Add a page PDF** mit `Pages.Add()`. +3. **Draw a rectangle PDF** über `RectangleShape`. +4. **Add shape PDF** nur, nachdem bestätigt wurde, dass es innerhalb der Seite bleibt. +5. Steuern Sie die **rectangle border thickness** mit `BorderInfo`. +6. Speichern Sie die Datei. + +Das ist der gesamte Workflow in weniger als 60 Codezeilen. + +--- + +## Was kommt als Nächstes? + +- **Add text**: Verwenden Sie `TextFragment`, um Titel oder Beschriftungen innerhalb des Rechtecks zu platzieren. +- **Insert images**: Die Klasse `Image` ermöglicht das Einbetten von Logos oder Diagrammen. +- **Create tables**: Perfekt für Rechnungen oder Datenberichte. +- **Apply security**: Passwortschützen Sie das PDF, wenn es sensible Daten enthält. + +Jedes dieser Themen baut auf den hier behandelten Grundlagen auf, sodass Sie gut positioniert sind, um weiterführende PDF‑Generierungsszenarien zu erkunden. + +### Weiter experimentieren + +Hören Sie nicht bei einem einzigen Rechteck auf – experimentieren Sie mit verschiedenen Formen, Farben und Linienstilen. Die Aspose.PDF‑API ist umfangreich, und je mehr Sie herumprobieren, desto sicherer werden Sie. Wenn Sie auf ein Problem stoßen, ist die offizielle Aspose‑Dokumentation ein guter Begleiter, aber denken Sie daran, dass der oben gezeigte Code eine vollständige, copy‑and‑paste‑bereite Lösung ist, die Sie noch heute ausführen können. + +Viel Spaß beim Programmieren, und möge Ihr PDF immer genau so rendern, wie Sie es sich vorgestellt haben! + +{{< /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 688642e8f..8cb277a54 100644 --- a/pdf/german/net/document-manipulation/_index.md +++ b/pdf/german/net/document-manipulation/_index.md @@ -101,7 +101,7 @@ Erfahren Sie in diesem ausführlichen C#-Tutorial, wie Sie mit Aspose.PDF für . ### [So fügen Sie mit Aspose.PDF für .NET Kopfzeilen zu PDFs hinzu: Eine umfassende Anleitung](./add-header-pdf-aspose-dotnet-guide/) Erfahren Sie, wie Sie mit Aspose.PDF für .NET nahtlos Kopfzeilen, einschließlich Text und Bilder, zu Ihren PDF-Dokumenten hinzufügen. Perfekt für die Verbesserung des Dokumenten-Brandings. -### [So fügen Sie mit Aspose.PDF für .NET Kopfzeilen zu PDFs hinzu: Eine umfassende Anleitung](./add-headers-aspose-pdf-dotnet-guide/) +### [So fügen Sie mit Aspose.PDF für .NET Kopfzeilen zu PDFs hinzufügen: Eine umfassende Anleitung](./add-headers-aspose-pdf-dotnet-guide/) Erfahren Sie, wie Sie mit Aspose.PDF für .NET nahtlos Textkopfzeilen zu Ihren PDF-Dateien hinzufügen und so die Lesbarkeit und Organisation der Dokumente verbessern. ### [So fügen Sie mit Aspose.PDF für .NET ein Linienobjekt in PDF ein: Eine Schritt-für-Schritt-Anleitung](./add-line-aspose-pdf-dotnet-tutorial/) @@ -311,6 +311,9 @@ Erfahren Sie, wie Sie mehrseitige PDFs mit Aspose.PDF für .NET aufteilen und ne ### [Ultimativer Leitfaden zur PDF-Manipulation mit Aspose.PDF .NET: Text effizient laden, speichern und ersetzen](./master-pdf-manipulation-aspose-pdf-net/) Erfahren Sie, wie Sie PDFs mit Aspose.PDF für .NET bearbeiten. Diese Anleitung behandelt das Laden, Speichern und Ersetzen von Text in PDFs – ideal für Entwickler, die Wert auf Effizienz legen. +### [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. + ## Weitere Ressourcen - [Aspose.PDF für Net-Dokumentation](https://docs.aspose.com/pdf/net/) diff --git a/pdf/german/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/german/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..a0cfa70e5 --- /dev/null +++ b/pdf/german/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,250 @@ +--- +category: general +date: 2026-03-06 +description: Erfahren Sie, wie Sie PDFs mit Aspose PDF in C# redigieren. Diese Schritt‑für‑Schritt‑Anleitung + zeigt, wie Sie ein PDF‑Dokument in C# laden, auf die erste PDF‑Seite zugreifen und + ein Bild aus dem PDF entfernen. +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: de +og_description: Wie man PDFs schnell mit Aspose PDF in C# redigiert. PDF‑Dokument + laden, erste PDF‑Seite zugreifen und Bild aus dem PDF in nur wenigen Codezeilen + entfernen. +og_title: Wie man PDFs in C# schwärzt – Aspose PDF Tutorial +tags: +- Aspose PDF +- C# +- PDF Redaction +title: Wie man PDF in C# mit Aspose PDF redigiert – Vollständiger Leitfaden +url: /de/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man PDF in C# mit Aspose PDF redigiert – Komplettanleitung + +Haben Sie sich schon einmal gefragt, **wie man PDF**-Dateien redigiert, ohne ins Schwitzen zu geraten? Vielleicht haben Sie einen Vertrag erhalten, der ein vertrauliches Logo verbirgt, oder einen Bericht, in dem noch ein Platzhalter‑Bild zu sehen ist, das Sie entfernen müssen. In solchen Momenten benötigen Sie eine zuverlässige, programmatische Methode, um diesen Inhalt zu entfernen – ohne manuelle Acrobat‑Tricks. + +In diesem Tutorial führen wir Sie Schritt für Schritt durch eine kompakte, End‑zu‑End‑Lösung, die **PDF‑Dokument in C# lädt**, die **erste PDF‑Seite zugreift** und dann **ein Bild aus PDF entfernt** mithilfe der leistungsstarken **Aspose PDF**‑Bibliothek. Am Ende haben Sie ein vollständig redigiertes PDF, das Sie verteilen können, und verstehen, warum jede Code‑Zeile wichtig ist. + +> **Pro‑Tipp:** Aspose PDF funktioniert mit .NET Framework 4.6+ und .NET Core 3.1+, sodass Sie sowohl unter Windows, Linux als auch macOS abgedeckt sind. + +--- + +![how to redact pdf example](redact-pdf-before-after.png){alt="Beispiel für das Redigieren von PDF"} + +## Was Sie benötigen + +- **Aspose.PDF für .NET** (neuestes NuGet‑Paket) +- Eine **C#‑Entwicklungsumgebung** (Visual Studio, Rider oder VS Code) +- Ein Beispiel‑PDF, das eine Bild‑Ressource enthält, die Sie löschen möchten (wir nennen es `Sensitive.pdf`) + +Keine zusätzlichen Drittanbieter‑Tools, kein OCR, nur reiner Code. + +--- + +## Schritt 1: PDF‑Dokument in C# laden – Der erste Schritt + +Bevor Sie irgendetwas redigieren können, müssen Sie die Datei in den Speicher laden. Die Klasse `Document` ist der Einstiegspunkt für jede Aspose PDF‑Operation. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**Warum das wichtig ist:** +`Document` analysiert die gesamte PDF‑Struktur und erstellt ein Objektmodell, mit dem Sie Seiten, Ressourcen und Anmerkungen manipulieren können. Wenn die Datei nicht geladen werden kann (falscher Pfad, beschädigtes PDF), wird sofort eine Ausnahme ausgelöst – Sie wissen also frühzeitig, dass etwas nicht stimmt. + +### Häufiges Stolperfeld + +> *„Ich erhalte eine `FileNotFoundException`, obwohl die Datei existiert.“* +> Stellen Sie sicher, dass der Pfad absolut ist oder dass das Arbeitsverzeichnis Ihres Projekts dem Speicherort von `Sensitive.pdf` entspricht. Die Verwendung von `Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")` kann relative Pfad‑Probleme vermeiden. + +--- + +## Schritt 2: Erste PDF‑Seite zugreifen – Wo das Bild liegt + +Bilder werden als Ressourcen pro Seite gespeichert. In vielen einfachen PDFs ist die erste Seite der Übeltäter, also holen wir sie uns. + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**Warum das wichtig ist:** +Aspose PDF verwendet einen 1‑basierten Index für Seiten, was im Vergleich zu den meisten .NET‑Sammlungen etwas ungewöhnlich ist. Der Zugriff auf die falsche Seite könnte bedeuten, dass Sie den falschen Inhalt redigieren – oder schlimmer noch, das vertrauliche Bild unverändert lassen. + +### Sonderfall‑Betrachtung + +Wenn Ihr Dokument keine Seiten hat (ein leeres PDF), wirft `pdfDocument.Pages[1]` eine `IndexOutOfRangeException`. Eine kurze Prüfung kann Sie retten: + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +--- + +## Schritt 3: Bild aus PDF entfernen – Ressource redigieren + +Aspose PDF ermöglicht das Löschen einer Ressource anhand ihres Namens. Die meisten Bilder heißen `Im1`, `Im2` usw., aber Sie können `firstPage.Resources.Images` prüfen, um sicherzugehen. + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**Warum das wichtig ist:** +`RedactResource` entfernt das Bild *und* alle Verweise darauf auf der Seite, sodass die Lücke mit einem leeren Bereich gefüllt wird und nicht mit einem defekten Link. Das ist ein sauberer, PDF‑standardkonformer Weg, Inhalte zu löschen. + +### Wie Sie den richtigen Bildnamen finden + +Falls Sie nicht sicher sind, ob das Bild `"Im1"` heißt: + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +Führen Sie diesen Ausschnitt aus, prüfen Sie die Konsolenausgabe und ersetzen Sie `"Im1"` durch den tatsächlich angezeigten Schlüssel. + +--- + +## Schritt 4: Redigiertes PDF speichern – Abschluss + +Jetzt, wo das unerwünschte Bild verschwunden ist, schreiben Sie die Änderungen zurück auf die Festplatte. + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**Warum das wichtig ist:** +Das Speichern in einer **neuen** Datei lässt das Original unverändert – ein Sicherheitsnetz, falls Sie zurückrollen müssen. Wenn Sie überschreiben müssen, geben Sie einfach den ursprünglichen Pfad an die `Save`‑Methode, aber bedenken Sie, dass der Vorgang unwiderruflich ist. + +### Ergebnis überprüfen + +Öffnen Sie `Redacted.pdf` in einem beliebigen PDF‑Betrachter. Die Bildstelle sollte leer sein und der Rest des Dokuments sollte identisch zum Original aussehen. Wenn das Layout verschoben wirkt, prüfen Sie, ob Sie nur die beabsichtigte Ressource und nicht ein gemeinsam genutztes XObject entfernt haben. + +--- + +## Vollständiges Beispiel + +Alles zusammengefügt, hier das komplette, sofort ausführbare Programm: + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**Erwartete Ausgabe** (in der Konsole): + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +Wenn Sie `Redacted.pdf` öffnen, ist das Bild, das früher `Im1` war, verschwunden und die Seite ist sauber. + +--- + +## Häufig gestellte Fragen + +### Funktioniert das mit verschlüsselten PDFs? + +Falls das Quell‑PDF passwortgeschützt ist, übergeben Sie das Passwort dem `Document`‑Konstruktor: + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### Was, wenn das Bild auf mehreren Seiten erscheint? + +Durchlaufen Sie jede Seite und rufen Sie `RedactResource` mit demselben Bildnamen auf (oder ermitteln Sie den Namen pro Seite). Beispiel: + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### Kann ich Text auf dieselbe Weise redigieren? + +Ja – verwenden Sie `page.Contents.RedactText("confidential")` oder die `Redactor`‑Klasse für komplexere Muster. Das ist ein eigenes Tutorial, aber das Prinzip entspricht dem, was wir für Bilder gemacht haben. + +--- + +## Fazit – Was wir erreicht haben + +Wir haben **wie man PDF**‑Dateien programmgesteuert redigiert, indem wir: + +1. **PDF‑Dokument in C#** mit Aspose PDF geladen haben. +2. **Erste PDF‑Seite** zugegriffen haben, um die Ziel‑Ressource zu finden. +3. **Bild aus PDF** mittels `RedactResource` entfernt haben. +4. **Die bereinigte Version** sicher gespeichert haben. + +Dieser Ansatz ist schnell, wiederholbar und lässt sich in Batch‑Jobs einsetzen – ideal für Compliance‑Pipelines oder automatisierte Berichtserstellung. + +Wenn Sie weitergehen wollen, schauen Sie sich an: + +- **Batch‑Redaktion** über einen gesamten Ordner von PDFs. +- **Text‑Redaktion** mit Regex‑Mustern über `Redactor`. +- **Ein Wasserzeichen** nach der Redaktion einbetten, um „gesäubert“ zu signalisieren. + +Probieren Sie es aus, passen Sie die Bildnamens‑Logik an Ihre eigenen Dateien an, + +{{< /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/performance-optimization/_index.md b/pdf/german/net/performance-optimization/_index.md index cb1417390..2000c7250 100644 --- a/pdf/german/net/performance-optimization/_index.md +++ b/pdf/german/net/performance-optimization/_index.md @@ -50,6 +50,9 @@ Meistern Sie die Kunst, SVG-Dateien präzise und effizient in PDFs zu konvertier ### [Einbetten von Schriftarten in PDFs mit Aspose.PDF für .NET: Reduzieren Sie die Dateigröße und verbessern Sie die Leistung](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) Erfahren Sie, wie Sie mit Aspose.PDF für .NET Schriftarten aus Ihren PDF-Dateien entfernen. Optimieren Sie die PDF-Leistung, reduzieren Sie die Dateigröße und verbessern Sie die Ladezeiten mit dieser Schritt-für-Schritt-Anleitung. +### [PDF mit Aspose.PDF komprimieren – Schnellleitfaden](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) +Erfahren Sie, wie Sie PDFs schnell mit Aspose.PDF komprimieren, um Dateigröße zu reduzieren und die Leistung zu verbessern. + ## Weitere Ressourcen - [Aspose.PDF für Net-Dokumentation](https://docs.aspose.com/pdf/net/) diff --git a/pdf/german/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/german/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..17be4278e --- /dev/null +++ b/pdf/german/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,202 @@ +--- +category: general +date: 2026-03-06 +description: Erfahren Sie, wie Sie PDF sofort mit Aspose.Pdf komprimieren. Dieser + Leitfaden zeigt, wie Sie die PDF‑Dateigröße mit verlustfreier PDF‑Kompression reduzieren. +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: de +og_description: Wie komprimiere ich PDFs mit Aspose.Pdf? Folgen Sie diesem Schritt‑für‑Schritt‑Tutorial, + um die PDF‑Dateigröße zu reduzieren, verlustfreie PDF‑Kompression zu erreichen und + optimierte PDF‑Dateien zu speichern. +og_title: Wie man PDF mit Aspose.Pdf komprimiert – Schnellleitfaden +tags: +- pdf +- aspnet +- csharp +title: PDF mit Aspose.Pdf komprimieren – Schnellleitfaden +url: /de/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# wie man pdf mit Aspose.Pdf – schnellleitfaden + +Haben Sie sich jemals gefragt, **wie man pdf** Dateien komprimiert, ohne sie zu einem verschwommenen Durcheinander zu machen? Sie sind nicht allein. Die meisten Entwickler stoßen auf ein Problem, wenn sie **pdf-Dateigröße reduzieren** müssen für E‑Mail‑Anhänge, Web‑Uploads oder Speicherlimits, doch sie fürchten, die Bildqualität zu verlieren. + +In diesem Tutorial führen wir Sie durch ein vollständiges, sofort ausführbares Beispiel, das genau zeigt, **wie man pdf** mit dem integrierten Optimierer von Aspose.Pdf komprimiert. Am Ende wissen Sie, wie man **pdf-Dateigröße verkleinert**, Ihre Bilder mit **verlustfreier pdf‑Kompression** scharf hält und schließlich **optimierte pdf**‑Dateien speichert, die mit jedem Viewer gut funktionieren. + +## Was Sie lernen werden + +- Laden Sie ein großes PDF (z. B. eines mit hochauflösenden Bildern) in den Speicher. +- Wenden Sie den Optimierer von Aspose.Pdf mit den standardmäßigen verlustfreien Einstellungen an. +- Speichern Sie das Ergebnis als neue, kleinere Datei. +- Tipps zum Anpassen der Kompression, falls Sie noch stärker reduzieren müssen. + +Keine externen Werkzeuge, keine mysteriösen Befehlszeilen‑Tricks – nur sauberer C#‑Code und klare Erklärungen. + +## Voraussetzungen + +| Anforderung | Warum es wichtig ist | +|-------------|----------------------| +| .NET 6.0 oder höher (oder .NET Framework 4.6+) | Aspose.Pdf unterstützt beides; neuere Laufzeiten bieten bessere Leistung. | +| Aspose.Pdf für .NET NuGet‑Paket (`Aspose.Pdf`) | Die `Document`‑Klasse befindet sich hier. | +| Ein PDF mit großen Bildern (z. B. `HeavyImages.pdf`) | Gibt Ihnen etwas Greifbares zum Verkleinern. | +| Visual Studio, Rider oder ein beliebiger C#‑Editor Ihrer Wahl | Komfort ist entscheidend – wählen Sie, was sich natürlich anfühlt. | + +> **Pro Tipp:** Wenn Sie in einer CI/CD‑Pipeline arbeiten, fügen Sie die NuGet‑Referenz in Ihrer `.csproj` hinzu, damit der Build sie nie vergisst. + +```xml + + + +``` + +## Schritt 1: Laden Sie das PDF, das Sie komprimieren möchten + +Zuerst benötigen wir ein `Document`‑Objekt, das auf die Quelldatei verweist. Denken Sie daran, als würden Sie ein Buch öffnen, bevor Sie die Kapitel bearbeiten. + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*Warum das wichtig ist:* Das Laden der Datei gibt Aspose.Pdf die Möglichkeit, alle eingebetteten Ressourcen (Bilder, Schriften usw.) zu lesen. Ohne diesen Schritt gibt es nichts zu **pdf-Dateigröße verkleinern**. + +## Schritt 2: Verlustfreie PDF‑Kompression anwenden + +Aspose.Pdf liefert eine `Optimize`‑Methode, die standardmäßig eine **verlustfreie pdf‑Kompression**‑Routine ausführt. Sie entfernt redundante Objekte, komprimiert Bilder erneut mit derselben visuellen Treue und entfernt ungenutzte Schriften. + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*Warum das wichtig ist:* Der Standard‑Optimierer ist darauf ausgelegt, **pdf-Dateigröße zu verkleinern**, während jedes Pixel erhalten bleibt. Wenn Sie später entscheiden, dass ein kleiner Qualitätsverlust tolerierbar ist, ermöglicht das auskommentierte `OptimizationOptions`, ein paar zusätzliche Kilobytes gegen Geschwindigkeit zu tauschen. + +## Schritt 3: Das optimierte PDF speichern + +Jetzt, wo das Dokument schlanker ist, schreiben wir es in eine neue Datei. Das Original unverändert zu lassen, ist eine gute Gewohnheit, besonders wenn Sie verschiedene Einstellungen testen. + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +Nach dem Speichern vergleichen Sie die Dateigrößen: + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +Sie sollten einen spürbaren Rückgang sehen – oft **30‑70 %**, abhängig davon, wie viele hochauflösende Bilder im Original enthalten waren. + +![wie man pdf komprimiert Illustration](image.png "wie man pdf komprimiert") + +*Bild‑Alt‑Text:* pdf komprimieren – Vorher und nach der Optimierung + +## Fortgeschritten: Kompression für spezielle Szenarien anpassen + +Obwohl der Standard‑Optimierer für die meisten Fälle großartig ist, müssen Sie manchmal die **pdf-Dateigröße** noch weiter **verkleinern**: + +| Szenario | Einstellung anzupassen | Effekt | +|----------|------------------------|--------| +| PDFs mit vielen Rasterbildern | `CompressImages = true` + niedrigeres `ImageQuality` (z. B. 70) | Reduziert die Bildbyte‑Anzahl, leichte visuelle Verluste. | +| PDFs mit doppelten Schriften | `RemoveUnusedObjects = true` | Entfernt Schriften, die nicht referenziert werden. | +| PDFs mit großen Metadaten | `RemoveMetadata = true` | Entfernt versteckte XML/Metadaten‑Blöcke. | + +Sie können diese in einem `OptimizationOptions`‑Objekt kombinieren und an `pdfDoc.Optimize(options)` übergeben. + +## Häufige Fragen & Sonderfälle + +**Was ist, wenn das PDF bereits optimiert ist?** +Aspose.Pdf wird das Dokument weiterhin scannen, aber die Größenänderung wird minimal sein. Das Ausführen des Optimierers auf einer bereits schlanken Datei ist sicher; es wird nichts beschädigen. + +**Kann ich verschlüsselte PDFs komprimieren?** +Ja, aber Sie müssen das Passwort bereitstellen, bevor Sie `Optimize` aufrufen. Beispiel: + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**Wie sieht es mit PDFs mit Vektorgrafiken aus?** +Vektorobjekte sind bereits leicht, daher konzentriert sich der Optimierer auf Rasterbilder und Metadaten. Erwarten Sie moderate Verbesserungen bei rein vektorbasierten Dateien. + +## Vollständiges, ausführbares Beispiel + +Unten finden Sie eine eigenständige Konsolen‑App, die Sie in ein neues `.csproj` kopieren‑und‑einfügen können. Sie demonstriert alles Besprochene – vom Laden bis zur Verifizierung. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +Führen Sie das Programm aus, öffnen Sie `Optimized.pdf` in einem beliebigen Viewer, und Sie sehen das gleiche Seitenlayout, die gleichen scharfen Bilder, aber eine schlankere Datei. Das ist die Magie der **verlustfreien pdf‑Kompression**. + +## Fazit + +Wir haben **wie man pdf** Dateien mit dem integrierten Optimierer von Aspose.Pdf komprimiert, einen praktischen **pdf-Dateigröße reduzieren**‑Workflow demonstriert und die zugrunde liegenden Gründe für jeden Schritt erklärt. Durch das Befolgen des Drei‑Schritte‑Musters – Laden, Optimieren, Speichern – können Sie **pdf-Dateigröße** unterwegs **verkleinern**, Ihre Bilder mit **verlustfreier pdf‑Kompression** intakt halten und selbstbewusst **optimierte pdf**‑Dateien für die Weiterverwendung speichern. + +Bereit für die nächste Herausforderung? Versuchen Sie, diesen Optimierer mit einem Batch‑Skript zu verketten, um einen gesamten Ordner zu verarbeiten, oder experimentieren Sie mit den optionalen `OptimizationOptions`, um die letzten Kilobytes herauszuholen. Die gleichen Prinzipien gelten, egal ob Sie an einem Desktop‑Tool, einer Web‑API oder einem serverseitigen Batch‑Job arbeiten. + +Haben Sie weitere Fragen zur PDF‑Verarbeitung, zu Eigenheiten von Aspose.Pdf oder zu .NET‑Datei‑I/O? Hinterlassen Sie unten einen Kommentar, und wir führen das Gespräch weiter. Viel Spaß beim Komprimieren! + +{{< /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/programming-with-security-and-signatures/_index.md b/pdf/german/net/programming-with-security-and-signatures/_index.md index b9f99231c..477b306b0 100644 --- a/pdf/german/net/programming-with-security-and-signatures/_index.md +++ b/pdf/german/net/programming-with-security-and-signatures/_index.md @@ -34,6 +34,8 @@ Das Tutorial gibt Ihnen einen detaillierten Überblick über Methoden und Techni | [Mit Smartcard unterschreiben und PDF-Dateisignatur verwenden](./sign-with-smart-card-using-pdf-file-signature/) | Erfahren Sie, wie Sie PDF-Dateien mit einer Smartcard mit Aspose.PDF für .NET signieren. Folgen Sie dieser Schritt-für-Schritt-Anleitung für sichere digitale Signaturen. | | [Mit Smartcard unterschreiben und dabei das Signaturfeld verwenden](./sign-with-smart-card-using-signature-field/) | Erfahren Sie, wie Sie PDFs mit Aspose.PDF für .NET sicher per Smartcard signieren. Folgen Sie unserer Schritt-für-Schritt-Anleitung für eine einfache Implementierung. | | [PDF-Signaturen in C# prüfen – So lesen Sie signierte PDF-Dateien](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) | Erfahren Sie, wie Sie mit Aspose.PDF für .NET PDF-Signaturen auslesen und signierte PDF-Dateien analysieren. | +| [So prüfen Sie die Signatur in PDF mit C# – Vollständige Aspose-Anleitung](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) | Erfahren Sie, wie Sie mit Aspose.PDF für .NET PDF-Signaturen in C# überprüfen. Schritt-für-Schritt-Anleitung für sichere Validierung. | +| [Digitale Signatur zu PDF in C# hinzufügen – Vollständige Schritt‑für‑Schritt‑Anleitung](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) | Erfahren Sie, wie Sie mit Aspose.PDF für .NET in C# digitale Signaturen zu PDF-Dateien hinzufügen – komplette Schritt‑für‑Schritt‑Anleitung. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/german/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/german/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..967070d5a --- /dev/null +++ b/pdf/german/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,259 @@ +--- +category: general +date: 2026-03-06 +description: Digitale Signatur zu PDF mit Aspose.PDF hinzufügen. Erfahren Sie, wie + Sie eine PKCS7‑Detached‑Signatur erstellen und ein PDF mit PFX und einem benutzerdefinierten + Callback signieren. +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: de +og_description: Fügen Sie schnell digitale Signaturen zu PDFs hinzu. Dieser Leitfaden + zeigt, wie man eine PKCS7‑Detached‑Signatur erstellt und PDFs mit PFX in C# signiert. +og_title: Digitale Signatur zu PDF in C# hinzufügen – Vollständiges Programmier‑Tutorial +tags: +- Aspose.PDF +- C# +- Digital Signature +title: Digitale Signatur zu PDF in C# hinzufügen – Vollständige Schritt‑für‑Schritt‑Anleitung +url: /de/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Digitale Signatur zu PDF hinzufügen – Vollständige Schritt‑für‑Schritt-Anleitung + +Haben Sie jemals **add digital signature pdf** Dateien hinzufügen müssen, wussten aber nicht, wo Sie anfangen sollen? Sie sind nicht allein; viele Entwickler stoßen auf dasselbe Problem, wenn die Unterlagen eine rechtlich bindende Unterschrift erfordern und der Code nur plain PDFs erzeugen kann. + +In diesem Tutorial führen wir Sie durch eine praxisnahe Lösung, mit der Sie **add digital signature pdf** Dokumente mithilfe von Aspose.PDF für .NET hinzufügen, eine PKCS#7 detached signature erstellen und das PDF mit einem PFX‑Zertifikat signieren – alles in reinem C#. Am Ende haben Sie ein sofort einsatzbereites Snippet, verstehen das „Warum“ hinter jedem Aufruf und wissen, wie Sie den Ansatz für Sonderfälle anpassen können. + +## Was Sie lernen werden + +- Wie Sie ein unsigniertes PDF laden und für die Signatur vorbereiten. +- Die Funktionsweise einer **create pkcs7 detached signature** und warum Sie eine detached‑Signature einer eingebetteten vorziehen könnten. +- Die genauen Schritte, um **sign pdf using pfx** mit einem benutzerdefinierten Callback zu verwenden, wodurch Sie die kryptografische Verarbeitung vollständig kontrollieren. +- Tipps zur Fehlersuche bei häufigen Stolpersteinen (fehlendes Zertifikat, falscher Hash‑Algorithmus usw.). + +### Voraussetzungen + +| Anforderung | Grund | +|-------------|-------| +| .NET 6.0 oder höher | Moderne Sprachfeatures und besseres Speicher‑Handling. | +| Aspose.PDF für .NET (NuGet‑Paket) | Stellt `PdfFileSignature`, `PKCS7Detached` und weitere PDF‑Hilfsmittel bereit. | +| Eine gültige PFX‑Datei (`.pfx`) mit privatem Schlüssel | Wird für den **sign pdf using pfx**‑Schritt benötigt. | +| Grundkenntnisse in C# | Der Code ist unkompliziert, aber das Verständnis von `using`‑Anweisungen hilft. | + +> **Pro‑Tipp:** Halten Sie Ihr PFX‑Passwort außerhalb der Quellcode‑Kontrolle – verwenden Sie Umgebungsvariablen oder Azure Key Vault für die Produktion. + +--- + +## Wie man digitale Signatur‑PDFs mit Aspose.PDF hinzufügt + +Im Folgenden zerlegen wir den Prozess in fünf gut verdauliche Schritte. Jeder Schritt enthält ein Code‑Snippet, eine Erklärung, *warum* er wichtig ist, und einen schnellen Plausibilitäts‑Check. + +![Screenshot eines signierten PDFs in einem Viewer, das ein sichtbares Signaturfeld zeigt](/images/add-digital-signature-pdf.png "Beispiel für digitale Signatur PDF") + +### Schritt 1 – Laden des unsignierten PDF‑Dokuments + +Zuerst benötigen wir ein `Document`‑Objekt, das das PDF repräsentiert, das Sie signieren möchten. Mit `using var` wird der Dateihandle automatisch freigegeben. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**Warum?** +Aspose behandelt ein PDF als Objektgraph; das Laden gibt Ihnen Zugriff auf Seiten, Anmerkungen und den internen Bytestrom, der später für die Signatur gehasht wird. + +### Schritt 2 – Initialisieren des PdfFileSignature‑Helfers + +`PdfFileSignature` ist die Klasse, die den kryptografischen Umschlag tatsächlich anwendet. Sie arbeitet Hand‑in‑Hand mit `PKCS7Detached`. + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**Warum?** +Durch die Trennung von Signierer und Dokument können Sie dieselbe `Document`‑Instanz für weitere Vorgänge (z. B. Wasserzeichen hinzufügen) verwenden, bevor die Signatur finalisiert wird. + +### Schritt 3 – PKCS#7 Detached Signature erstellen (Create PKCS7 Detached Signature) + +Eine **PKCS#7 detached signature** speichert nur den Hash des PDFs, nicht das PDF selbst. Das ist ideal für große Dokumente oder wenn das Original unverändert bleiben soll. + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**Warum ein benutzerdefinierter Callback?** +Manchmal befindet sich der Signaturschlüssel in einem HSM oder Azure Key Vault, und Sie können den privaten Schlüssel nicht direkt extrahieren. Durch Bereitstellung von `CustomSignHash` übergeben Sie den Hash an den Dienst, der den Schlüssel hält, und halten das private Material sicher. + +**Was, wenn Sie keinen benutzerdefinierten Callback benötigen?** +Sie können `CustomSignHash` weglassen; Aspose verwendet dann automatisch den privaten Schlüssel aus dem PFX. Der benutzerdefinierte Weg ist jedoch flexibler und entspricht häufigen Compliance‑Anforderungen. + +### Schritt 4 – Signatur auf einer bestimmten Seite anwenden (Sign PDF Using PFX) + +Jetzt platzieren wir tatsächlich ein sichtbares Signaturfeld auf der Seite. Das Rechteck definiert Position und Größe (in Punkten). + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**Warum ein Rechteck angeben?** +Eine sichtbare Signatur hilft End‑Benutzern zu erkennen, dass das Dokument signiert ist. Wenn Sie `isVisible` auf `false` setzen, wird die Signatur unsichtbar – sie bleibt gültig, ist aber schwerer zu entdecken. + +**Randfall:** Hat das PDF keine Seiten (leere Datei), wirft der Aufruf eine `ArgumentOutOfRangeException`. Prüfen Sie stets `pdfDocument.Pages.Count > 0`, bevor Sie signieren. + +### Schritt 5 – Signiertes PDF speichern + +Abschließend speichern wir das signierte Dokument auf dem Datenträger. Sie können es auch direkt als Stream an eine Antwort in ASP.NET Core senden. + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**Verifizierungstipp:** Öffnen Sie die resultierende Datei in Adobe Acrobat Reader. Das Signatur‑Panel sollte ein grünes Häkchen anzeigen (vorausgesetzt, das Zertifikat ist auf dem Rechner vertrauenswürdig). + +--- + +## Vollständiges funktionierendes Beispiel + +Hier fassen wir alles zusammen – ein eigenständiges Konsolenprogramm, das Sie kopieren, einfügen und ausführen können (nach Anpassung von Pfaden und Passwörtern). + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**Erwartete Ausgabe:** Die Konsole gibt „✅ PDF signed successfully!“ aus und die Datei `CustomSigned.pdf` erscheint im selben Ordner. Beim Öffnen sehen Sie ein Signatur‑Widget bei den Koordinaten (100,100)‑(300,200). + +--- + +## Häufig gestellte Fragen & Randfälle + +### Was, wenn mein PFX durch eine Smartcard geschützt ist? + +Verwenden Sie den `CustomSignHash`‑Delegate, um den Hash an den Smartcard‑Treiber weiterzuleiten. Der Treiber liefert die Signatur‑Bytes zurück, und Aspose bettet sie ein, ohne den privaten Schlüssel jemals preiszugeben. + +### Kann ich mehrere Seiten gleichzeitig signieren? + +Ja. Rufen Sie `pdfSigner.Sign` in einer Schleife auf, passen Sie `pageNumber` und optional das Rechteck für jede Seite an. Beachten Sie, dass jeder Aufruf ein separates Signatur‑Objekt hinzufügt; einige Viewer listen sie einzeln auf. + +### Wie ändere ich den Hash‑Algorithmus? + +`PKCS7Detached` verwendet standardmäßig SHA‑256, Sie können jedoch die Eigenschaft `HashAlgorithm` setzen: + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +Stellen Sie sicher, dass Ihr Signatur‑Provider den gewählten Algorithmus unterstützt. + +### Was, wenn die Zertifikatskette auf dem Client‑Rechner nicht vertrauenswürdig ist? + +Binden Sie die vollständige Kette im PFX ein oder verteilen Sie das Root‑Zertifikat in den Vertrauensspeicher des End‑Benutzers. Andernfalls meldet Acrobat „Signature is unknown“. + +### Ist eine detached Signature mit PDF/A‑3 kompatibel? + +PDF/A‑3 verlangt eingebettete Signaturen, sodass eine detached PKCS#7 möglicherweise nicht konform ist. In diesem Fall verzichten Sie auf den `CustomSignHash`‑Delegate und lassen Aspose die Signatur intern erstellen, was eine eingebettete Signatur erzeugt. + +--- + +## Best Practices für die Produktion + +1. **Nie Passwörter hart codieren.** Laden Sie sie aus Umgebungsvariablen oder einem Secret‑Manager. +2. **Validieren Sie das PDF vor dem Signieren.** Beschädigte Dateien führen zu `PdfFileSignatureException`. +3. **Loggen Sie den Hash‑Algorithmus und den Zertifikats‑Thumbprint** für Auditrückverfolgungen. +4. **Testen Sie mit mehreren PDF‑Viewern** (Adobe Reader, Foxit, Chrome), um sicherzustellen, dass die Signatur wie gewünscht erscheint. +5. **Erwägen Sie Timestamping**, indem Sie eine TSA‑Anfrage (Time‑Stamp Authority) hinzufügen, was die rechtliche Gültigkeit der Signatur weiter stärkt. + +--- + +## Fazit + +Wir haben Ihnen gezeigt, wie Sie **add digital signature pdf** Dateien mit Aspose.PDF hinzufügen, eine **PKCS#7 detached signature** erstellen und **sign pdf using pfx** mit einem benutzerdefinierten Callback ausführen. Das vollständige Beispiel läuft sofort, und die Erklärungen geben Ihnen das Vertrauen, den Prozess für HSMs, Timestamp‑Dienste oder PDF/A‑Konformität anzupassen. + +Als nächstes könnten Sie **mehrere Dokumente im Batch signieren**, die Integration von **Azure Key Vault** für sichere Schlüsselablage erkunden oder **visuelle Anpassungen** an der Signatur‑Darstellung vornehmen. All diese Themen bauen direkt auf dem hier gelegten Fundament auf. + +Wenn Sie den Schritten gefolgt sind, besitzen Sie nun eine solide, zitierfähige Lösung, die Sie mit Kolleg*innen teilen – oder sogar in einer KI‑gestützten Assistenzantwort referenzieren können. Viel Spaß beim Signieren, und hinterlassen Sie gern einen Kommentar, falls etwas nicht ganz klar ist! + +{{< /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/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/german/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..3fdf39fd4 --- /dev/null +++ b/pdf/german/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,200 @@ +--- +category: general +date: 2026-03-06 +description: Erfahren Sie, wie Sie eine Signatur in einem PDF mit Aspose PDF in C# + überprüfen. Schritt‑für‑Schritt PDF‑Signaturprüfung, PDF‑Signatur validieren und + kompromittierte Signaturen behandeln. +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: de +og_description: Wie man eine Signatur in einem PDF mit Aspose PDF überprüft. Folgen + Sie dieser Anleitung, um die PDF‑Signaturüberprüfung durchzuführen, die PDF‑Signatur + zu validieren und kompromittierte Signaturen in C# zu erkennen. +og_title: Wie man eine Signatur in PDF mit C# verifiziert – Vollständiger Aspose-Leitfaden +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: Wie man die Signatur in PDF mit C# überprüft – Vollständiger Aspose-Leitfaden +url: /de/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man Signaturen in PDFs mit C# überprüft – vollständiger Aspose-Leitfaden + +Haben Sie sich jemals gefragt, **wie man eine Signatur** in einem PDF überprüft, ohne sich die Haare zu raufen? Sie sind nicht allein. Viele Entwickler stoßen auf ein Problem, wenn sie **pdf signature verification** aus Compliance‑ oder Prüfungsgründen benötigen, und der übliche Ansatz „einfach der Bibliothek vertrauen“ kann nach hinten losgehen. + +In diesem Tutorial führen wir Sie durch eine praktische, End‑to‑End‑Lösung, die nicht nur **validate pdf signature** durchführt, sondern Ihnen auch sagt, ob die Signatur manipuliert wurde. Wir verwenden die **Aspose PDF**‑Bibliothek, was bedeutet, dass der Code auf .NET 6+, .NET Framework 4.6+ und sogar .NET Core funktioniert. Am Ende haben Sie ein sofort ausführbares Snippet, das Sie in jedes C#‑Projekt einbinden können. + +## Was Sie benötigen + +- **Aspose.Pdf** NuGet‑Paket (neueste Version zum Zeitpunkt des Schreibens – 23.12). +- .NET‑Entwicklungsumgebung (Visual Studio, Rider oder VS Code). +- Eine signierte PDF‑Datei (wir nennen sie `Signed.pdf`). +- Grundkenntnisse in C# – nichts Besonderes, nur die üblichen `using`‑Anweisungen und `Console`‑Ein‑/Ausgabe. + +Das ist alles. Keine zusätzlichen Services, keine obskuren Konfigurationsdateien. Bereit? Dann legen wir los. + +![Diagramm zur Signaturüberprüfung](image.png "Signaturüberprüfung") + +## Schritt 1: Projekt für PDF‑Signatur‑Verifizierung einrichten + +Bevor Sie irgendeine Aspose‑API aufrufen können, müssen Sie die Bibliothek referenzieren. Öffnen Sie Ihr Terminal oder die Package Manager Console und führen Sie aus: + +```bash +dotnet add package Aspose.Pdf +``` + +Oder, wenn Sie die UI bevorzugen, suchen Sie im NuGet Package Manager nach **Aspose.Pdf** und installieren Sie es. Dieser Schritt ist entscheidend, weil Sie ohne die **aspose pdf signature**‑Assembly später nicht auf die Klasse `PdfFileSignature` zugreifen können. + +> **Pro‑Tipp:** Ziel‑Framework .NET 6 oder höher wählen, um die beste Performance zu erzielen und Warnungen wegen veralteter Kompatibilität zu vermeiden. + +## Schritt 2: Das PDF‑Dokument laden + +Jetzt, wo das Paket installiert ist, können wir das zu prüfende PDF laden. Die Klasse `Document` repräsentiert die gesamte Datei im Speicher. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**Warum das wichtig ist:** Das Laden des Dokuments gibt uns Zugriff auf seine internen Strukturen, einschließlich der Signaturfelder. Wenn die Datei fehlt oder beschädigt ist, wirft `Document` eine Ausnahme, die Sie abfangen können, um ein benutzerfreundlicheres Erlebnis zu bieten. + +## Schritt 3: Das Aspose PdfFileSignature‑Objekt erstellen + +Mit dem geladenen Dokument ist der nächste Schritt, `PdfFileSignature` zu instanziieren. Diese Fassade‑Klasse weiß, wie man digitale Signaturen, die in PDFs eingebettet sind, liest, verifiziert und manipuliert. + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**Erklärung:** Der Konstruktor `PdfFileSignature` nimmt das geladene `Document`. Intern wird das Signatur‑Dictionary geparst, sodass Methoden wie `VerifySignature` und `IsSignatureCompromised` verfügbar werden. + +## Schritt 4: Die Signatur‑Integrität verifizieren + +Das Herzstück der **pdf signature verification** ist die Methode `VerifySignature`. Sie gibt `true` zurück, wenn der kryptografische Hash mit dem gespeicherten Wert übereinstimmt und die Zertifikatskette vertrauenswürdig ist (vorausgesetzt, Sie haben einen Trust‑Manager eingerichtet, den wir hier aus Gründen der Kürze weglassen). + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +Falls Sie mehrere Signaturen haben, ändern Sie einfach den Index (`0`, `1`, …). Die Methode prüft sowohl Integrität als auch Vertrauen in einem Schritt, weshalb sie in den meisten Szenarien die bevorzugte Wahl ist. + +## Schritt 5: Eine kompromittierte Signatur erkennen + +Selbst eine „gültige“ Signatur kann kompromittiert sein, wenn das Dokument nach der Unterzeichnung verändert wurde. Aspose stellt `IsSignatureCompromised` bereit, um diesen subtilen Fall zu erkennen. + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**Wann Sie das verwenden sollten:** Angenommen, ein PDF ist signiert, dann fügt ein Benutzer einen Kommentar hinzu oder ändert eine Seite. Der Hash wird sich unterscheiden, und `IsSignatureCompromised` gibt `true` zurück, während `VerifySignature` noch `true` sein kann, wenn das Zertifikat selbst in Ordnung ist. Das Prüfen beider Flags liefert ein vollständiges Bild. + +## Schritt 6: Die Ergebnisse interpretieren + +Jetzt haben wir zwei Booleans: `isSignatureValid` und `isSignatureCompromised`. Lassen Sie uns diese in eine benutzerfreundliche Konsolenausgabe umwandeln. + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### Erwartete Ausgabe + +| Szenario | Konsolenausgabe | +|-----------------------------------------------------|--------------------------------| +| Gültig und nicht kompromittiert | `Signature OK` | +| Gültig, aber kompromittiert (Dokument geändert) | `Signature compromised!` | +| Ungültig (Zertifikat nicht vertrauenswürdig, Hash stimmt nicht überein) | `Signature verification failed` | + +Diese Tabelle hilft Ihnen, die booleschen Ergebnisse schnell in menschenlesbare Meldungen zu überführen. + +## Vollständiges funktionsfähiges Beispiel + +Alles zusammengeführt, hier das komplette, sofort ausführbare Programm: + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +Kopieren, einfügen, den `pdfPath` anpassen und ausführen. Wenn alles korrekt eingerichtet ist, sehen Sie eine der drei oben aufgeführten Meldungen. + +## Häufige Stolperfallen und Tipps für die PDF‑Signatur‑Verifizierung + +| Problem | Warum es passiert | Wie zu beheben / vermeiden | +|----------------------------------------------------|--------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Fehlende Aspose-Lizenz** | Die kostenlose Evaluation fügt ein Wasserzeichen hinzu und kann einige API‑Aufrufe einschränken. | Lizenz registrieren (`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`). | +| **Mehrere Signaturen, aber falscher Index** | Möglicherweise prüfen Sie die falsche Signatur, was zu Fehlalarmen führt. | Durchlaufen Sie `signatureVerifier.GetSignatureCount()` und prüfen Sie jede. | +| **Zertifikatskette nicht vertrauenswürdig** | `VerifySignature` schlägt fehl, wenn die Root‑CA nicht im vertrauenswürdigen Speicher ist. | Fügen Sie die signierende CA zum Windows‑Trusted‑Root‑Store hinzu oder konfigurieren Sie einen benutzerdefinierten `CertificateValidator`. | +| **Datei von einem anderen Prozess gesperrt** | Das Öffnen einer PDF, die noch an anderer Stelle geöffnet ist, kann eine `IOException` auslösen. | Verwenden Sie einen `FileStream` mit `FileShare.ReadWrite` oder kopieren Sie die Datei zuerst in eine temporäre Datei. | +| **Falscher PDF-Pfad** | Ein einfacher Tippfehler führt zu `FileNotFoundException`. | Validieren Sie den Pfad mit `File.Exists(pdfPath)` bevor Sie das Dokument laden. | + +### Randfälle, denen Sie begegnen könnten + +- **Detached signatures**: Einige PDFs speichern Signaturen extern. Aspose’s `PdfFileSignature` unterstützt derzeit nur eingebettete Signaturen. +- **Timestamped signatures**: Wenn Sie die Timestamp‑Authority (TSA) verifizieren müssen, müssen Sie `VerifySignature` mit einem benutzerdefinierten `VerificationOptions`‑Objekt aufrufen – außerhalb des Umfangs dieses kurzen Leitfadens, aber für compliance‑intensive Projekte wichtig zu wissen. + +## Nächste Schritte – Ihre Validierungslogik erweitern + +Jetzt, wo Sie die Grundlagen **wie man Signaturen überprüft** beherrschen, könnten Sie Folgendes in Betracht ziehen: + +1. **PDF‑Signatur validieren** gegenüber einer Liste vertrauenswürdiger Zertifikate (z. B. Unternehmens‑PKI). +2. **Signaturdetails exportieren** (Name des Unterzeichners, Signaturzeit, Zertifikats‑Fingerabdruck) mit `GetSignatureInfo`. +3. **Mehrere PDFs stapelweise verarbeiten** in einem Ordner und die Ergebnisse für Auditzwecke in eine CSV protokollieren. + +All diese Erweiterungen bauen direkt auf dem hier vorgestellten Code auf und halten Sie im selben **aspose pdf signature**‑Ökosystem. + +--- + +**Kurz gesagt**, Sie wissen jetzt genau **wie man Signaturen** in einem PDF mit C# und Aspose überprüft, wie Sie eine kompromittierte Signatur erkennen und was zu tun ist, wenn die Verifizierung fehlschlägt. Der Ansatz ist robust, funktioniert mit mehreren Signaturen und lässt sich in größere Dokumenten‑Verarbeitungspipelines integrieren. + +Haben Sie eine Variante dieses Szenarios? Vielleicht müssen Sie PDFs signieren statt sie zu prüfen, oder Sie arbeiten mit verschlüsselten PDFs. Hinterlassen Sie einen Kommentar, und wir erkunden diese Aspekte gemeinsam. Viel Spaß beim Coden! + +{{< /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/programming-with-stamps-and-watermarks/_index.md b/pdf/german/net/programming-with-stamps-and-watermarks/_index.md index 0715daa9b..2b0f9a45f 100644 --- a/pdf/german/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/german/net/programming-with-stamps-and-watermarks/_index.md @@ -38,7 +38,8 @@ Die Tutorials „Programmieren mit Stempeln und Wasserzeichen“ von Aspose.PDF | [Seitenzahlenstempel in der PDF-Datei](./page-number-stamps/) Erfahren Sie in unserer leicht verständlichen Anleitung mit Codebeispiel, wie Sie mit Aspose.PDF für .NET Seitenzahlenstempel zu PDF-Dateien hinzufügen. | | [Tabelle im Kopf-/Fußzeilenbereich](./table-in-header-footer-section/) | Erfahren Sie, wie Sie mit Aspose.PDF für .NET ganz einfach Text zur Fußzeile einer PDF-Datei hinzufügen. Eine Schritt-für-Schritt-Anleitung für eine nahtlose Integration ist enthalten. | | [Text in der Fußzeile einer PDF-Datei](./text-in-footer/) | Erfahren Sie, wie Sie mit Aspose.PDF für .NET Text in die Fußzeile einer PDF-Datei einfügen. | -| [Text im Header der PDF-Datei](./text-in-header/) | Lernen Sie in diesem Schritt-für-Schritt-Tutorial, wie Sie mit Aspose.PDF für .NET Textüberschriften zu PDFs hinzufügen. Optimieren Sie Ihre Dokumente effizient und effektiv. | +| [Text im Header der PDF-Datei](./text-in-header/) | Lernen Sie in diesem Schritt-für-Schritt-Tutorial, wie Sie mit Aspose.PDF für .NET Textüberschriften zu PDFs hinzufügen. Optimieren Sie Ihre Dokumente effizient und effektiv. | +| [PDF-Dokument mit Bates-Nummerierung in C# erstellen – Vollständige Anleitung](./create-pdf-document-with-bates-numbering-in-c-full-guide/) | Erfahren Sie, wie Sie mit Aspose.PDF für .NET ein PDF-Dokument mit Bates-Nummerierung in C# erstellen. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/german/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/german/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..a6ae75a5e --- /dev/null +++ b/pdf/german/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,182 @@ +--- +category: general +date: 2026-03-06 +description: Erstelle ein PDF‑Dokument in C# und füge einfach Bates‑Nummern hinzu. + Lerne, wie du eine leere Seite zum PDF hinzufügst, einen Stempel auf einer Seite + platzierst und die Bates‑Nummerierung implementierst. +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: de +og_description: PDF-Dokument in C# erstellen und Bates-Nummer hinzufügen. Dieser Leitfaden + zeigt, wie man eine leere PDF-Seite hinzufügt, einen Stempel auf der Seite platziert + und Bates-Nummerierung anwendet. +og_title: PDF-Dokument mit Bates-Nummerierung erstellen – C#‑Tutorial +tags: +- Aspose.Pdf +- C# +- PDF automation +title: PDF-Dokument mit Bates-Nummerierung in C# erstellen – Vollständige Anleitung +url: /de/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF-Dokument mit Bates-Nummerierung in C# erstellen + +Haben Sie jemals **ein PDF-Dokument** in C# erstellen müssen und sich gefragt, wie man eine Bates-Nummer hinzufügt, ohne sich die Haare zu raufen? Sie sind nicht allein – Anwaltskanzleien, Gerichte und sogar einige Unternehmens‑Compliance‑Teams stehen täglich vor genau diesem Problem. Die gute Nachricht? Mit ein paar Zeilen Aspose.Pdf‑Code können Sie ein brandneues PDF erzeugen, eine leere Seite hinzufügen und eine korrekte Bates‑Nummer in einem reibungslosen Ablauf stempeln. + +In diesem Tutorial führen wir Sie durch den gesamten Prozess: vom Einrichten des Projekts über das Hinzufügen einer leeren PDF‑Seite bis hin zum Ermitteln, **wie man Bates‑Nummerierung hinzufügt**, und schließlich zum **Platzieren des Stempels auf der Seite** und dem Speichern des Ergebnisses. Am Ende haben Sie ein einsatzbereites Snippet, das Sie in jede .NET‑App einbinden können. Keine vagen Verweise, sondern ein vollständiges, ausführbares Beispiel. + +## Was Sie benötigen + +- **.NET 6+** (oder .NET Framework 4.6+ – Aspose.Pdf funktioniert mit beiden) +- **Aspose.Pdf for .NET** NuGet‑Paket (`Install-Package Aspose.Pdf`) +- Eine brauchbare IDE (Visual Studio, Rider oder VS Code mit C#‑Erweiterung) + +Das war's. Keine zusätzlichen DLLs, keine externen Dienste. Lassen Sie uns eintauchen. + +## Schritt 1: PDF-Dokument erstellen – Erste Einrichtung + +Zuerst benötigen wir ein frisches `Document`‑Objekt. Betrachten Sie es als die leere Leinwand, auf der alles andere platziert wird. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **Warum das wichtig ist:** Die `Document`‑Klasse ist der Einstiegspunkt für jede Aspose‑Operation. Durch die Instanziierung erhalten Sie Zugriff auf die `Pages`‑Sammlung, Metadaten und Sicherheitseinstellungen – alles Bausteine für ein professionelles PDF. + +## Schritt 2: Leere Seite zum PDF hinzufügen + +Ein PDF ohne Seiten ist wie ein Buch ohne Seiten – ziemlich nutzlos. Das Hinzufügen einer leeren Seite ist einfach und liefert uns eine Oberfläche, auf die wir die Bates‑Nummer stempeln können. + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **Profi‑Tipp:** Wenn Sie mehrere Seiten benötigen, rufen Sie einfach `pdfDocument.Pages.Add()` in einer Schleife auf. Jeder Aufruf liefert ein neues `Page`‑Objekt, das Sie unabhängig anpassen können. + +## Schritt 3: Wie man Bates‑Nummerierung hinzufügt – Erstellen des TextStamp + +Jetzt kommt das Kernstück: die **Bates‑Nummer**. In Aspose.Pdf ist sie einfach ein `TextStamp` mit einem speziellen Artifact‑Flag. + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **Warum wir `Artifact` setzen:** Einige PDF‑Reader zeigen Bates‑Nummern als durchsuchbare Metadaten an. Das Markieren des Stempels als `BatesNumbering`‑Artifact stellt sicher, dass nachgelagerte Werkzeuge ihn automatisch erkennen können. + +## Schritt 4: Stempel auf Seite platzieren + +Mit dem fertigen Stempel **platzieren wir den Stempel auf der Seite**. Dies ist der Schritt, in dem die sichtbare Nummer tatsächlich im PDF erscheint. + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **Randfall:** Wenn die Nummer auf jeder Seite inkrementiert werden muss, würden Sie über `pdfDocument.Pages` iterieren und `batesStamp.Value` vor dem Aufruf von `AddStamp` aktualisieren. Das Beispiel hier hält es einfach mit einer statischen „Bates‑001“. + +## Schritt 5: Ergebnis speichern und überprüfen + +Abschließend speichern wir das PDF auf dem Datenträger. Wählen Sie einen Ordner, für den Sie Schreibrechte haben; andernfalls erhalten Sie eine `UnauthorizedAccessException`. + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +Wenn Sie `BatesStamped.pdf` in einem beliebigen Viewer öffnen, sollten Sie ein kleines „Bates‑001“ sauber in der rechten unteren Ecke der leeren Seite sehen. + +> **Erwartete Ausgabe:** +> ![PDF with Bates number stamp](image-placeholder.png "PDF with Bates number stamp") +> *Alt-Text: PDF mit Bates‑Nummer‑Stempel in der rechten unteren Ecke.* + +Wenn die Nummer nicht angezeigt wird, überprüfen Sie die Randwerte und stellen Sie sicher, dass die Seitengröße nicht zu klein ist (Standard‑A4 funktioniert gut). Vergewissern Sie sich außerdem, dass das `Artifact`‑Flag nicht von nachgelagerten Verarbeitungstools entfernt wird. + +## Vollständiges funktionierendes Beispiel + +Unten finden Sie das komplette, sofort kopier‑fertige Programm. Es enthält alle `using`‑Direktiven und Kommentare, damit Sie den Überblick behalten. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +Führen Sie das Programm aus, öffnen Sie das PDF, und Sie sehen die Bates‑Nummer genau dort, wo wir sie platziert haben. 🎉 + +## Häufige Varianten & Stolperfallen + +| Scenario | What to Change | Why | +|----------|----------------|-----| +| **Mehrere Seiten, inkrementierende Nummern** | Schleife über `pdfDocument.Pages`, setze `batesStamp.Value = $"Bates-{i:D3}"` vor `AddStamp` | Gibt jeder Seite einen eindeutigen Bezeichner, typisch für juristische Dossiers | +| **Andere Platzierung (oben‑links)** | Ändere `HorizontalAlignment = HorizontalAlignment.Left` und `VerticalAlignment = VerticalAlignment.Top` | Einige Organisationen bevorzugen die Nummer in der Kopfzeile statt in der Fußzeile | +| **Benutzerdefinierte Schriftart oder Farbe** | Setze `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` | Verbessert die Lesbarkeit oder erfüllt Markenrichtlinien | +| **Ein vorhandenes PDF als Hintergrund hinzufügen** | Lade das Quell‑PDF mit `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` | Nützlich, wenn Sie über ein vorab generiertes Formular stempeln müssen | + +## Fazit + +Wir haben gerade gezeigt, wie man mit Aspose.Pdf für .NET **ein PDF‑Dokument erstellt**, **eine leere PDF‑Seite hinzufügt** und **eine Bates‑Nummer** einfügt, dann **den Stempel auf der Seite platziert** und die Datei speichert. Der Code ist bewusst kompakt, damit Sie ihn an größere Workflows anpassen können – egal, ob Sie Dutzende von Dateien stapeln oder in einen Web‑Service integrieren. + +- Die Inkrement‑Logik für große Akten automatisieren. +- Die PDF‑Erstellung in eine ASP.NET Core‑API einbetten. +- Sicherheit hinzufügen (Passwortschutz) mit `pdfDocument.Encrypt(...)`. + +Fühlen Sie sich frei zu experimentieren, Dinge zu zerlegen und Fragen in den Kommentaren zu stellen. Viel Spaß beim Coden und möge Ihre PDFs immer perfekt gestempelt sein! + +{{< /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/programming-with-tagged-pdf/_index.md b/pdf/german/net/programming-with-tagged-pdf/_index.md index a2331471f..acabd4eb3 100644 --- a/pdf/german/net/programming-with-tagged-pdf/_index.md +++ b/pdf/german/net/programming-with-tagged-pdf/_index.md @@ -45,6 +45,7 @@ Die Tutorials „Programmieren mit getaggten PDFs“ von Aspose.PDF für .NET f | [Textstrukturelemente in der PDF-Datei](./text-structure-elements/) Lernen Sie, Textstrukturelemente in PDFs mit Aspose.PDF für .NET zu bearbeiten. Diese Schritt-für-Schritt-Anleitung behandelt alles, was Sie zum Erstellen strukturierter PDFs benötigen. | | [PDF-Datei validieren](./validate-pdf/) | Erfahren Sie, wie Sie eine PDF-Datei mit Aspose.PDF für .NET validieren. Überprüfen Sie die Konformität mit Standards und erstellen Sie einen Validierungsbericht. | | [Erstellen eines getaggten PDFs in C# – Vollständige Schritt-für-Schritt-Anleitung](./create-tagged-pdf-in-c-complete-step-by-step-guide/) | Erfahren Sie, wie Sie mit Aspose.PDF für .NET ein getaggtes PDF in C# vollständig Schritt für Schritt erstellen. | +| [Erstellen eines getaggten PDFs in C# – Schritt‑für‑Schritt‑Anleitung](./create-tagged-pdf-in-c-step-by-step-guide/) | Erfahren Sie, wie Sie mit Aspose.PDF für .NET ein getaggtes PDF in C# Schritt für Schritt erstellen. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/german/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/german/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..faef9cbc5 --- /dev/null +++ b/pdf/german/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,283 @@ +--- +category: general +date: 2026-03-06 +description: Erstellen Sie ein getaggtes PDF mit Aspose.Pdf in C#. Erfahren Sie, wie + Sie ein Bild zum PDF hinzufügen, die Position der Abbildung festlegen und das PDF + für Barrierefreiheit taggen. +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: de +og_description: Erstellen Sie ein getaggtes PDF mit Aspose.Pdf. Dieser Leitfaden zeigt, + wie man ein Bild zu einem PDF hinzufügt, die Position der Abbildung festlegt und + das PDF für Barrierefreiheit taggt. +og_title: Erstelle ein Tagged PDF in C# – Komplettes Tutorial +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: Erstelle ein getagtes PDF in C# – Schritt‑für‑Schritt‑Anleitung +url: /de/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tagged PDF in C# erstellen – Komplettes Tutorial + +Haben Sie schon einmal **ein tagged PDF** in C# erstellen wollen, wussten aber nicht, wo Sie anfangen sollen? Sie sind nicht allein; Barrierefreiheit ist heutzutage ein Muss, und ein tagged PDF ist das Rückgrat eines konformen Dokuments. In diesem Tutorial gehen wir Schritt für Schritt durch ein Praxisbeispiel, das **ein Bild zum PDF hinzufügt**, die Position der Figur festlegt und **zeigt, wie man ein PDF taggt** mit Aspose.Pdf. Am Ende haben Sie ein vollständig getaggtes PDF, das Sie an jeden weitergeben können. + +Wir decken alles ab – vom Laden einer bestehenden Datei bis zum Speichern der finalen Ausgabe – sodass Sie nicht nach „how to add image“ an anderer Stelle suchen müssen. Kein Schnickschnack – nur eine klare, ausführbare Lösung, die mit Aspose.Pdf 23.8 (der zum Zeitpunkt des Schreibens neuesten Version) funktioniert. Öffnen Sie Ihre IDE und los geht's. + +--- + +## Was Sie benötigen + +- **Aspose.Pdf for .NET** (NuGet‑Paket `Aspose.Pdf`). +- .NET 6+ (oder .NET Framework 4.7.2+). +- Eine Eingabe‑PDF, die bereits eine logische Struktur besitzt (also bereits getaggt ist) – falls nicht, können Sie das Tagging über `pdfDocument.TaggedContent = true` aktivieren. +- Eine Bilddatei (`image.png`), die Sie einbetten möchten. + +Das war’s. Keine zusätzlichen Bibliotheken, keine obskuren Konfigurationsdateien. + +--- + +## Schritt 1: Das vorhandene PDF‑Dokument laden (Basis für Tagged PDF erstellen) + +Als erstes öffnen wir das PDF, das wir erweitern wollen. Das Laden der Datei gibt uns Zugriff auf ihre logische Struktur, was für **create tagged pdf**‑Workflows unerlässlich ist. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*Warum das wichtig ist:* Ohne einen Tag‑Baum vermittelt das PDF keine strukturellen Informationen an Screen‑Reader. Das Aktivieren des Taggings stellt sicher, dass alle neuen Elemente, die wir hinzufügen (wie eine Figur), die richtige Hierarchie erben. + +--- + +## Schritt 2: Auf die Wurzel der logischen Struktur zugreifen (Wie man PDF taggt) + +Jetzt greifen wir auf die logische Struktur des PDFs zu. Das Root‑Element ist der Container für alle Tags – denken Sie an das Inhaltsverzeichnis des Dokuments. + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*Erklärung:* `logicalRoot` ermöglicht es uns, neue Tags wie `
` oder `
` anzuhängen. Das ist das Kernstück von **how to tag PDF** programmgesteuert. + +--- + +## Schritt 3: Einen Figure‑Tag erstellen und seine Position festlegen (Figure‑Position setzen) + +Ein *Figure*‑Tag gruppiert visuelle Inhalte mit einer optionalen Beschriftung. Wir erstellen einen, positionieren ihn und hängen ihn an die Wurzel. + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*Warum wir eine Position setzen:* Der Schritt **set figure position** bestimmt, wo das visuelle Element auf der Seite erscheint. Wenn Sie das überspringen, kann die Figur an einer unerwarteten Stelle landen oder für Hilfstechnologien unsichtbar sein. + +--- + +## Schritt 4: Visuelle Darstellung hinzufügen – Bild einfügen (Bild zum PDF hinzufügen) + +Mit dem Tag an Ort und Stelle benötigen wir nun ein tatsächliches Bild. Das ist der Teil, der **add image to pdf** beantwortet. + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*Wichtiger Hinweis:* Die Rechteck‑Koordinaten müssen mit `figureTag.Position` übereinstimmen, das wir zuvor definiert haben; andernfalls sind Figur und visuelle Inhalte nicht synchron, was die Barrierefreiheit zerstört. + +--- + +## Schritt 5: Das aktualisierte PDF speichern (Tagged PDF fertigstellen) + +Abschließend schreiben wir die Änderungen in eine neue Datei. Das Original unverändert zu lassen, ist eine gute Praxis. + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +In diesem Stadium besitzen Sie eine **create tagged pdf**‑Datei, die ein korrekt positioniertes Bild in einem `
`‑Tag enthält. Öffnen Sie `output.pdf` in Adobe Acrobat und prüfen Sie das *Tags*-Panel – Sie sollten einen `Figure`‑Knoten unter der Wurzel sehen. + +--- + +## Vollständiges, lauffähiges Beispiel + +Unten finden Sie das komplette Programm, das Sie in eine Konsolen‑App kopieren können. Alle Schritte sind bereits in der richtigen Reihenfolge. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### Erwartetes Ergebnis + +- `output.pdf` öffnet sich mit dem Bild bei (100, 150) Punkten, Größe 300 × 200 Punkte. +- Das *Tags*-Fenster zeigt ein `Figure`‑Element, das das Bild umschließt. +- Screen‑Reader geben „Figure“ aus, bevor sie das Bild beschreiben, und erfüllen damit grundlegende Barrierefreiheits‑Standards. + +--- + +## Häufige Fragen & Sonderfälle + +### Was, wenn das Quell‑PDF noch nicht getaggt ist? + +Aspose.Pdf ermöglicht das Einschalten des Taggings über `pdfDocument.TaggedContent.IsTagged = true;`. Die Bibliothek erzeugt dann einen Standard‑Tag‑Baum, nach dem Sie benutzerdefinierte Tags wie gezeigt hinzufügen können. + +### Kann ich der Figur eine Beschriftung hinzufügen? + +Ja. Nachdem Sie `figureTag` erstellt haben, können Sie einen `Paragraph` mit einem `TextFragment` anhängen und dessen `Tag` auf `Caption` setzen. Beispiel: + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### Wie platziere ich die Figur auf einer anderen Seite? + +Ersetzen Sie `var firstPage = pdfDocument.Pages[1];` durch den gewünschten Seitenindex, z. B. `pdfDocument.Pages[3]`. Denken Sie daran, die `Position`‑Koordinaten anzupassen, falls die Seitengröße abweicht. + +### Was, wenn ich mehrere Bilder taggen muss? + +Erstellen Sie für jedes Bild ein neues `Figure`, geben Sie jedem eine eindeutige `Position` und fügen Sie das entsprechende `Image`‑Objekt der passenden Seite hinzu. Eine Schleife über eine Bild‑Kollektion funktioniert hier hervorragend. + +### Funktioniert das mit PDF/A‑Konformität? + +Aspose.Pdf unterstützt PDF/A‑1b, PDF/A‑2b und PDF/A‑3b. Beim Erzeugen eines PDF/A‑Dokuments sollten Sie den Compliance‑Modus vor dem Speichern setzen: + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +Die Tag‑Logik bleibt unverändert. + +--- + +## Pro‑Tipps & Fallstricke + +- **Pro‑Tipp:** Verwenden Sie immer absolute Pfade oder `Path.Combine`, um Laufzeit‑Fehler wegen fehlender Dateien zu vermeiden. +- **Achten Sie auf:** Nicht übereinstimmende Koordinaten zwischen dem `Figure`‑Tag und dem `Image`‑Rechteck – Hilfstechnologien verlassen sich auf diese Ausrichtung. +- **Performance‑Hinweis:** Wenn Sie viele Seiten verarbeiten, packen Sie den Bild‑Stream in einen `using`‑Block, um Ressourcen zeitnah freizugeben. +- **Versions‑Check:** Die gezeigte API funktioniert mit Aspose.Pdf 23.8+. Ältere Versionen können leicht abweichende Klassennamen haben (z. B. `LogicalStructureElement` statt `FigureElement`). + +--- + +## Fazit + +Wir haben gerade **create tagged pdf** von Anfang bis Ende umgesetzt, **add image to pdf** demonstriert und gezeigt, wie man **set figure position** ausführt, während wir **how to tag pdf** und **how to add image** in einem einzigen, zusammenhängenden Beispiel beantwortet haben. Der Code ist sofort ausführbar, die Erklärungen decken das „Warum“ jedes Schrittes ab, und Sie haben nun eine solide Grundlage, um barrierefreie PDFs in C# zu erstellen. + +Bereit für die nächste Herausforderung? Versuchen Sie, Tabellen mit `
`‑Tags hinzuzufügen oder eine PDF/A‑2b‑Compliance‑Schicht für Archivierungszwecke einzubetten. Das gleiche Muster – laden, logische Struktur zugreifen, Tag erstellen, visuelle Inhalte anhängen, speichern – gilt für die meisten PDF‑Barrierefreiheits‑Aufgaben. + +Wenn Sie auf ein Problem stoßen oder einen Anwendungsfall haben, der hier nicht abgedeckt ist, hinterlassen Sie einen Kommentar unten. Viel Spaß beim Taggen und beim Erstellen von PDFs, die jeder lesen kann! + +![Diagramm, das ein PDF mit einem Figure‑Tag und Bild zeigt – veranschaulicht, wie man ein tagged pdf erstellt](placeholder-image.png "create tagged pdf example") + +{{< /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/digital-signatures/_index.md b/pdf/greek/net/digital-signatures/_index.md index d39c2ce0d..3a9caee6b 100644 --- a/pdf/greek/net/digital-signatures/_index.md +++ b/pdf/greek/net/digital-signatures/_index.md @@ -53,6 +53,8 @@ ### [Επαλήθευση υπογραφής PDF σε C# – Πλήρης Οδηγός για την Επικύρωση Ψηφιακής Υπογραφής PDF](./verify-pdf-signature-in-c-complete-guide-to-validate-digital/) Μάθετε πώς να επαληθεύετε υπογραφές PDF σε C# με το Aspose.PDF για .NET. +### [Πώς να διαβάσετε υπογραφές PDF με C# – Οδηγός βήμα προς βήμα](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +Μάθετε πώς να διαβάζετε ψηφιακές υπογραφές από αρχεία PDF χρησιμοποιώντας C# και Aspose.PDF, με αναλυτικά βήματα και παραδείγματα κώδικα. ## Πρόσθετοι Πόροι diff --git a/pdf/greek/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/greek/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..4b3bda9a4 --- /dev/null +++ b/pdf/greek/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-06 +description: Πώς να διαβάσετε τις υπογραφές σε ένα PDF χρησιμοποιώντας C#. Μάθετε + πώς να φορτώνετε ένα PDF έγγραφο με C#, να καταγράφετε τις υπογραφές PDF και να + λαμβάνετε ψηφιακές υπογραφές PDF γρήγορα και αξιόπιστα. +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: el +og_description: Πώς να διαβάσετε υπογραφές σε PDF χρησιμοποιώντας C#. Αυτός ο οδηγός + δείχνει πώς να φορτώσετε ένα έγγραφο PDF με C#, να καταγράψετε τις υπογραφές PDF + και να ανακτήσετε τις ψηφιακές υπογραφές PDF σε λίγα εύκολα βήματα. +og_title: Πώς να διαβάσετε υπογραφές σε PDF με C# – Πλήρης οδηγός +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: Πώς να διαβάζετε υπογραφές σε PDF με C# – Οδηγός βήμα‑προς‑βήμα +url: /el/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να Διαβάσετε Υπογραφές σε PDF με C# – Πλήρης Οδηγός + +Έχετε αναρωτηθεί ποτέ **πώς να διαβάσετε υπογραφές** που είναι ήδη ενσωματωμένες σε ένα αρχείο PDF; Ίσως δημιουργείτε έναν πίνακα συμμόρφωσης, ή απλώς χρειάζεται να ελέγξετε υπογεγραμμένες συμβάσεις πριν τις αποθηκεύσετε στη βάση δεδομένων σας. Το καλό νέο είναι ότι με λίγες γραμμές C# και τη βιβλιοθήκη Aspose.Pdf μπορείτε να εξάγετε τα ονόματα των υπογραφών απευθείας από το αρχείο — χωρίς χειροκίνητη επιθεώρηση. + +Σε αυτό το tutorial θα δούμε πώς να φορτώνουμε ένα έγγραφο PDF σε C#, να απαριθμούμε τις υπογραφές PDF και να λαμβάνουμε πληροφορίες ψηφιακών υπογραφών PDF. Στο τέλος θα έχετε μια έτοιμη για εκτέλεση εφαρμογή console που εκτυπώνει κάθε όνομα υπογραφής που εντοπίζει, καθώς και συμβουλές για την αντιμετώπιση ειδικών περιπτώσεων όπως αρχεία με κωδικό πρόσβασης. + +## Προαπαιτούμενα + +- .NET 6.0 ή νεότερο (ο κώδικας λειτουργεί επίσης με .NET Framework 4.6+) +- Aspose.Pdf for .NET (μπορείτε να αποκτήσετε δωρεάν προσωρινή άδεια από τον ιστότοπο της Aspose) +- Ένα PDF που περιέχει ήδη μία ή περισσότερες ψηφιακές υπογραφές (το δείγμα `MultiSigned.pdf` περιλαμβάνεται στο αποθετήριο) + +> **Pro tip:** Αν χρησιμοποιείτε Visual Studio, ενεργοποιήστε *Nullable Reference Types* για να εντοπίζετε σφάλματα σχετιζόμενα με null νωρίς. + +## Βήμα 1: Φόρτωση του Εγγράφου PDF σε C# + +Το πρώτο που χρειαζόμαστε είναι ένα αντικείμενο `Document` που αντιπροσωπεύει το αρχείο PDF στο δίσκο. Η κλάση `Document` της Aspose.Pdf διαχειρίζεται τα πάντα, από απλή εξαγωγή κειμένου μέχρι πολύπλοκη επεξεργασία φορμών. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**Γιατί είναι σημαντικό:** Η φόρτωση του PDF επικυρώνει ότι το αρχείο υπάρχει και είναι αναγνώσιμο. Αν το αρχείο είναι κατεστραμμένο ή η διαδρομή είναι λανθασμένη, η εφαρμογή τερματίζει νωρίς αντί να αντιμετωπίσει ασαφή σφάλματα αργότερα όταν προσπαθήσει να απαριθμήσει τις υπογραφές. + +## Βήμα 2: Δημιουργία Βοηθού `PdfFileSignature` + +Η Aspose διαχωρίζει τη γενική διαχείριση PDF (`Document`) από τις λειτουργίες που αφορούν υπογραφές (`PdfFileSignature`). Η δημιουργία αυτού του βοηθού μας δίνει πρόσβαση σε μεθόδους όπως η `GetSignatureNames()`. + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**Γιατί είναι σημαντικό:** Η κλάση `PdfFileSignature` γνωρίζει πώς να αναλύει τις καταχωρήσεις λεξικού `/Sig` του PDF, όπου ζουν οι ψηφιακές υπογραφές. Η χρήση της εξασφαλίζει ότι διαβάζουμε τις υπογραφές ακριβώς όπως προστέθηκαν, διατηρώντας τυχόν κρυπτογραφικά μεταδεδομένα. + +## Βήμα 3: Ανάκτηση Όλων των Ονομάτων Υπογραφών + +Τώρα έρχεται το κεντρικό μέρος του **πώς να διαβάσετε υπογραφές**: καλέστε τη `GetSignatureNames()`. Αυτή η μέθοδος επιστρέφει έναν πίνακα συμβολοσειρών που περιέχει τα *ονόματα πεδίων* κάθε υπογραφής. + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**Τι θα δείτε:** Αν το `MultiSigned.pdf` περιέχει τρεις υπογραφές με ονόματα `Signature1`, `Signature2` και `Signature3`, η έξοδος της κονσόλας θα είναι: + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## Βήμα 4: (Προαιρετικό) Επαλήθευση της Εγκυρότητας Κάθε Υπογραφής + +Η ανάγνωση των ονομάτων συχνά αρκεί, αλλά πολλά έργα χρειάζονται επίσης να γνωρίζουν αν κάθε υπογραφή είναι ακόμα έγκυρη. Η Aspose επιτρέπει την επαλήθευση μιας υπογραφής με βάση το όνομα του πεδίου: + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **Edge case:** Αν το PDF είναι προστατευμένο με κωδικό, πρέπει να παρέχετε τον κωδικό πριν καλέσετε το `VerifySignature`. Χρησιμοποιήστε `pdfDocument.Encrypt.Password = "yourPassword";` αμέσως μετά τη φόρτωση του εγγράφου. + +## Πλήρες Παράδειγμα Λειτουργίας + +Παρακάτω βρίσκεται το πλήρες πρόγραμμα που μπορείτε να αντιγράψετε‑επικολλήσετε σε ένα νέο έργο console (`dotnet new console`). Περιλαμβάνει όλα τα βήματα, τον χειρισμό σφαλμάτων και την προαιρετική επαλήθευση. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**Αναμενόμενη έξοδος** (υποθέτοντας τρεις έγκυρες υπογραφές): + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## Διαχείριση Συνηθισμένων Παραλλαγών + +| Κατάσταση | Τι Πρέπει να Αλλάξετε | Γιατί | +|-----------|-----------------------|------| +| **PDF με κωδικό πρόσβασης** | Ορίστε `pdfDocument.Encrypt.Password = "yourPwd";` πριν δημιουργήσετε το `PdfFileSignature`. | Χωρίς τον κωδικό τα λεξικά υπογραφών είναι κρυπτογραφημένα και η `GetSignatureNames()` επιστρέφει κενό πίνακα. | +| **Μεγάλα PDFs ( > 100 MB )** | Χρησιμοποιήστε `pdfSigner.GetSignatureNames(0, 10)` για σελιδοποίηση των αποτελεσμάτων (πρώτη παράμετρος = δείκτης εκκίνησης). | Η φόρτωση ολόκληρης της λίστας υπογραφών μονομιάς μπορεί να καταναλώσει πολύ μνήμη. | +| **Καμία υπογραφή** | Ο κώδικας εκτυπώνει ήδη μια φιλική προειδοποίηση. Σκεφτείτε να το καταγράψετε ως συμβάν ελέγχου. | Βοηθά τις επόμενες διεργασίες να αποφασίσουν αν θα απορρίψουν το αρχείο ή θα ζητήσουν μια υπογεγραμμένη έκδοση. | +| **Προσαρμοσμένα ονόματα πεδίων υπογραφής** | Η μέθοδος επιστρέφει ό,τι όνομα πεδίου χρησιμοποιήθηκε κατά την υπογραφή, π.χ. `EmployeeApproval`. Δεν απαιτείται επιπλέον εργασία. | Σας επιτρέπει να αντιστοιχίσετε τις υπογραφές σε επιχειρησιακούς ρόλους. | + +## Καλές Πρακτικές & Συμβουλές + +- **Απελευθέρωση αντικειμένων**: Το πρότυπο `using var pdfSigner` εγγυάται ότι οι εγγενείς πόροι απελευθερώνονται άμεσα. +- **Άδεια νωρίς**: Καλέστε `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` στην αρχή της `Main` για να αποφύγετε το υδατογράφημα αξιολόγησης. +- **Ασφάλεια νήματος**: Αν επεξεργάζεστε πολλά PDFs παράλληλα, δημιουργήστε ξεχωριστό `PdfFileSignature` ανά νήμα. Η κλάση δεν είναι thread‑safe. +- **Καταγραφή**: Για παραγωγή, αντικαταστήστε το `Console.WriteLine` με έναν δομημένο logger (Serilog, NLog) ώστε να καταγράφετε ακριβώς τα ονόματα υπογραφών για τα αρχεία ελέγχου. +- **Έλεγχος έκδοσης**: Ο κώδικας λειτουργεί με Aspose.Pdf for .NET 23.10 και νεότερες. Παλαιότερες εκδόσεις μπορεί να απαιτούν `PdfSignature` αντί για `PdfFileSignature`. + +## Συμπέρασμα + +Καλύψαμε **πώς να διαβάσετε υπογραφές** από ένα PDF χρησιμοποιώντας C#. Φορτώνοντας το έγγραφο PDF, δημιουργώντας έναν βοηθό `PdfFileSignature` και καλώντας τη `GetSignatureNames()`, μπορείτε να απαριθμήσετε κάθε ψηφιακή υπογραφή που είναι ενσωματωμένη στο αρχείο. Η προαιρετική επαλήθευση προσθέτει ένα επιπλέον επίπεδο εμπιστοσύνης, και ο κώδικας δείγμα δείχνει ακριβώς πώς να το ενσωματώσετε σε μια πραγματική εφαρμογή console. + +Έτοιμοι για το επόμενο βήμα; Δοκιμάστε να το συνδυάσετε με το `DigitalSignatureUtil` της Aspose για εξαγωγή πιστοποιητικών υπογραφής, ή να τροφοδοτήσετε τη λίστα υπογραφών σε έναν πίνακα συμμόρφωσης που σηματοδοτεί μη υπογεγραμμένα συμβόλαια. Οι δυνατότητες είναι απεριόριστες — απλώς θυμηθείτε να **φορτώσετε το PDF με C#**, **απαριθμήσετε τις υπογραφές PDF**, και **λάβετε ψηφιακές υπογραφές PDF** όποτε χρειάζεστε έναν γρήγορο έλεγχο. + +Καλή προγραμματιστική δουλειά, και ας παραμένουν πάντα τα PDFs σας ασφαλώς υπογεγραμμένα! + +{{< /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-conversion/_index.md b/pdf/greek/net/document-conversion/_index.md index 83a706dd9..2f12a58e0 100644 --- a/pdf/greek/net/document-conversion/_index.md +++ b/pdf/greek/net/document-conversion/_index.md @@ -44,8 +44,8 @@ | [PDF σε XLS](./pdf-to-xls/) Μετατρέψτε εύκολα αρχεία PDF σε μορφή XLS χρησιμοποιώντας το Aspose.PDF για .NET. Ακολουθήστε τον αναλυτικό οδηγό μας για απρόσκοπτη εξαγωγή δεδομένων. | | [PDF σε XML](./pdf-to-xml/) | Μάθετε πώς να μετατρέπετε PDF σε XML χρησιμοποιώντας το Aspose.PDF για .NET σε αυτό το ολοκληρωμένο σεμινάριο. Οδηγός βήμα προς βήμα με παραδείγματα κώδικα που περιλαμβάνονται. | | [PDF σε XPS](./pdf-to-xps/) | Μάθετε πώς να μετατρέψετε PDF σε XPS χρησιμοποιώντας το Aspose.PDF για .NET με αυτόν τον οδηγό βήμα προς βήμα. Ιδανικό για προγραμματιστές και λάτρεις της επεξεργασίας εγγράφων. | -| [Υστερόγραφο σε PDF](./postscript-to-pdf/) | Μάθετε πώς να μετατρέπετε αρχεία Postscript σε PDF χρησιμοποιώντας το Aspose.PDF για .NET σε αυτό το βήμα προς βήμα σεμινάριο. Ιδανικό για προγραμματιστές όλων των επιπέδων. | -| [Παροχή διαπιστευτηρίων κατά τη μετατροπή HTML σε PDF](./provide-credentials-during-html-to-pdf/) | Μάθετε πώς να μετατρέπετε HTML σε PDF χρησιμοποιώντας το Aspose.PDF για .NET με αυτόν τον οδηγό βήμα προς βήμα. Ιδανικό για προγραμματιστές που θέλουν να βελτιστοποιήσουν τη δημιουργία εγγράφων. | +| [Υστερόγραφο σε PDF](./postscript-to-pdf/) | Μάθετε πώς να μετατρέψετε αρχεία Postscript σε PDF χρησιμοποιώντας το Aspose.PDF για .NET σε αυτό το βήμα προς βήμα σεμινάριο. Ιδανικό για προγραμματιστές όλων των επιπέδων. | +| [Παροχή διαπιστευτηρίων κατά τη μετατροπή HTML σε PDF](./provide-credentials-during-html-to-pdf/) | Μάθετε πώς να μετατρέψετε HTML σε PDF χρησιμοποιώντας το Aspose.PDF για .NET με αυτόν τον οδηγό βήμα προς βήμα. Ιδανικό για προγραμματιστές που θέλουν να βελτιστοποιήσουν τη δημιουργία εγγράφων. | | [Αφαίρεση υπερσυνδέσμων μετά τη μετατροπή από Html](./remove-hyperlinks-after-converting-from-html/) Μάθετε πώς να αφαιρείτε υπερσυνδέσμους από έγγραφα HTML μετά τη μετατροπή σε PDF χρησιμοποιώντας το Aspose.PDF για .NET σε αυτόν τον οδηγό βήμα προς βήμα. | | [Αντικατάσταση γραμματοσειρών που λείπουν](./replace-missing-fonts/) | Μάθετε πώς να αντικαθιστάτε γραμματοσειρές που λείπουν σε έγγραφα PDF χρησιμοποιώντας το Aspose.PDF για .NET με αυτόν τον οδηγό βήμα προς βήμα. | | [Ορισμός προεπιλεγμένου ονόματος γραμματοσειράς](./set-default-font-name/) | Μάθετε πώς να ορίσετε ένα προεπιλεγμένο όνομα γραμματοσειράς κατά την απόδοση PDF σε εικόνες χρησιμοποιώντας το Aspose.PDF για .NET. Αυτός ο οδηγός καλύπτει τις προϋποθέσεις, τις οδηγίες βήμα προς βήμα και τις συχνές ερωτήσεις. | @@ -53,11 +53,12 @@ | [TeX σε PDF](./tex-to-pdf/) | Μάθετε πώς να μετατρέψετε TeX σε PDF χρησιμοποιώντας το Aspose.PDF για .NET με αυτόν τον λεπτομερή οδηγό βήμα προς βήμα. Ιδανικό για προγραμματιστές και επαγγελματίες εγγράφων. | | [Κείμενο σε PDF](./text-to-pdf/) Μάθετε πώς να μετατρέψετε αρχεία κειμένου σε PDF χρησιμοποιώντας το Aspose.PDF για .NET σε αυτόν τον αναλυτικό οδηγό. Ιδανικό για προγραμματιστές που θέλουν να βελτιώσουν τις εφαρμογές τους. | | [Βελτίωση απόδοσης TIFF σε PDF](./tiff-to-pdf-performance-improvement/) | Μετατρέψτε αποτελεσματικά εικόνες TIFF σε PDF χρησιμοποιώντας το Aspose.PDF για .NET. Μάθετε βήμα προς βήμα με συμβουλές βελτιστοποίησης απόδοσης για να χειρίζεστε ομαλά μεγάλα αρχεία εικόνας. | -| [Ιστοσελίδα σε PDF](./web-page-to-pdf/) | Μάθετε πώς να μετατρέπετε ιστοσελίδες σε PDF χρησιμοποιώντας το Aspose.PDF για .NET σε αυτό το λεπτομερές, βήμα προς βήμα σεμινάριο. | +| [Ιστοσελίδα σε PDF](./web-page-to-pdf/) | Μάθετε πώς να μετατρέψετε ιστοσελίδες σε PDF χρησιμοποιώντας το Aspose.PDF για .NET σε αυτό το λεπτομερές, βήμα προς βήμα σεμινάριο. | | [XML σε PDF](./xml-to-pdf/) | Μάθετε πώς να μετατρέψετε XML σε PDF χρησιμοποιώντας το Aspose.PDF για .NET σε αυτό το ολοκληρωμένο βήμα προς βήμα σεμινάριο, με παραδείγματα κώδικα και λεπτομερείς εξηγήσεις. | | [Ορισμός διαδρομής εικόνας από XML σε PDF](./xml-to-pdfset-image-path/) | Μάθετε πώς να μετατρέπετε εύκολα XML σε PDF χρησιμοποιώντας το Aspose.PDF για .NET. Αυτός ο λεπτομερής οδηγός σας καθοδηγεί βήμα προς βήμα στη διαδικασία, από την εγκατάσταση έως την ολοκλήρωσή της. | -| [XPS σε PDF](./xps-to-pdf/) Μάθετε πώς να μετατρέπετε αρχεία XPS σε PDF χρησιμοποιώντας το Aspose.PDF για .NET με αυτό το βήμα προς βήμα εκπαιδευτικό βίντεο. Ιδανικό για προγραμματιστές και λάτρους των εγγράφων. | -| [Μετατροπή PDF σε PDF/X‑4 σε C# – Βήμα‑βήμα Εκπαιδευτικό Σεμινάριο ASP.NET PDF](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | Μάθετε πώς να μετατρέψετε αρχεία PDF σε PDF/X‑4 χρησιμοποιώντας το Aspose.PDF για .NET σε αυτόν τον αναλυτικό οδηγό βήμα‑βήμα. | +| [XPS σε PDF](./xps-to-pdf/) Μάθετε πώς να μετατρέψετε αρχεία XPS σε PDF χρησιμοποιώντας το Aspose.PDF για .NET με αυτό το βήμα προς βήμα εκπαιδευτικό βίντεο. Ιδανικό για προγραμματιστές και λάτρους των εγγράφων. | +| [Μετατροπή PDF σε PDF/X‑4 σε C# – Βήμα‑βήμα Εκπαιδευτικό Σεμινάριο ASP.NET PDF](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | Μάθετε πώς να μετατρέψετε αρχεία PDF σε PDF/X‑4 χρησιμοποιώντας το Aspose.PDF για .NET σε αυτόν τον αναλυτικό οδηγό βήμα‑βήμα. | +| [Aspose PDF Tutorial: Μετατροπή PDF σε PDF/X‑4 με C#](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) | Μάθετε πώς να μετατρέψετε PDF σε PDF/X‑4 με C# χρησιμοποιώντας το Aspose.PDF για .NET σε αυτόν τον βήμα‑βήμα οδηγό. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/greek/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/greek/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..7ecf30b33 --- /dev/null +++ b/pdf/greek/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-03-06 +description: Το σεμινάριο Aspose PDF δείχνει πώς να χρησιμοποιήσετε το Aspose για + να φορτώσετε ένα έγγραφο PDF σε C#, να μετατρέψετε το PDF σε PDF/X‑4 και να αποθηκεύσετε + το μετατρεπόμενο PDF αποδοτικά. +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: el +og_description: Το σεμινάριο Aspose PDF εξηγεί πώς να φορτώσετε ένα έγγραφο PDF σε + C#, να το μετατρέψετε σε μορφή PDF/X‑4 και να αποθηκεύσετε το μετατρεπόμενο PDF + με σαφή παραδείγματα κώδικα. +og_title: 'Οδηγός Aspose PDF: Μετατροπή PDF σε PDF/X‑4 με C#' +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: 'Οδηγός Aspose PDF: Μετατροπή PDF σε PDF/X‑4 σε C#' +url: /el/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Εκμάθηση Aspose PDF: Μετατροπή PDF σε PDF/X‑4 με C# + +Σας έχει αναρωτήσει ποτέ πώς να χρησιμοποιήσετε το Aspose για να μετατρέψετε ένα κανονικό PDF σε αρχείο PDF/X‑4 χωρίς κόπο; Δεν είστε μόνοι—οι προγραμματιστές συχνά χρειάζονται έναν αξιόπιστο τρόπο να **load PDF document C#**‑style, να το μετατρέψουν και στη συνέχεια να **save the converted PDF** για επόμενες εργασίες. Σε αυτόν τον οδηγό, θα περάσουμε από ένα πλήρες, εκτελέσιμο παράδειγμα που κάνει ακριβώς αυτό, χρησιμοποιώντας το τελευταίο Aspose.Pdf για .NET. + +Θα καλύψουμε τα πάντα, από την εγκατάσταση της βιβλιοθήκης, τη φόρτωση ενός πηγαίου PDF, τη μετατροπή του στο πρότυπο PDF/X‑4, και τέλος την αποθήκευση του αποτελέσματος στο δίσκο. Στο τέλος θα έχετε μια σταθερή κατανόηση του **how to use Aspose** για αυτό το κοινό σενάριο μετατροπής, καθώς και συμβουλές για τη διαχείριση ειδικών περιπτώσεων. + +## Προαπαιτήσεις + +- .NET 6.0 ή νεότερο (ο κώδικας λειτουργεί και σε .NET Framework, αλλά συνιστάται .NET 6+). +- Ένα έγκυρο αρχείο άδειας Aspose.Pdf for .NET (ή μπορείτε να τρέξετε σε λειτουργία αξιολόγησης για γρήγορο τεστ). +- Visual Studio 2022 ή οποιοδήποτε IDE συμβατό με C#. +- Ένα αρχείο PDF εισόδου που βρίσκεται στο `YOUR_DIRECTORY/input.pdf`. + +Δεν απαιτούνται επιπλέον πακέτα NuGet πέρα από το `Aspose.Pdf`. + +## Εγκατάσταση Aspose.Pdf μέσω NuGet + +Ανοίξτε το τερματικό σας ή το Package Manager Console και εκτελέστε: + +```bash +dotnet add package Aspose.Pdf +``` + +Αυτό θα κατεβάσει την πιο πρόσφατη σταθερή έκδοση (ως Μάρτιο 2026, έκδοση 23.12). Αν προτιμάτε το UI, αναζητήστε το *Aspose.Pdf* στο NuGet Package Manager και εγκαταστήστε το. + +## Βήμα 1: Φόρτωση εγγράφου PDF σε C# με Aspose + +Το πρώτο που πρέπει να κάνετε είναι να φορτώσετε το πηγαίο PDF στη μνήμη. Η κλάση `Document` του Aspose είναι το σημείο εισόδου. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**Γιατί είναι σημαντικό:** Η φόρτωση του αρχείου επαληθεύει ότι η διαδρομή υπάρχει και ότι το PDF δεν είναι κατεστραμμένο. Το μπλοκ `try/catch` σας παρέχει έναν ευγενικό τρόπο εμφάνισης σφαλμάτων—χρήσιμο όταν το αρχείο προέρχεται από μεταφορτώσεις χρηστών. + +## Βήμα 2: Μετατροπή PDF σε μορφή PDF/X‑4 + +Το PDF/X‑4 είναι ένα υποσύνολο του PDF σχεδιασμένο για αξιόπιστη εκτύπωση και αρχειοθέτηση. Η μετατροπή εξασφαλίζει ότι όλες οι γραμματοσειρές είναι ενσωματωμένες και ότι το αρχείο συμμορφώνεται με τα βιομηχανικά πρότυπα. + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**Γιατί να επιλέξετε `ConvertErrorAction.Delete`;** Ορισμένα παλιά PDFs περιέχουν στοιχεία (όπως μη υποστηριζόμενες σημειώσεις) που διαφορετικά θα σταματούσαν τη μετατροπή. Η διαγραφή τους διατηρεί τη διαδικασία ομαλή, αλλά θα πρέπει να ελέγξετε το αποτέλεσμα αν χρειάζεστε αυτά τα στοιχεία διατηρημένα. + +### Προαιρετικό: Επαλήθευση επιτυχίας μετατροπής + +Αν θέλετε να είστε απόλυτα σίγουροι, μπορείτε να ελέγξετε το `PdfFormat` του εγγράφου μετά τη μετατροπή: + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## Βήμα 3: Αποθήκευση του μετατρεπόμενου αρχείου PDF + +Τώρα που το έγγραφο είναι σε μορφή PDF/X‑4, γράψτε το ξανά στο δίσκο. + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**Αποτέλεσμα που θα δείτε:** Ένα νέο αρχείο με όνομα `Converted_PDFX4.pdf` εμφανίζεται στο `YOUR_DIRECTORY`. Ανοίξτε το με οποιονδήποτε προβολέα PDF που υποστηρίζει PDF/X‑4 (Adobe Acrobat, Foxit, κλπ.) και θα παρατηρήσετε ότι όλες οι γραμματοσειρές είναι ενσωματωμένες και το έγγραφο συμμορφώνεται με το πρότυπο PDF/X‑4. + +![εκμάθηση aspose pdf - μετατροπή PDF σε PDF/X‑4](/images/aspose-pdf-conversion.png "εκμάθηση aspose pdf που δείχνει το αποτέλεσμα της μετατροπής PDF/X‑4") + +*Το κείμενο alt της εικόνας περιλαμβάνει τη βασική λέξη-κλειδί, ικανοποιώντας τις απαιτήσεις SEO.* + +## Πλήρες παράδειγμα από την αρχή μέχρι το τέλος + +Συνδυάζοντας όλα τα παραπάνω, εδώ είναι μια αυτόνομη εφαρμογή κονσόλας που μπορείτε να αντιγράψετε‑επικολλήσετε σε ένα νέο έργο C#: + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +Εκτελέστε το πρόγραμμα και θα δείτε μηνύματα κονσόλας που επιβεβαιώνουν κάθε βήμα. Αν κάτι πάει στραβά, τα μηνύματα σφάλματος θα σας κατευθύνουν στο ακριβές στάδιο. + +## Συχνές ερωτήσεις & ειδικές περιπτώσεις + +### Τι γίνεται αν χρειάζεται να διατηρήσω τις σημειώσεις; + +`ConvertErrorAction.Delete` αφαιρεί μη υποστηριζόμενα αντικείμενα, συμπεριλαμβανομένων ορισμένων σημειώσεων. Αλλάξτε σε `ConvertErrorAction.Keep` αν η διατήρησή τους είναι κρίσιμη, αλλά δοκιμάστε το αποτέλεσμα—ορισμένες σημειώσεις μπορεί ακόμη να προκαλούν προειδοποιήσεις συμμόρφωσης. + +### Πώς να διαχειριστώ μεγάλα PDFs (εκατοντάδες MB); + +Το Aspose.Pdf κάνει streaming του αρχείου, έτσι η χρήση μνήμης παραμένει μέτρια. Ωστόσο, ίσως θελήσετε να αυξήσετε τα όρια του `System.GC` ή να επεξεργαστείτε το έγγραφο σε τμήματα (π.χ., μετατροπή σελίδα‑με‑σελίδα) για εξαιρετικά μεγάλα αρχεία. + +### Μπορώ να μετατρέψω πολλά αρχεία σε batch; + +Απολύτως. Τυλίξτε τη λογική φόρτωσης‑μετατροπής‑αποθήκευσης μέσα σε έναν βρόχο `foreach` που διατρέχει έναν φάκελο με PDFs. Θυμηθείτε να διαχειρίζεστε τις εξαιρέσεις ανά αρχείο ώστε ένα κακό PDF να μην διακόπτει όλη τη δέσμη. + +### Λειτουργεί αυτό σε .NET Core σε Linux; + +Ναι. Το Aspose.Pdf είναι δια-πλατφόρμα. Απλώς βεβαιωθείτε ότι το πακέτο NuGet `Aspose.Pdf` είναι αναφορά και ότι έχετε εγκατεστημένα τα κατάλληλα αρχεία γραμματοσειρών στον Linux host αν χρειάζεστε απόδοση κειμένου. + +## Επαγγελματικές συμβουλές από το πεδίο + +- **Ορίστε άδεια νωρίς**: `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` – αυτό αφαιρεί το υδατογράφημα αξιολόγησης και βελτιώνει την απόδοση. +- **Επικυρώστε το αποτέλεσμα**: Χρησιμοποιήστε το `PdfFormatValidator` του Aspose για να επιβεβαιώσετε προγραμματιστικά τη συμμόρφωση PDF/X‑4 πριν τη διανομή του αρχείου. +- **Καταγράψτε τον χρόνο μετατροπής**: Οι μεγάλες δέσμες ωφελούνται από τη μέτρηση του χρόνου κάθε μετατροπής (`Stopwatch`) για να εντοπίσετε υποχωρήσεις στην απόδοση. +- **Αποφύγετε τις σκληρά κωδικοποιημένες διαδρομές**: Προτιμήστε αρχεία ρυθμίσεων ή μεταβλητές περιβάλλοντος για `inputPath` και `outputPath`—κάνει την εφαρμογή φορητή. + +## Συμπέρασμα + +Σε αυτό το **Aspose PDF Tutorial** παρουσιάσαμε μια καθαρή, ολοκληρωμένη ροή εργασίας για **how to use Aspose** ώστε να **load PDF document C#**, να το μετατρέψετε στο πρότυπο **PDF/X‑4** και να **save the converted PDF**. Το απόσπασμα είναι πλήρως εκτελέσιμο, εξηγεί το *γιατί* πίσω από κάθε βήμα και επισημαίνει πιθανά προβλήματα που μπορεί να συναντήσετε σε πραγματικά έργα. + +Τώρα που έχετε κατανοήσει τα βασικά, μπορείτε να επεκτείνετε τη λύση—να επεξεργαστείτε δεκάδες αρχεία σε batch, να ενσωματώσετε προσαρμοσμένα μεταδεδομένα ή να ενσωματώσετε τη μετατροπή σε ένα web API. Οι δυνατότητες είναι ανοιχτές, και το Aspose.Pdf σας παρέχει τα εργαλεία για να το πετύχετε γρήγορα. + +Έχετε περισσότερες ερωτήσεις σχετικά με την επεξεργασία PDF με το Aspose; Αφήστε ένα σχόλιο, εξερευνήστε την επίσημη τεκμηρίωση του Aspose ή πειραματιστείτε με τον κώδικα παραπάνω. Καλή μετατροπή! + +{{< /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-creation/_index.md b/pdf/greek/net/document-creation/_index.md index 046debf4c..da92c892a 100644 --- a/pdf/greek/net/document-creation/_index.md +++ b/pdf/greek/net/document-creation/_index.md @@ -77,6 +77,12 @@ ### [Δημιουργία εγγράφου PDF με Aspose.PDF – Προσθήκη σελίδας, σχήματος & αποθήκευση](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) Μάθετε πώς να δημιουργήσετε ένα έγγραφο PDF, να προσθέσετε σελίδα, σχήμα και να το αποθηκεύσετε χρησιμοποιώντας το Aspose.PDF. +### [Δημιουργία εγγράφου PDF με Aspose.PDF – Οδηγός βήμα προς βήμα](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +Μάθετε πώς να δημιουργήσετε ένα έγγραφο PDF από την αρχή με το Aspose.PDF, ακολουθώντας έναν πλήρη οδηγό βήμα‑βήμα. + +### [Δημιουργία εγγράφου PDF με Aspose.PDF – Πλήρης οδηγός C#](./create-pdf-document-with-aspose-pdf-full-c-guide/) +Μάθετε πώς να δημιουργήσετε πλήρες έγγραφο PDF σε C# χρησιμοποιώντας το Aspose.PDF, με βήμα‑βήμα παραδείγματα κώδικα. + ## Πρόσθετοι Πόροι - [Aspose.PDF για τεκμηρίωση δικτύου](https://docs.aspose.com/pdf/net/) diff --git a/pdf/greek/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/greek/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..ca8e680f0 --- /dev/null +++ b/pdf/greek/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,237 @@ +--- +category: general +date: 2026-03-06 +description: Δημιουργήστε έγγραφο PDF σε C# χρησιμοποιώντας το Aspose.PDF – μάθετε + πώς να προσθέτετε κενές σελίδες PDF, πλαίσιο κειμένου, widget και να αποθηκεύετε + το PDF γρήγορα. +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: el +og_description: Δημιουργήστε έγγραφο PDF σε C# με το Aspose.PDF. Αυτός ο οδηγός δείχνει + πώς να προσθέσετε κενές σελίδες PDF, πλαίσιο κειμένου, widget και πώς να αποθηκεύσετε + το PDF. +og_title: Δημιουργία εγγράφου PDF με το Aspose.PDF – Πλήρες σεμινάριο C# +tags: +- pdf +- csharp +- aspose +- forms +title: Δημιουργία εγγράφου PDF με το Aspose.PDF – Πλήρης οδηγός C# +url: /el/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Δημιουργία εγγράφου PDF με Aspose.PDF – Πλήρης Οδηγός C# + +Ever needed to **create pdf document** from scratch in a .NET project and wondered where to start? You're not alone; many developers hit the same wall when the first requirement reads “generate a fillable PDF with the same textbox on three pages.” The good news? With Aspose.PDF you can spin up a professional‑looking PDF in just a handful of lines. + +Σε αυτό το tutorial θα περάσουμε από όλη τη διαδικασία: από την αρχικοποίηση ενός νέου PDF, **προσθήκη κενών σελίδων pdf**, εισαγωγή ενός **textbox**, αντιγραφή του με **widget** annotations, και τέλος **αποθήκευση του PDF** στο δίσκο. Στο τέλος θα έχετε ένα έτοιμο προς χρήση αρχείο με όνομα *MultiWidgetField.pdf* και μια σαφή κατανόηση του γιατί κάθε βήμα είναι σημαντικό. + +## Τι καλύπτει αυτός ο οδηγός + +- Προαπαιτούμενα που χρειάζεστε πριν γράψετε μια γραμμή κώδικα. +- Δημιουργία PDF βήμα‑βήμα χρησιμοποιώντας το Aspose.PDF για .NET. +- Πώς να προσθέσετε κενές σελίδες, ένα πεδίο κειμένου (textbox) φόρμας και πρόσθετες εμφανίσεις widget. +- Συμβουλές για την αντιμετώπιση κοινών παγίδων (π.χ., ευρετήριο σελίδων, συγκρούσεις ονομάτων πεδίων). +- Ένα πλήρες πρόγραμμα C# έτοιμο για αντιγραφή‑επικόλληση που μπορείτε να εκτελέσετε σήμερα. + +Καμία εξωτερική σύνδεση τεκμηρίωσης, χωρίς συντομεύσεις «δείτε τα API docs» — όλα όσα χρειάζεστε είναι εδώ. + +## Προαπαιτούμενα + +Πριν ξεκινήσετε, βεβαιωθείτε ότι έχετε: + +1. **.NET 6.0** (ή οποιαδήποτε μεταγενέστερη έκδοση) εγκατεστημένη στο σύστημά σας. +2. Μια ενεργή άδεια **Aspose.PDF for .NET** ή ένα προσωρινό κλειδί αξιολόγησης. +3. Ένα περιβάλλον ανάπτυξης όπως το **Visual Studio 2022** ή το **VS Code** με την επέκταση C#. + +Αυτό είναι—δεν απαιτείται τίποτα άλλο. + +## Βήμα 1: Αρχικοποίηση του εγγράφου PDF και προσθήκη κενών σελίδων + +Το πρώτο πράγμα που κάνετε όταν **δημιουργείτε έγγραφο pdf** προγραμματιστικά είναι να δημιουργήσετε ένα αντικείμενο `Document`. Σκεφτείτε το σαν το άνοιγμα ενός ολοκαίνουργιου σημειωματάριου. Στη συνέχεια προσθέτετε τις σελίδες που χρειάζεστε· στην περίπτωσή μας τρεις κενές σελίδες. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**Γιατί είναι σημαντικό:** Το Aspose.PDF αντιμετωπίζει τις σελίδες ως συλλογή μηδενικής βάσης εσωτερικά, αλλά το δημόσιο API του είναι βάσει 1, έτσι το `Pages[1]` είναι η πρώτη σελίδα που μόλις προσθέσατε. Η προσθήκη σελίδων εκ των προτέρων σας παρέχει έναν καμβά για την τοποθέτηση πεδίων φόρμας αργότερα, και είναι πολύ πιο οικονομική από το να εισάγετε σελίδες εν κινήσει μετά την ανάπτυξη του εγγράφου. + +> **Συμβουλή:** Αν χρειάζεστε μόνο μία σελίδα, μπορείτε να παραλείψετε το βρόχο και να καλέσετε `pdfDocument.Pages.Add()` μία φορά. Η προσθήκη πολλαπλών σελίδων σε βρόχο διατηρεί τον κώδικα επεκτάσιμο. + +## Βήμα 2: Ορισμός πεδίου TextBox φόρμας στην πρώτη σελίδα + +Τώρα που έχουμε τρία κενά φύλλα, ας τοποθετήσουμε ένα **textbox** στην πρώτη. Ένα `TextBoxField` είναι ένα στοιχείο φόρμας όπου οι τελικοί χρήστες μπορούν να πληκτρολογήσουν όταν το PDF ανοίγει στο Acrobat Reader ή σε οποιονδήποτε προβολέα PDF που υποστηρίζει φόρμες. + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**Γιατί οι συντεταγμένες του ορθογωνίου;** Το Aspose.PDF χρησιμοποιεί μονάδες point (1/72 ίντσας). Το ορθογώνιο `(100, 700, 300, 730)` τοποθετεί το textbox περίπου στη μέση της σελίδας, 200 pt πλάτος και 30 pt ύψος. Προσαρμόστε αυτούς τους αριθμούς ώστε να ταιριάζουν στο σχέδιό σας. + +> **Συχνή ερώτηση:** *Πρέπει να ορίσω την ιδιότητα `Value`;* +> Όχι, είναι προαιρετικό. Αν την αφήσετε κενή εμφανίζεται ένα κενό πεδίο· ορίζοντας μια προεπιλογή μπορεί να καθοδηγήσει τον χρήστη. + +## Βήμα 3: Προσθήκη αναφορών Widget για το ίδιο πεδίο στις σελίδες 2 και 3 + +Ένα **widget** είναι η οπτική αναπαράσταση ενός πεδίου φόρμας σε συγκεκριμένη σελίδα. Από προεπιλογή, ένα πεδίο εμφανίζεται μόνο στη σελίδα όπου δημιουργήθηκε. Για να επαναχρησιμοποιήσετε το ίδιο textbox σε άλλες σελίδες, προσθέτετε επιπλέον αντικείμενα `WidgetAnnotation` στη συλλογή `Widgets` του πεδίου. + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**Γιατί widgets;** Χωρίς αυτά, ο χρήστης θα έβλεπε το textbox μόνο στη σελίδα 1, παρόλο που το υποκείμενο πεδίο υπάρχει. Τα widgets σας επιτρέπουν να μοιράζεστε ένα ενιαίο λογικό πεδίο σε πολλές σελίδες, εξασφαλίζοντας ότι το κείμενο που εισάγεται εμφανίζεται παντού όπου το πεδίο εμφανίζεται. + +> **Ακραία περίπτωση:** Αν χρειάζεστε το textbox σε διαφορετικές συντεταγμένες σε κάθε σελίδα, απλώς αλλάξτε τις τιμές `Rectangle` για κάθε widget. + +## Βήμα 4: Καταχώρηση του πεδίου στη συλλογή Form του εγγράφου + +Το Aspose.PDF διατηρεί ένα κεντρικό μητρώο όλων των πεδίων φόρμας. Η προσθήκη του πεδίου στη συλλογή `Form` το ενσωματώνει στη διαδραστική δομή φόρμας του PDF. + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +Το δεύτερο όρισμα (`"Comment"`) είναι το **πλήρες όνομα** του πεδίου. Πρέπει να είναι μοναδικό σε όλο το έγγραφο· διαφορετικά το Aspose θα ρίξει εξαίρεση. + +## Βήμα 5: Αποθήκευση του παραγόμενου PDF – Πώς να αποθηκεύσετε PDF + +Τέλος, αποθηκεύουμε το έγγραφο στη μνήμη στο δίσκο. Αυτό είναι το τμήμα **πώς να αποθηκεύσετε pdf** του tutorial. + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**Γιατί να καθορίσετε απόλυτη διαδρομή;** Η χρήση απόλυτης διαδρομής αποφεύγει σύγχυση σχετικά με τον τρέχοντα φάκελο εργασίας, ειδικά όταν τρέχετε το πρόγραμμα από το debugger του Visual Studio. Αν προτιμάτε σχετική διαδρομή, βεβαιωθείτε ότι ο φάκελος υπάρχει πριν καλέσετε `Save`. + +### Αναμενόμενο Αποτέλεσμα + +Ανοίξτε το *MultiWidgetField.pdf* στο Adobe Acrobat Reader. Θα δείτε το ίδιο textbox στις σελίδες 1, 2 και 3. Πληκτρολογήστε κάτι στο πεδίο σε οποιαδήποτε σελίδα—το κείμενο εμφανίζεται αμέσως και στις άλλες σελίδες επειδή μοιράζονται το ίδιο υποκείμενο πεδίο φόρμας. + +![Παράδειγμα δημιουργίας εγγράφου PDF που εμφανίζει ένα textbox σε τρεις σελίδες](https://example.com/placeholder-image.png "Παράδειγμα δημιουργίας εγγράφου PDF") + +*Κείμενο alt εικόνας: Παράδειγμα δημιουργίας εγγράφου PDF που εμφανίζει ένα textbox σε τρεις σελίδες.* + +## Πλήρες, Έτοιμο‑για‑Εκτέλεση Παράδειγμα + +Παρακάτω βρίσκεται το πλήρες πρόγραμμα που μπορείτε να αντιγράψετε σε ένα νέο έργο κονσόλας (`dotnet new console`) και να εκτελέσετε. Όλα τα βήματα είναι ήδη σε σειρά, και ο κώδικας περιλαμβάνει σχόλια για σαφήνεια. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +Εκτελέστε το πρόγραμμα, μεταβείτε στο `C:\Temp\`, και ανοίξτε το παραγόμενο PDF. Θα δείτε τα τρία πανομοιότυπα textboxes έτοιμα για εισαγωγή από τον χρήστη. + +## Συνηθισμένες Παραλλαγές & Ακραίες Περιπτώσεις + +| Σενάριο | Τι να αλλάξετε | Γιατί | +|----------|----------------|-----| +| **Διαφορετικό μέγεθος textbox σε κάθε σελίδα** | Ρυθμίστε τις τιμές `Rectangle` για κάθε `WidgetAnnotation`. | Σας επιτρέπει να προσαρμόσετε το πεδίο σε διαφορετικές διατάξεις. | +| **Πεδίο μόνο για ανάγνωση** | Ορίστε `commentField.ReadOnly = true;`. | Αποτρέπει τους χρήστες από την επεξεργασία του περιεχομένου μετά την αρχική συμπλήρωση. | +| **Πολυγραμμικό textbox** | Ορίστε `commentField.Multiline = true;` και αυξήστε το ύψος του rectangle. | Επιτρέπει μεγαλύτερα σχόλια χωρίς κύλιση. | +| **Προσθήκη δεύτερου πεδίου** | Δημιουργήστε ένα άλλο `TextBoxField` (ή οποιοδήποτε `FormField`) και επαναλάβετε τα βήματα 2‑4 με νέο όνομα. | Μπορείτε να συλλέξετε πολλαπλές πληροφορίες στο ίδιο PDF. | + +## Επαγγελματικές Συμβουλές & Παγίδες προς Αποφυγή + +- **Αρίθμηση Σελίδων:** Θυμηθείτε ότι το `pdfDocument.Pages[1]` είναι η πρώτη σελίδα, όχι το `[0]`. Ο συνδυασμός δεικτών 0‑βάσης και 1‑βάσης οδηγεί σε εξαιρέσεις «Index out of range». +- **Συγκρούσεις Ονομάτων Πεδίων:** Δύο πεδία δεν μπορούν να μοιράζονται το ίδιο πλήρες όνομα. Αν λάβετε σφάλμα για διπλότυπα ονόματα, ελέγξτε ξανά τη συμβολοσειρά που περνάτε στο `Form.Add`. +- **Άδεια vs. Αξιολόγηση:** Η έκδοση αξιολόγησης προσθέτει υδατογράφημα σε κάθε σελίδα. Αναπτύξτε μια έγκυρη άδεια για να το αφαιρέσετε στην παραγωγή. +- **Απόδοση:** Η προσθήκη εκατοντάδων σελίδων σε βρόχο είναι εντάξει, αλλά αν χρειάζεστε τη δημιουργία τεράστιων PDF (χιλιάδες σελίδες), σκεφτείτε τη χρήση + +{{< /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-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/greek/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..12f3036cb --- /dev/null +++ b/pdf/greek/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-03-06 +description: Δημιουργήστε έγγραφο PDF χρησιμοποιώντας το Aspose.PDF σε C#. Μάθετε + πώς να προσθέσετε σελίδα PDF, να σχεδιάσετε ορθογώνιο PDF, να προσθέσετε σχήμα PDF + και να ελέγξετε το πάχος του περιγράμματος του ορθογωνίου—όλα σε ένα σεμινάριο. +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: el +og_description: Δημιουργήστε έγγραφο PDF σε C# με το Aspose.PDF. Αυτό το σεμινάριο + δείχνει πώς να προσθέσετε σελίδα PDF, να σχεδιάσετε ορθογώνιο PDF, να προσθέσετε + σχήμα PDF και να ορίσετε το πάχος του περιγράμματος του ορθογωνίου. +og_title: Δημιουργία εγγράφου PDF με το Aspose.PDF – Πλήρης οδηγός +tags: +- Aspose.PDF +- C# +- PDF generation +title: Δημιουργία εγγράφου PDF με το Aspose.PDF – Οδηγός βήμα‑προς‑βήμα +url: /el/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Δημιουργία Εγγράφου PDF με Aspose.PDF – Οδηγός Βήμα‑Βήμα + +Έχετε ποτέ χρειαστεί να **δημιουργήσετε έγγραφο PDF** προγραμματιστικά και δεν ήξερες από πού να ξεκινήσεις; Δεν είστε μόνοι—πολλοί προγραμματιστές αντιμετωπίζουν το ίδιο πρόβλημα όταν οι εφαρμογές τους πρέπει να εκτυπώνουν τιμολόγια, αναφορές ή πιστοποιητικά άμεσα. + +Τα καλά νέα είναι ότι με το Aspose.PDF for .NET μπορείτε να το κάνετε με λίγες γραμμές κώδικα, και θα μάθετε επίσης πώς να **προσθέσετε σελίδα PDF**, **σχεδιάσετε ορθογώνιο PDF**, **προσθέσετε σχήμα PDF**, και να ρυθμίσετε το **πάχος του περιγράμματος του ορθογωνίου** ενώ το κάνετε. Ας βουτήξουμε. + +## Τι Θα Δημιουργήσετε + +Στο τέλος αυτού του οδηγού θα έχετε μια πλήρως λειτουργική εφαρμογή κονσόλας C# που: + +1. **Δημιουργεί ένα έγγραφο PDF** από το μηδέν. +2. **Προσθέτει μια σελίδα PDF** στο έγγραφο. +3. **Σχεδιάζει ένα ορθογώνιο PDF** σε αυτή τη σελίδα. +4. **Επικυρώνει** ότι το ορθογώνιο παραμένει εντός των ορίων της σελίδας (**add shape PDF** βήμα). +5. Ορίζει ένα προσαρμοσμένο **πάχος περιγράμματος ορθογωνίου**. +6. Αποθηκεύει το αποτέλεσμα ως `ShapeValidated.pdf`. + +### Προαπαιτούμενα + +- .NET 6.0 ή νεότερο (ο κώδικας λειτουργεί επίσης με .NET Framework 4.6+). +- Μια αναφορά στο πακέτο NuGet `Aspose.Pdf`. Μπορείτε να το προσθέσετε μέσω: + +```bash +dotnet add package Aspose.Pdf +``` + +- Ένας επεξεργαστής κειμένου ή IDE—Visual Studio, VS Code, Rider, ό,τι προτιμάτε. + +> **Συμβουλή:** Αν εργάζεστε σε εταιρικό υπολογιστή, βεβαιωθείτε ότι η πηγή NuGet δεν είναι μπλοκαρισμένη· διαφορετικά θα λάβετε σφάλμα «Package not found». + +--- + +## Δημιουργία Εγγράφου PDF – Αρχικοποίηση του Εγγράφου + +Το πρώτο βήμα είναι να δημιουργήσετε ένα αντικείμενο `Document`. Σκεφτείτε το ως το κενό καμβά στο οποίο θα ζήσουν όλες οι σελίδες και τα σχήματα. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +Γιατί χρειαζόμαστε αυτό το αντικείμενο; Αντιπροσωπεύει ολόκληρο το αρχείο PDF στη μνήμη, δίνοντάς μας πρόσβαση στη συλλογή `Pages`, στα μεταδεδομένα και στις ρυθμίσεις ασφαλείας. Μόλις έχετε το έγγραφο, μπορείτε να αρχίσετε να προσθέτετε σελίδες, κείμενο, εικόνες και διανυσματικά γραφικά. + +--- + +## Προσθήκη Σελίδας στο PDF (add page pdf) + +Ένα PDF χωρίς σελίδες είναι ουσιαστικά ένα κενό αρχείο—άσκοπο. Η προσθήκη σελίδας είναι απλή, και μπορείτε να προσαρμόσετε το μέγεθός της αν θέλετε. Εδώ χρησιμοποιούμε το προεπιλεγμένο μέγεθος A4. + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +Η μέθοδος `Add()` επιστρέφει ένα νέο αντικείμενο `Page` που είναι ήδη μέρος της συλλογής `Pages`, ώστε να μπορείτε αμέσως να αρχίσετε να σχεδιάζετε πάνω του. Σε πραγματικές περιπτώσεις μπορεί να επαναλάβετε τη διαδικασία για ένα σύνολο δεδομένων και να προσθέσετε δεκάδες σελίδες· η ίδια κλήση μιας γραμμής λειτουργεί για κάθε επανάληψη. + +--- + +## Σχεδίαση Ορθογωνίου Σχήματος (draw rectangle pdf) + +Τώρα το οπτικό μέρος: ένα ορθογώνιο με ορατό περίγραμμα. Εδώ έρχεται σε δράση το **draw rectangle pdf**. + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +Μερικά σημεία που πρέπει να σημειώσετε: + +- `Rect` χρησιμοποιεί μονάδες point (1 pt ≈ 1/72 inch). Οι συντεταγμένες ορίζουν την κάτω‑αριστερή και την πάνω‑δεξιά γωνία, ώστε να μπορείτε να ελέγχετε ακριβώς το πλάτος και το ύψος. +- `BorderInfo` σας επιτρέπει να καθορίσετε ποιες πλευρές θα έχουν γραμμή και πόσο παχύ είναι το σχήμα. Εδώ εφαρμόζουμε μια γραμμή 2 point σε **όλες** τις πλευρές, δίνοντας στο ορθογώνιο μια καθαρή, ομοιόμορφη εμφάνιση. + +--- + +## Επικύρωση Τοποθέτησης Σχήματος (add shape pdf) + +Πριν προσθέσουμε το ορθογώνιο στη σελίδα, είναι σοφό να επαληθεύσουμε ότι χωράει στην εκτυπώσιμη περιοχή της σελίδας. Το Aspose.PDF παρέχει μια χρήσιμη βοηθητική μέθοδο γι' αυτό. + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +Γιατί να ασχοληθούμε; Αν τοποθετήσετε κατά λάθος ένα σχήμα μερικώς εκτός οθόνης, ο προβολέας PDF μπορεί να το κόψει, προκαλώντας σύγχυση στον χρήστη. Αυτή η ρήτρα προστασίας **add shape pdf** εξασφαλίζει ότι προσθέτετε μόνο περιεχόμενο που θα είναι πλήρως ορατό. + +--- + +## Αποθήκευση του PDF (add page pdf) + +Τέλος, αποθηκεύουμε το έγγραφο που βρίσκεται στη μνήμη στον δίσκο. Μπορείτε να επιλέξετε οποιαδήποτε τοποθεσία για την οποία έχετε δικαίωμα εγγραφής. + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +Μετά την εκτέλεση του προγράμματος, ανοίξτε το `ShapeValidated.pdf`—θα πρέπει να δείτε μια μόνο σελίδα με ένα καλοσχεδιασμένο ορθογώνιο με περίγραμμα, κεντραρισμένο περίπου στη μέση. + +--- + +## Αναμενόμενο Αποτέλεσμα + +Όταν ανοίξετε το παραγόμενο PDF, θα δείτε: + +- Μία σελίδα μεγέθους A4. +- Ένα ορθογώνιο του οποίου η κάτω‑αριστερή γωνία ξεκινά στο (50 pt, 50 pt) και η πάνω‑δεξιά γωνία τελειώνει στο (600 pt, 800 pt). +- Ένα **περίγραμμα πάχους 2 point** που περιβάλλει το ορθογώνιο. + +Αν η κονσόλα εκτύπωσε «PDF created successfully!», ξέρετε ότι ο κώδικας εκτελέστηκε χωρίς προβλήματα στον έλεγχο ορίων. + +![Διάγραμμα που δείχνει πώς να δημιουργήσετε έγγραφο PDF με Aspose.PDF](https://example.com/diagram-create-pdf.png "Δημιουργία Εγγράφου PDF – οπτική επισκόπηση") + +*Το κείμενο alt της εικόνας περιλαμβάνει τη βασική λέξη-κλειδί για να ικανοποιήσει τις απαιτήσεις SEO.* + +--- + +## Συχνές Ερωτήσεις & Ακραίες Περιπτώσεις + +### Τι γίνεται αν χρειάζομαι διαφορετικό μέγεθος σελίδας; + +Αντικαταστήστε τη προεπιλεγμένη σελίδα με προσαρμοσμένο μέγεθος: + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### Πώς αλλάζω το χρώμα του περιγράμματος; + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### Μπορώ να προσθέσω πολλαπλά σχήματα στην ίδια σελίδα; + +Απολύτως. Απλώς επαναλάβετε το μπλοκ **add shape pdf** με νέο `RectangleShape` (ή άλλες υποκλάσεις του `Shape`) και προσαρμόστε τις συντεταγμένες `Rect` ανάλογα. + +### Τι γίνεται αν το ορθογώνιο υπερβαίνει τα όρια της σελίδας; + +Η κλήση `IsShapeWithinBounds` θα επιστρέψει `false`. Σε κώδικα παραγωγής ίσως θέλετε να αλλάξετε αυτόματα το μέγεθος του σχήματος: + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +--- + +## Ανακεφαλαίωση + +Διασχίσαμε ολόκληρο τον κύκλο ζωής της **δημιουργίας εγγράφου PDF** με το Aspose.PDF: + +1. Αρχικοποιήστε το `Document`. +2. **Προσθέστε σελίδα PDF** χρησιμοποιώντας `Pages.Add()`. +3. **Σχεδιάστε ορθογώνιο PDF** μέσω `RectangleShape`. +4. **Προσθέστε σχήμα PDF** μόνο αφού επιβεβαιώσετε ότι παραμένει εντός της σελίδας. +5. Ελέγξτε το **πάχος περιγράμματος ορθογωνίου** με `BorderInfo`. +6. Αποθηκεύστε το αρχείο. + +Αυτή είναι η πλήρης ροή εργασίας σε λιγότερες από 60 γραμμές κώδικα. + +--- + +## Τι Ακολουθεί; + +- **Προσθήκη κειμένου**: Χρησιμοποιήστε το `TextFragment` για να τοποθετήσετε τίτλους ή ετικέτες μέσα στο ορθογώνιο. +- **Εισαγωγή εικόνων**: Η κλάση `Image` σας επιτρέπει να ενσωματώσετε λογότυπα ή διαγράμματα. +- **Δημιουργία πινάκων**: Ιδανικό για τιμολόγια ή αναφορές δεδομένων. +- **Εφαρμογή ασφαλείας**: Προστασία κωδικού πρόσβασης του PDF εάν περιέχει ευαίσθητα δεδομένα. + +Κάθε ένα από αυτά τα θέματα βασίζεται στα θεμέλια που καλύφθηκαν εδώ, οπότε είστε καλά προετοιμασμένοι να εξερευνήσετε πιο προχωρημένα σενάρια δημιουργίας PDF. + +--- + +### Συνεχίστε να Πειραματίζεστε + +Μην σταματήσετε σε ένα μόνο ορθογώνιο—πειραματιστείτε με διαφορετικά σχήματα, χρώματα και στυλ γραμμών. Το API του Aspose.PDF είναι πλούσιο, και όσο περισσότερο πειραματίζεστε, τόσο πιο άνετοι θα γίνετε. Αν αντιμετωπίσετε πρόβλημα, η επίσημη τεκμηρίωση του Aspose είναι ένας αξιόπιστος σύντροφος, αλλά θυμηθείτε ότι ο κώδικας που βλέπετε παραπάνω είναι μια πλήρης, έτοιμη για αντιγραφή‑και‑επικόλληση λύση που μπορείτε να τρέξετε σήμερα. + +Καλό κώδικα, και εύχομαι τα PDF σας να αποδίδουν πάντα ακριβώς όπως τα φανταστήκατε! + +{{< /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 00e2be81e..1a155f2f2 100644 --- a/pdf/greek/net/document-manipulation/_index.md +++ b/pdf/greek/net/document-manipulation/_index.md @@ -140,7 +140,7 @@ ### [Πώς να συνενώσετε PDF με το Aspose.PDF για .NET: Ένας πλήρης οδηγός](./concatenate-pdfs-aspose-pdf-dotnet-guide/) Μάθετε πώς να συγχωνεύετε πολλά αρχεία PDF χρησιμοποιώντας το Aspose.PDF για .NET. Αυτός ο ολοκληρωμένος οδηγός καλύπτει την εγκατάσταση, την υλοποίηση και τις πρακτικές εφαρμογές. -### [Πώς να συνενώσετε PDF με κενές σελίδες χρησιμοποιώντας το Aspose.PDF για .NET: Ένας πλήρης οδηγός](./concatenate-pdfs-blank-pages-aspose-pdf-net/) +### [Πώς να συνενώσετε 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/) @@ -188,6 +188,9 @@ ### [Πώς να αφαιρέσετε όλο το κείμενο από PDF χρησιμοποιώντας το Aspose.PDF .NET για χειρισμό εγγράφων](./remove-text-aspose-pdf-net-tutorial/) Μάθετε πώς να αφαιρείτε αποτελεσματικά όλο το κείμενο από ένα PDF χρησιμοποιώντας το Aspose.PDF .NET. Ιδανικό για την προστασία ευαίσθητων δεδομένων ή την αποσυμφόρηση εγγράφων. +### [Πώς να αφαιρέσετε ευαίσθητες πληροφορίες από PDF σε C# με το Aspose PDF – Πλήρης οδηγός](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) +Μάθετε πώς να αφαιρείτε ευαίσθητες πληροφορίες από αρχεία PDF χρησιμοποιώντας το Aspose PDF σε C# με βήμα‑βήμα οδηγίες. + ### [Πώς να καταργήσετε ενέργειες ανοίγματος PDF χρησιμοποιώντας το Aspose.PDF για .NET: Ένας πλήρης οδηγός](./remove-pdf-open-action-aspose-dotnet-guide/) Μάθετε πώς να εξαλείψετε τις ανεπιθύμητες ενέργειες ανοίγματος από αρχεία PDF χρησιμοποιώντας το Aspose.PDF για .NET. Αυτός ο οδηγός παρέχει οδηγίες βήμα προς βήμα και βέλτιστες πρακτικές. @@ -195,7 +198,7 @@ Μάθετε πώς να διαχωρίζετε αποτελεσματικά σελίδες PDF σε μεμονωμένα αρχεία χρησιμοποιώντας το Aspose.PDF για .NET με αυτόν τον ολοκληρωμένο οδηγό. Βελτιώστε τις δεξιότητές σας στον χειρισμό εγγράφων σήμερα. ### [Πώς να διαχωρίσετε σελίδες PDF χρησιμοποιώντας το Aspose.PDF για .NET: Ένας πλήρης οδηγός](./split-pdf-pages-aspose-pdf-net/) -Μάθετε πώς να διαχωρίζετε συγκεκριμένες σελίδες από ένα PDF σε ξεχωριστά αρχεία χρησιμοποιώντας το Aspose.PDF για .NET. Αυτός ο οδηγός καλύπτει τον χειρισμό και τη ρύθμιση ροής. +Μάθετε πώς να διαχωρίζετε σελίδες PDF χρησιμοποιώντας το Aspose.PDF για .NET με αυτόν τον ολοκληρωμένο οδηγό. Κατακτήστε τον χειρισμό εγγράφων σε C# και βελτιστοποιήστε τη ροή εργασίας σας. ### [Πώς να διαχωρίσετε σελίδες PDF χρησιμοποιώντας το Aspose.PDF για .NET: Οδηγός βήμα προς βήμα](./split-pdf-pages-aspose-pdf-net-guide/) Μάθετε πώς να διαχωρίζετε σελίδες PDF χρησιμοποιώντας το Aspose.PDF για .NET με αυτόν τον ολοκληρωμένο οδηγό. Κατακτήστε τον χειρισμό εγγράφων σε C# και βελτιστοποιήστε τη ροή εργασίας σας. diff --git a/pdf/greek/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/greek/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..a87dcbea6 --- /dev/null +++ b/pdf/greek/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,251 @@ +--- +category: general +date: 2026-03-06 +description: Μάθετε πώς να επεξεργάζεστε (redact) PDF χρησιμοποιώντας το Aspose PDF + σε C#. Αυτός ο οδηγός βήμα‑βήμα δείχνει πώς να φορτώσετε ένα έγγραφο PDF σε C#, + να αποκτήσετε πρόσβαση στην πρώτη σελίδα του PDF και να αφαιρέσετε εικόνα από το + PDF. +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: el +og_description: Πώς να διαγράψετε γρήγορα PDF με το Aspose PDF σε C#. Φορτώστε το + έγγραφο PDF, αποκτήστε πρόσβαση στην πρώτη σελίδα PDF και αφαιρέστε την εικόνα από + το PDF με λίγες μόνο γραμμές κώδικα. +og_title: Πώς να αποκρύψετε PDF σε C# – Εγχειρίδιο Aspose PDF +tags: +- Aspose PDF +- C# +- PDF Redaction +title: Πώς να αποκρύψετε PDF σε C# με το Aspose PDF – Πλήρης Οδηγός +url: /el/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να διαγράψετε PDF σε C# με Aspose PDF – Πλήρης Οδηγός + +Έχετε αναρωτηθεί ποτέ **πώς να διαγράψετε PDF** αρχεία χωρίς καν να ιδρώσετε; Ίσως σας έχουν δώσει ένα συμβόλαιο που κρύβει ένα εμπιστευτικό λογότυπο, ή μια αναφορά που εμφανίζει ακόμη μια εικόνα placeholder που πρέπει να διαγράψετε. Σε αυτές τις στιγμές θα θέλετε έναν αξιόπιστο, προγραμματιζόμενο τρόπο να αφαιρέσετε αυτό το περιεχόμενο — χωρίς χειροκίνητη μαγεία του Acrobat. + +Σε αυτό το tutorial θα περάσουμε βήμα‑βήμα από μια σύντομη, ολοκληρωμένη λύση που **φορτώνει PDF έγγραφο C#**, **προσπελάζει την πρώτη σελίδα PDF**, και στη συνέχεια **αφαιρεί εικόνα από PDF** χρησιμοποιώντας τη δυναμική βιβλιοθήκη **Aspose PDF**. Στο τέλος θα έχετε ένα πλήρως διαγραμμένο PDF έτοιμο για διανομή, και θα καταλάβετε γιατί κάθε γραμμή κώδικα έχει σημασία. + +> **Pro tip:** Το Aspose PDF λειτουργεί με .NET Framework 4.6+ και .NET Core 3.1+, οπότε καλύπτεται είτε εργάζεστε σε Windows, Linux ή macOS. + +--- + +![how to redact pdf example](redact-pdf-before-after.png){alt="παράδειγμα διαγραφής pdf"} + +## Τι Θα Χρειαστείτε + +- **Aspose.PDF for .NET** (τελευταίο πακέτο NuGet) +- Ένα **περιβάλλον ανάπτυξης C#** (Visual Studio, Rider ή VS Code) +- Ένα δείγμα PDF που περιέχει έναν πόρο εικόνας που θέλετε να διαγράψετε (θα το ονομάσουμε `Sensitive.pdf`) + +Καμία πρόσθετη τρίτη‑πλευρά εργαλεία, χωρίς OCR, μόνο καθαρός κώδικας. + +--- + +## Βήμα 1: Φόρτωση PDF Εγγράφου C# – Η Πρώτη Κίνηση + +Πριν μπορέσετε να διαγράψετε οτιδήποτε, πρέπει να φέρετε το αρχείο στη μνήμη. Η κλάση `Document` είναι το σημείο εισόδου για κάθε λειτουργία του Aspose PDF. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**Γιατί είναι σημαντικό:** +`Document` αναλύει ολόκληρη τη δομή του PDF, δημιουργώντας ένα μοντέλο αντικειμένων που σας επιτρέπει να χειρίζεστε σελίδες, πόρους και σημειώσεις. Αν το αρχείο δεν μπορεί να φορτωθεί (λάθος διαδρομή, κατεστραμμένο PDF), θα ριχτεί εξαίρεση αμέσως — ώστε να γνωρίζετε νωρίς ότι κάτι δεν πάει καλά. + +### Συνηθισμένο Παράπτωμα + +> *«Λαμβάνω `FileNotFoundException` παρόλο που το αρχείο υπάρχει.»* +> Βεβαιωθείτε ότι η διαδρομή είναι απόλυτη ή ότι ο τρέχων φάκελος του έργου σας ταιριάζει με τη θέση του `Sensitive.pdf`. Η χρήση του `Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")` μπορεί να βοηθήσει στην αποφυγή προβλημάτων σχετικών διαδρομών. + +--- + +## Βήμα 2: Πρόσβαση στην Πρώτη Σελίδα PDF – Όπου Βρίσκεται η Εικόνα + +Οι εικόνες αποθηκεύονται ως πόροι ανά σελίδα. Σε πολλά απλά PDFs η πρώτη σελίδα είναι η ένοχο, οπότε ας την πάρουμε. + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**Γιατί είναι σημαντικό:** +Το Aspose PDF χρησιμοποιεί δείκτη 1‑βάσης για τις σελίδες, κάτι που είναι λίγο ασυνήθιστο σε σύγκριση με τις περισσότερες συλλογές .NET. Η πρόσβαση στη λάθος σελίδα μπορεί να σημαίνει ότι διαγράφετε το λάθος περιεχόμενο — ή, χειρότερα, αφήνετε την ευαίσθητη εικόνα αμετάβλητη. + +### Σκέψη για Ακραίες Περιπτώσεις + +Αν το έγγραφό σας δεν έχει σελίδες (ένα κενό PDF), η προσπάθεια `pdfDocument.Pages[1]` θα ριχτεί `IndexOutOfRangeException`. Μια γρήγορη προστασία μπορεί να σας σώσει: + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +--- + +## Βήμα 3: Αφαίρεση Εικόνας από PDF – Διαγραφή του Πόρου + +Το Aspose PDF σας επιτρέπει να διαγράψετε έναν πόρο με όνομα. Οι περισσότερες εικόνες ονομάζονται `Im1`, `Im2`, κ.λπ., αλλά μπορείτε να ελέγξετε το `firstPage.Resources.Images` για επιβεβαίωση. + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**Γιατί είναι σημαντικό:** +`RedactResource` αφαιρεί την εικόνα *και* οποιεσδήποτε αναφορές σε αυτήν στη σελίδα, εξασφαλίζοντας ότι το κενό που μένει γεμίζει με κενό χώρο αντί για σπασμένο σύνδεσμο. Είναι ένας καθαρός, πρότυπος τρόπος PDF για διαγραφή περιεχομένου. + +### Πώς να Βρείτε το Σωστό Όνομα Εικόνας + +Αν δεν είστε σίγουροι αν η εικόνα ονομάζεται `"Im1"`: + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +Τρέξτε αυτό το απόσπασμα, ελέγξτε την έξοδο της κονσόλας, και αντικαταστήστε το `"Im1"` με το πραγματικό κλειδί που θα δείτε. + +--- + +## Βήμα 4: Αποθήκευση του Διαγραμμένου PDF – Ολοκλήρωση + +Τώρα που η ανεπιθύμητη εικόνα έχει αφαιρεθεί, γράψτε τις αλλαγές πίσω στο δίσκο. + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**Γιατί είναι σημαντικό:** +Η αποθήκευση σε **νέο** αρχείο διατηρεί το αρχικό ανέγγιχτο — ένα δίχτυ ασφαλείας σε περίπτωση που χρειαστεί να επανέλθετε. Αν πρέπει να αντικαταστήσετε, απλώς δείξτε τη μέθοδο `Save` στη αρχική διαδρομή, αλλά να γνωρίζετε ότι η ενέργεια είναι μη αναστρέψιμη. + +### Επαλήθευση του Αποτελέσματος + +Ανοίξτε το `Redacted.pdf` σε οποιονδήποτε προβολέα PDF. Το σημείο της εικόνας θα πρέπει να εμφανίζεται κενό, και το υπόλοιπο του εγγράφου να φαίνεται πανομοιότυπο με το αρχικό. Αν η διάταξη της σελίδας φαίνεται μετατοπισμένη, ελέγξτε ξανά ότι αφαιρέσατε μόνο τον προοριζόμενο πόρο και όχι ένα κοινόχρηστο XObject. + +--- + +## Πλήρες Παράδειγμα Εργασίας + +Συνδυάζοντας τα παραπάνω, εδώ είναι το ολοκληρωμένο, έτοιμο‑για‑εκτέλεση πρόγραμμα: + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**Αναμενόμενη έξοδος** (στην κονσόλα): + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +Όταν ανοίξετε το `Redacted.pdf`, η εικόνα που ήταν `Im1` θα λείπει, αφήνοντας μια καθαρή σελίδα. + +--- + +## Συχνές Ερωτήσεις + +### Λειτουργεί αυτό με κρυπτογραφημένα PDFs; + +Αν το πηγαίο PDF είναι προστατευμένο με κωδικό, περάστε τον κωδικό στον κατασκευαστή `Document`: + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### Τι γίνεται αν η εικόνα εμφανίζεται σε πολλαπλές σελίδες; + +Κάντε βρόχο σε κάθε σελίδα και καλέστε `RedactResource` με το ίδιο όνομα εικόνας (ή ανακαλύψτε το όνομα ανά σελίδα). Παράδειγμα: + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### Μπορώ να διαγράψω κείμενο με τον ίδιο τρόπο; + +Ναι — χρησιμοποιήστε `page.Contents.RedactText("confidential")` ή αξιοποιήστε την κλάση `Redactor` για πιο προχωρημένα μοτίβα. Αυτό είναι ένα ολόκληρο tutorial από μόνο του, αλλά η αρχή είναι η ίδια με αυτή που ακολουθήσαμε για τις εικόνες. + +--- + +## Συμπερασματικά – Τι Καταφέραμε + +Απαντήσαμε στο **πώς να διαγράψετε PDF** αρχεία προγραμματιστικά με: + +1. **Φόρτωση PDF εγγράφου C#** με Aspose PDF. +2. **Πρόσβαση στην πρώτη σελίδα PDF** για εντοπισμό του στόχου. +3. **Αφαίρεση εικόνας από PDF** μέσω `RedactResource`. +4. **Αποθήκευση** της καθαρής έκδοσης με ασφάλεια. + +Αυτή η προσέγγιση είναι γρήγορη, επαναλαμβανόμενη και λειτουργεί σε batch εργασίες — ιδανική για αγωγούς συμμόρφωσης ή αυτοματοποιημένη δημιουργία αναφορών. + +Αν θέλετε να προχωρήσετε παραπέρα, εξετάστε: + +- **Batch redaction** σε ολόκληρο φάκελο PDF. +- **Διαγραφή κειμένου** με regex μοτίβα χρησιμοποιώντας το `Redactor`. +- **Ενσωμάτωση υδατογραφήματος** μετά τη διαγραφή για ένδειξη «καθαρισμένο». + +Δοκιμάστε το, προσαρμόστε τη λογική ονομασίας εικόνας στα δικά σας αρχεία, + +{{< /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/performance-optimization/_index.md b/pdf/greek/net/performance-optimization/_index.md index 50a3252b2..777181fa1 100644 --- a/pdf/greek/net/performance-optimization/_index.md +++ b/pdf/greek/net/performance-optimization/_index.md @@ -48,7 +48,8 @@ Κατακτήστε την τέχνη της μετατροπής αρχείων SVG σε PDF με ακρίβεια και αποτελεσματικότητα χρησιμοποιώντας το Aspose.PDF για .NET. Μάθετε τεχνικές εγκατάστασης, ρύθμισης και βελτιστοποίησης σε αυτόν τον ολοκληρωμένο οδηγό. ### [Αφαίρεση ενσωματωμένων γραμματοσειρών σε PDF χρησιμοποιώντας το Aspose.PDF για .NET: Μειώστε το μέγεθος αρχείου και βελτιώστε την απόδοση](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) -Μάθετε πώς να καταργείτε την ενσωμάτωση γραμματοσειρών από τα αρχεία PDF σας χρησιμοποιώντας το Aspose.PDF για .NET. Βελτιστοποιήστε την απόδοση PDF, μειώστε το μέγεθος του αρχείου και βελτιώστε τους χρόνους φόρτωσης με αυτόν τον οδηγό βήμα προς βήμα. + +### [Πώς να συμπιέσετε PDF με το Aspose.PDF – γρήγορος οδηγός](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) ## Πρόσθετοι Πόροι diff --git a/pdf/greek/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/greek/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..5c303fbbe --- /dev/null +++ b/pdf/greek/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,203 @@ +--- +category: general +date: 2026-03-06 +description: Μάθετε πώς να συμπιέζετε PDF άμεσα χρησιμοποιώντας το Aspose.Pdf. Αυτός + ο οδηγός δείχνει πώς να μειώσετε το μέγεθος του αρχείου PDF με συμπίεση PDF χωρίς + απώλειες. +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: el +og_description: Πώς να συμπιέσετε ένα PDF χρησιμοποιώντας το Aspose.Pdf; Ακολουθήστε + αυτό το βήμα‑βήμα οδηγό για να μειώσετε το μέγεθος του αρχείου PDF, να επιτύχετε + συμπίεση PDF χωρίς απώλειες και να αποθηκεύσετε βελτιστοποιημένα αρχεία PDF. +og_title: πώς να συμπιέσετε PDF με το Aspose.Pdf – γρήγορος οδηγός +tags: +- pdf +- aspnet +- csharp +title: πώς να συμπιέσετε PDF με το Aspose.Pdf – γρήγορος οδηγός +url: /el/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# πώς να συμπιέσετε pdf με Aspose.Pdf – γρήγορος οδηγός + +Έχετε αναρωτηθεί ποτέ **πώς να συμπιέσετε pdf** αρχεία χωρίς να τα μετατρέψετε σε θολό μπερδέμα; Δεν είστε μόνοι. Οι περισσότεροι προγραμματιστές συναντούν εμπόδιο όταν πρέπει να **μειώσουν το μέγεθος του pdf αρχείου** για συνημμένα email, ανεβάσματα στο web ή περιορισμούς αποθήκευσης, ενώ φοβούνται την απώλεια ποιότητας εικόνας. + +Σε αυτό το tutorial θα περάσουμε από ένα πλήρες, έτοιμο‑για‑εκτέλεση παράδειγμα που δείχνει ακριβώς **πώς να συμπιέσετε pdf** χρησιμοποιώντας τον ενσωματωμένο βελτιστοποιητή του Aspose.Pdf. Στο τέλος θα ξέρετε πώς να **σμικρύνετε το μέγεθος του pdf αρχείου**, να διατηρήσετε τις εικόνες σας καθαρές με **συμπίεση pdf χωρίς απώλειες**, και τελικά να **αποθηκεύσετε βελτιστοποιημένα pdf** αρχεία που λειτουργούν άψογα με οποιονδήποτε προβολέα. + +## Τι θα μάθετε + +- Φορτώστε ένα βαρύ PDF (π.χ., ένα γεμάτο εικόνες υψηλής ανάλυσης) στη μνήμη. +- Εφαρμόστε τον βελτιστοποιητή του Aspose.Pdf με τις προεπιλεγμένες ρυθμίσεις χωρίς απώλειες. +- Αποθηκεύστε το αποτέλεσμα ως νέο, μικρότερο αρχείο. +- Συμβουλές για προσαρμογή της συμπίεσης αν χρειάζεστε πιο σφιχτό αποτέλεσμα. + +Δεν χρειάζονται εξωτερικά εργαλεία, ούτε μυστικά κόλπα γραμμής εντολών—μόνο καθαρός κώδικας C# και σαφείς εξηγήσεις. + +## Προαπαιτούμενα + +| Απαίτηση | Γιατί είναι σημαντικό | +|----------|-----------------------| +| .NET 6.0 ή νεότερο (ή .NET Framework 4.6+) | Το Aspose.Pdf υποστηρίζει και τα δύο· τα νεότερα runtime προσφέρουν καλύτερη απόδοση. | +| Πακέτο NuGet Aspose.Pdf for .NET (`Aspose.Pdf`) | Η κλάση `Document` βρίσκεται εδώ. | +| Ένα PDF με μεγάλες εικόνες (π.χ., `HeavyImages.pdf`) | Σας δίνει κάτι απτό για να σμικρύνετε. | +| Visual Studio, Rider ή οποιοσδήποτε επεξεργαστής C# προτιμάτε | Η άνεση είναι το κλειδί—επιλέξτε ό,τι αισθάνεστε φυσικό. | + +> **Pro tip:** Αν βρίσκεστε σε pipeline CI/CD, προσθέστε την αναφορά NuGet στο `.csproj` ώστε η κατασκευή να μην την ξεχνάει. + +```xml + + + +``` + +## Βήμα 1: Φορτώστε το PDF που θέλετε να συμπιέσετε + +Πρώτα χρειαζόμαστε ένα αντικείμενο `Document` που δείχνει στο αρχείο προέλευσης. Σκεφτείτε το σαν το άνοιγμα ενός βιβλίου πριν αρχίσετε να επεξεργάζεστε τα κεφάλαια. + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*Γιατί είναι σημαντικό:* Η φόρτωση του αρχείου δίνει στο Aspose.Pdf την ευκαιρία να διαβάσει όλους τους ενσωματωμένους πόρους (εικόνες, γραμματοσειρές κ.λπ.). Χωρίς αυτό το βήμα δεν υπάρχει τίποτα για **σμίκρυνση του μεγέθους του pdf αρχείου**. + +## Βήμα 2: Εφαρμόστε συμπίεση PDF χωρίς απώλειες + +Το Aspose.Pdf διαθέτει τη μέθοδο `Optimize` που, από προεπιλογή, εκτελεί μια **συμπίεση PDF χωρίς απώλειες**. Αφαιρεί περιττά αντικείμενα, συμπιέζει ξανά τις εικόνες χρησιμοποιώντας την ίδια οπτική πιστότητα και αφαιρεί αχρησιμοποίητες γραμματοσειρές. + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*Γιατί είναι σημαντικό:* Ο προεπιλεγμένος βελτιστοποιητής έχει σχεδιαστεί για να **σμικρύνει το μέγεθος του pdf αρχείου** διατηρώντας κάθε pixel. Αν αργότερα αποφασίσετε ότι μπορείτε να ανεχθείτε μια μικρή πτώση ποιότητας, το σχολιασμένο `OptimizationOptions` σας επιτρέπει να ανταλλάξετε μερικά επιπλέον kilobytes για ταχύτητα. + +## Βήμα 3: Αποθηκεύστε το βελτιστοποιημένο PDF + +Τώρα που το έγγραφο είναι πιο ελαφρύ, το γράφουμε σε νέο αρχείο. Η διατήρηση του αρχικού ανέπαφου είναι καλή συνήθεια, ειδικά όταν δοκιμάζετε διαφορετικές ρυθμίσεις. + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +Μετά την αποθήκευση, συγκρίνετε τα μεγέθη των αρχείων: + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +Θα πρέπει να δείτε μια αξιοσημείωτη πτώση—συχνά **30‑70 %** ανάλογα με το πόσες εικόνες υψηλής ανάλυσης υπήρχαν στην πηγή. + +![πώς να συμπιέσετε pdf εικονογράφηση](image.png "πώς να συμπιέσετε pdf") + +*Κείμενο εναλλακτικής εικόνας:* πώς να συμπιέσετε pdf – πριν και μετά τη βελτιστοποίηση + +## Προχωρημένο: Ρύθμιση συμπίεσης για συγκεκριμένα σενάρια + +Ενώ ο προεπιλεγμένος βελτιστοποιητής είναι εξαιρετικός για τις περισσότερες περιπτώσεις, μερικές φορές χρειάζεται να **σμικρύνετε το μέγεθος του pdf αρχείου** ακόμη περισσότερο: + +| Σενάριο | Ρύθμιση προς προσαρμογή | Αποτέλεσμα | +|----------|------------------------|------------| +| PDFs με πολλές raster εικόνες | `CompressImages = true` + χαμηλότερο `ImageQuality` (π.χ., 70) | Μειώνει το μέγεθος των εικόνων, ελαφριά απώλεια οπτικής ποιότητας. | +| PDFs που περιέχουν διπλότυπες γραμματοσειρές | `RemoveUnusedObjects = true` | Αφαιρεί γραμματοσειρές που δεν αναφέρονται. | +| PDFs με μεγάλα μεταδεδομένα | `RemoveMetadata = true` | Απομακρύνει κρυφά XML/μεταδεδομένα. | + +Μπορείτε να συνδυάσετε αυτά σε ένα αντικείμενο `OptimizationOptions` και να το περάσετε στο `pdfDoc.Optimize(options)`. + +## Συχνές ερωτήσεις & ειδικές περιπτώσεις + +**Τι γίνεται αν το PDF είναι ήδη βελτιστοποιημένο;** +Το Aspose.Pdf θα σαρώσει ακόμα το έγγραφο, αλλά η αλλαγή μεγέθους θα είναι ελάχιστη. Η εκτέλεση του βελτιστοποιητή σε ήδη ελαφρύ αρχείο είναι ασφαλής· δεν θα καταστρέψει τίποτα. + +**Μπορώ να συμπιέσω κρυπτογραφημένα PDFs;** +Ναι, αλλά πρέπει να παρέχετε τον κωδικό πρόσβασης πριν καλέσετε το `Optimize`. Παράδειγμα: + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**Τι γίνεται με PDFs που περιέχουν διανυσματικά γραφικά;** +Τα διανυσματικά αντικείμενα είναι ήδη ελαφριά, οπότε ο βελτιστοποιητής εστιάζει στις raster εικόνες και τα μεταδεδομένα. Αναμένετε ήπια κέρδη για καθαρά διανυσματικά αρχεία. + +## Πλήρες, εκτελέσιμο παράδειγμα + +Παρακάτω υπάρχει μια αυτόνομη εφαρμογή κονσόλας που μπορείτε να αντιγράψετε‑επικολλήσετε σε ένα νέο `.csproj`. Δείχνει όλα όσα συζητήθηκαν—from loading to verification. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +Τρέξτε το πρόγραμμα, ανοίξτε το `Optimized.pdf` σε οποιονδήποτε προβολέα, και θα δείτε την ίδια διάταξη σελίδας, τις ίδιες καθαρές εικόνες, αλλά ένα πιο λεπτό αρχείο. Αυτή είναι η μαγεία της **συμπίεσης PDF χωρίς απώλειες**. + +## Συμπέρασμα + +Καλύψαμε **πώς να συμπιέσετε pdf** αρχεία χρησιμοποιώντας τον ενσωματωμένο βελτιστοποιητή του Aspose.Pdf, παρουσιάσαμε μια πρακτική ροή εργασίας **μείωσης του μεγέθους του pdf αρχείου**, και εξηγήσαμε τους λόγους πίσω από κάθε βήμα. Ακολουθώντας το τρι‑βήμα μοτίβο—φόρτωση, βελτιστοποίηση, αποθήκευση—μπορείτε να **σμικρύνετε το μέγεθος του pdf αρχείου** άμεσα, να διατηρήσετε τις εικόνες αμετάβλητες με **συμπίεση PDF χωρίς απώλειες**, και να **αποθηκεύσετε βελτιστοποιημένα pdf** αρχεία για downstream χρήση. + +Έτοιμοι για την επόμενη πρόκληση; Δοκιμάστε να συνδέσετε αυτόν τον βελτιστοποιητή με ένα batch script για επεξεργασία ολόκληρου φακέλου, ή πειραματιστείτε με τις προαιρετικές `OptimizationOptions` για να αποσυμπιέσετε τα τελευταία kilobytes. Οι ίδιες αρχές ισχύουν είτε εργάζεστε σε desktop εργαλείο, web API ή server‑side batch job. + +Έχετε περισσότερες ερωτήσεις σχετικά με τη διαχείριση PDF, τις ιδιαιτερότητες του Aspose.Pdf, ή το I/O αρχείων .NET; Αφήστε ένα σχόλιο παρακάτω, και ας συνεχίσουμε τη συζήτηση. Καλή συμπίεση! + +{{< /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/programming-with-security-and-signatures/_index.md b/pdf/greek/net/programming-with-security-and-signatures/_index.md index d902fe17d..8c882e8be 100644 --- a/pdf/greek/net/programming-with-security-and-signatures/_index.md +++ b/pdf/greek/net/programming-with-security-and-signatures/_index.md @@ -34,6 +34,8 @@ | [Υπογραφή με έξυπνη κάρτα χρησιμοποιώντας υπογραφή αρχείου PDF](./sign-with-smart-card-using-pdf-file-signature/) | Μάθετε πώς να υπογράφετε αρχεία PDF χρησιμοποιώντας μια έξυπνη κάρτα με το Aspose.PDF για .NET. Ακολουθήστε αυτόν τον αναλυτικό οδηγό για ασφαλείς ψηφιακές υπογραφές. | | [Υπογραφή με έξυπνη κάρτα χρησιμοποιώντας το πεδίο υπογραφής](./sign-with-smart-card-using-signature-field/) | Μάθετε πώς να υπογράφετε με ασφάλεια PDF χρησιμοποιώντας μια έξυπνη κάρτα με το Aspose.PDF για .NET. Ακολουθήστε τον αναλυτικό οδηγό μας για εύκολη εφαρμογή. | | [Έλεγχος υπογραφών PDF σε C# – Πώς να διαβάσετε υπογεγραμμένα αρχεία PDF](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) | Μάθετε πώς να ελέγχετε και να διαβάζετε υπογεγραμμένα αρχεία PDF χρησιμοποιώντας C# και Aspose.PDF. | +| [Πώς να επαληθεύσετε την υπογραφή σε PDF χρησιμοποιώντας C# – Πλήρης οδηγός Aspose](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) | Μάθετε πώς να ελέγχετε ψηφιακές υπογραφές PDF με C# χρησιμοποιώντας το Aspose.PDF σε πλήρη οδηγό βήμα προς βήμα. | +| [Προσθήκη ψηφιακής υπογραφής PDF σε C# – Πλήρης οδηγός βήμα προς βήμα](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) | Μάθετε πώς να προσθέσετε ψηφιακή υπογραφή σε PDF χρησιμοποιώντας C# και Aspose.PDF με πλήρη οδηγό βήμα προς βήμα. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/greek/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/greek/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..a80281507 --- /dev/null +++ b/pdf/greek/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,260 @@ +--- +category: general +date: 2026-03-06 +description: Προσθήκη ψηφιακής υπογραφής PDF χρησιμοποιώντας το Aspose.PDF. Μάθετε + πώς να δημιουργήσετε αποσπασμένη υπογραφή PKCS7 και να υπογράψετε PDF χρησιμοποιώντας + PFX με προσαρμοσμένη κλήση επιστροφής. +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: el +og_description: Προσθέστε ψηφιακή υπογραφή PDF γρήγορα. Αυτός ο οδηγός δείχνει πώς + να δημιουργήσετε αποσπασμένη υπογραφή PKCS7 και να υπογράψετε PDF χρησιμοποιώντας + PFX σε C#. +og_title: Προσθήκη Ψηφιακής Υπογραφής PDF σε C# – Πλήρης Εγχειρίδιο Προγραμματισμού +tags: +- Aspose.PDF +- C# +- Digital Signature +title: Προσθήκη Ψηφιακής Υπογραφής PDF σε C# – Πλήρης Οδηγός Βήμα‑βήμα +url: /el/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Προσθήκη Ψηφιακής Υπογραφής PDF – Πλήρης Οδηγός Βήμα‑Βήμα + +Έχετε χρειαστεί ποτέ να **προσθέσετε ψηφιακή υπογραφή pdf** σε αρχεία αλλά δεν ήξερες από πού να ξεκινήσεις; Δεν είστε μόνοι· πολλοί προγραμματιστές αντιμετωπίζουν το ίδιο πρόβλημα όταν η γραφειοκρατία απαιτεί νομικά δεσμευτική υπογραφή και η βάση κώδικα ξέρει μόνο πώς να δημιουργεί απλά PDF. + +Σε αυτό το tutorial θα περάσουμε από μια πρακτική λύση που σας επιτρέπει να **προσθέσετε ψηφιακή υπογραφή pdf** σε έγγραφα χρησιμοποιώντας το Aspose.PDF for .NET, να δημιουργήσετε μια αποσπασμένη υπογραφή PKCS#7 και να υπογράψετε το PDF με πιστοποιητικό PFX—όλα σε καθαρό C#. Στο τέλος θα έχετε ένα έτοιμο κομμάτι κώδικα, θα καταλάβετε το “γιατί” πίσω από κάθε κλήση και θα ξέρετε πώς να προσαρμόσετε την προσέγγιση για ειδικές περιπτώσεις. + +## Τι Θα Μάθετε + +- Πώς να φορτώσετε ένα μη υπογεγραμμένο PDF και να το προετοιμάσετε για υπογραφή. +- Τους μηχανισμούς μιας **create pkcs7 detached signature** και γιατί μπορεί να προτιμήσετε μια αποσπασμένη αντί για ενσωματωμένη. +- Τα ακριβή βήματα για **sign pdf using pfx** με προσαρμοσμένο callback, δίνοντάς σας πλήρη έλεγχο της κρυπτογραφικής διαδικασίας. +- Συμβουλές για την αντιμετώπιση κοινών προβλημάτων (απουσία πιστοποιητικού, λανθασμένος αλγόριθμος hash κ.λπ.). + +### Προαπαιτούμενα + +| Απαίτηση | Λόγος | +|-------------|--------| +| .NET 6.0 ή νεότερο | Σύγχρονα χαρακτηριστικά γλώσσας και καλύτερη διαχείριση μνήμης. | +| Aspose.PDF for .NET (πακέτο NuGet) | Παρέχει `PdfFileSignature`, `PKCS7Detached` και άλλα εργαλεία PDF. | +| Ένα έγκυρο αρχείο PFX (`.pfx`) με ιδιωτικό κλειδί | Απαιτείται για το βήμα **sign pdf using pfx**. | +| Βασικές γνώσεις C# | Ο κώδικας είναι απλός, αλλά η κατανόηση των δηλώσεων `using` βοηθά. | + +> **Pro tip:** Κρατήστε τον κωδικό πρόσβασης του PFX εκτός ελέγχου πηγαίου κώδικα—χρησιμοποιήστε μεταβλητές περιβάλλοντος ή Azure Key Vault για παραγωγή. + +--- + +## Πώς να Προσθέσετε Ψηφιακή Υπογραφή PDF με Aspose.PDF + +Παρακάτω χωρίζουμε τη διαδικασία σε πέντε εύπεπτα βήματα. Κάθε βήμα περιλαμβάνει ένα απόσπασμα κώδικα, εξήγηση του *γιατί* είναι σημαντικό και έναν γρήγορο έλεγχο λογικής. + +![Στιγμιότυπο οθόνης με υπογεγραμμένο PDF σε προβολέα, εμφανίζοντας ορατό πεδίο υπογραφής](/images/add-digital-signature-pdf.png "παράδειγμα προσθήκης ψηφιακής υπογραφής pdf") + +### Βήμα 1 – Φόρτωση του Μη Υπογεγραμμένου PDF Εγγράφου + +Πρώτα χρειαζόμαστε ένα αντικείμενο `Document` που αντιπροσωπεύει το PDF που θέλετε να υπογράψετε. Η χρήση `using var` εξασφαλίζει ότι το αρχείο κλείνει αυτόματα. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**Γιατί;** +Το Aspose αντιμετωπίζει ένα PDF ως γράφο αντικειμένων· η φόρτωσή του σας δίνει πρόσβαση σε σελίδες, σημειώσεις και στο εσωτερικό byte stream που θα καταγραφεί αργότερα για την υπογραφή. + +### Βήμα 2 – Αρχικοποίηση του Βοηθού PdfFileSignature + +`PdfFileSignature` είναι η κλάση που εφαρμόζει το κρυπτογραφικό φάκελο. Λειτουργεί χέρι‑με‑χέρι με το `PKCS7Detached`. + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**Γιατί;** +Ο διαχωρισμός του υπογράφοντα από το έγγραφο σας επιτρέπει να επαναχρησιμοποιήσετε το ίδιο αντικείμενο `Document` για άλλες λειτουργίες (π.χ. προσθήκη υδατογραφήματος) πριν ολοκληρώσετε την υπογραφή. + +### Βήμα 3 – Δημιουργία Αποσπασμένης Υπογραφής PKCS#7 (Create PKCS7 Detached Signature) + +Μια **PKCS#7 αποσπασμένη υπογραφή** αποθηκεύει μόνο το hash του PDF, όχι το ίδιο το PDF. Αυτό είναι ιδανικό για μεγάλα έγγραφα ή όταν πρέπει να διατηρηθεί το αρχικό αρχείο αμετάβλητο. + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**Γιατί ένα προσαρμοσμένο callback;** +Μερικές φορές το κλειδί υπογραφής βρίσκεται σε HSM ή Azure Key Vault και δεν μπορείτε να εξάγετε το ιδιωτικό κλειδί απευθείας. Παρέχοντας το `CustomSignHash` παραδίδετε το hash στην υπηρεσία που κρατά το κλειδί, διασφαλίζοντας την ιδιωτική ύλη. + +**Τι γίνεται αν δεν χρειάζεστε προσαρμοσμένο callback;** +Μπορείτε να παραλείψετε το `CustomSignHash`; το Aspose θα χρησιμοποιήσει αυτόματα το ιδιωτικό κλειδί μέσα στο PFX. Ωστόσο, η προσαρμοσμένη διαδρομή είναι πιο ευέλικτη και συμμορφώνεται με απαιτήσεις συμμόρφωσης. + +### Βήμα 4 – Εφαρμογή της Υπογραφής σε Συγκεκριμένη Σελίδα (Sign PDF Using PFX) + +Τώρα τοποθετούμε ένα ορατό πεδίο υπογραφής στη σελίδα. Το ορθογώνιο καθορίζει τη θέση και το μέγεθος (σε points). + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**Γιατί να ορίσετε ορθογώνιο;** +Μια ορατή υπογραφή βοηθά τους τελικούς χρήστες να δουν ότι το έγγραφο είναι υπογεγραμμένο. Αν θέσετε `isVisible` σε `false`, η υπογραφή γίνεται αόρατη—έγκυρη, αλλά πιο δύσκολη στην ανίχνευση. + +**Edge case:** Αν το PDF δεν έχει σελίδες (κενό αρχείο) η κλήση πετάει `ArgumentOutOfRangeException`. Πάντα ελέγχετε `pdfDocument.Pages.Count > 0` πριν την υπογραφή. + +### Βήμα 5 – Αποθήκευση του Υπογεγραμμένου PDF + +Τέλος, αποθηκεύουμε το υπογεγραμμένο έγγραφο στο δίσκο. Μπορείτε επίσης να το στείλετε απευθείας ως ροή σε απάντηση ASP.NET Core. + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**Συμβουλή επαλήθευσης:** Ανοίξτε το παραγόμενο αρχείο στο Adobe Acrobat Reader. Ο πίνακας υπογραφών θα πρέπει να δείχνει πράσινο τικ (εφόσον το πιστοποιητικό είναι αξιόπιστο στο μηχάνημα). + +--- + +## Πλήρες Παράδειγμα Εργασίας + +Συνδυάζοντας τα παραπάνω, εδώ είναι ένα αυτόνομο πρόγραμμα κονσόλας που μπορείτε να αντιγράψετε‑επικολλήσετε και να τρέξετε (μετά την προσαρμογή διαδρομών και κωδικών). + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**Αναμενόμενο αποτέλεσμα:** Η κονσόλα εκτυπώνει “✅ PDF signed successfully!” και το αρχείο `CustomSigned.pdf` εμφανίζεται στον ίδιο φάκελο. Όταν ανοιχθεί, θα δείτε ένα widget υπογραφής στις συντεταγμένες (100,100)‑(300,200). + +--- + +## Συχνές Ερωτήσεις & Edge Cases + +### Τι γίνεται αν το PFX είναι προστατευμένο με έξυπνη κάρτα; + +Χρησιμοποιήστε το delegate `CustomSignHash` για να προωθήσετε το hash στον οδηγό της έξυπνης κάρτας. Ο οδηγός θα επιστρέψει τα bytes της υπογραφής και το Aspose θα τα ενσωματώσει χωρίς ποτέ να εκθέσει το ιδιωτικό κλειδί. + +### Μπορώ να υπογράψω πολλές σελίδες ταυτόχρονα; + +Ναι. Καλέστε `pdfSigner.Sign` μέσα σε βρόχο, προσαρμόζοντας το `pageNumber` και προαιρετικά το ορθογώνιο για κάθε σελίδα. Θυμηθείτε ότι κάθε κλήση προσθέτει ξεχωριστό αντικείμενο υπογραφής· ορισμένοι προβολείς μπορεί να τα εμφανίζουν ξεχωριστά. + +### Πώς αλλάζω τον αλγόριθμο hash; + +Το `PKCS7Detached` προεπιλογή είναι SHA‑256, αλλά μπορείτε να ορίσετε την ιδιότητα `HashAlgorithm`: + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +Βεβαιωθείτε ότι ο πάροχος υπογραφής υποστηρίζει τον επιλεγμένο αλγόριθμο. + +### Τι γίνεται αν η αλυσίδα πιστοποιητικών δεν είναι αξιόπιστη στο μηχάνημα του πελάτη; + +Συμπεριλάβετε ολόκληρη την αλυσίδα στο PFX ή διανείμετε το ριζικό πιστοποιητικό στο αποθετήριο εμπιστοσύνης του τελικού χρήστη. Διαφορετικά το Acrobat θα εμφανίσει “Signature is unknown”. + +### Είναι μια αποσπασμένη υπογραφή συμβατή με PDF/A‑3; + +Το PDF/A‑3 απαιτεί ενσωματωμένες υπογραφές, οπότε μια αποσπασμένη PKCS#7 μπορεί να μην είναι σύμφωνη. Σε αυτήν την περίπτωση αφαιρέστε το delegate `CustomSignHash` και αφήστε το Aspose να χειριστεί την υπογραφή εσωτερικά, δημιουργώντας ενσωματωμένη υπογραφή. + +--- + +## Καλές Πρακτικές για Παραγωγή + +1. **Ποτέ μην σκληροκωδικοποιείτε κωδικούς.** Αντλήστε τους από μεταβλητές περιβάλλοντος ή διαχειριστή μυστικών. +2. **Επικυρώστε το PDF πριν την υπογραφή.** Κατεστραμμένα αρχεία προκαλούν `PdfFileSignatureException`. +3. **Καταγράψτε τον αλγόριθμο hash και το thumbprint του πιστοποιητικού** για σκοπούς ελέγχου. +4. **Δοκιμάστε με πολλαπλούς προβολείς PDF** (Adobe Reader, Foxit, Chrome) ώστε η υπογραφή να εμφανίζεται όπως πρέπει. +5. **Σκεφτείτε την προσθήκη χρονικής σήμανσης** με αίτημα TSA (Time‑Stamp Authority), που ενισχύει τη νομική ισχύ της υπογραφής. + +--- + +## Συμπέρασμα + +Σας δείξαμε πώς να **προσθέσετε ψηφιακή υπογραφή pdf** χρησιμοποιώντας το Aspose.PDF, να δημιουργήσετε μια **PKCS#7 αποσπασμένη υπογραφή**, και να **sign pdf using pfx** με προσαρμοσμένο callback. Το πλήρες παράδειγμα εκτελείται αμέσως, και οι εξηγήσεις σας δίνουν την αυτοπεποίθηση να προσαρμόσετε τη διαδικασία για HSM, υπηρεσίες χρονικής σήμανσης ή συμμόρφωση PDF/A. + +Στη συνέχεια, μπορείτε να εξερευνήσετε **υπογραφή πολλαπλών εγγράφων σε batch**, ενσωμάτωση **Azure Key Vault** για ασφαλή αποθήκευση κλειδιών, ή **οπτική προσαρμογή** της εμφάνισης της υπογραφής. Κάθε ένα από αυτά τα θέματα βασίζεται άμεσα στο θεμέλιο που θέσαμε εδώ. + +Αν ακολουθήσατε τα βήματα, έχετε τώρα μια σταθερή, αξιόπιστη λύση που μπορείτε να μοιραστείτε με συναδέλφους—ή ακόμη και να αναφέρετε σε απάντηση AI‑assistant. Καλή υπογραφή, και μη διστάσετε να αφήσετε σχόλιο αν κάτι δεν είναι απολύτως σαφές! + +{{< /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/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/greek/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..c050bd336 --- /dev/null +++ b/pdf/greek/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,202 @@ +--- +category: general +date: 2026-03-06 +description: Μάθετε πώς να επαληθεύετε την υπογραφή σε ένα PDF με το Aspose PDF σε + C#. Βήμα‑βήμα επαλήθευση υπογραφής PDF, επικύρωση υπογραφής PDF και διαχείριση παραβιασμένων + υπογραφών. +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: el +og_description: Πώς να επαληθεύσετε την υπογραφή σε ένα PDF με το Aspose PDF. Ακολουθήστε + αυτόν τον οδηγό για να εκτελέσετε επαλήθευση υπογραφής PDF, να επικυρώσετε την υπογραφή + PDF και να εντοπίσετε παραβιασμένες υπογραφές σε C#. +og_title: Πώς να επαληθεύσετε την υπογραφή σε PDF χρησιμοποιώντας C# – Πλήρης οδηγός + Aspose +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: Πώς να επαληθεύσετε την υπογραφή σε PDF χρησιμοποιώντας C# – Πλήρης οδηγός + Aspose +url: /el/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να Επαληθεύσετε την Υπογραφή σε PDF χρησιμοποιώντας C# – Πλήρης Οδηγός Aspose + +Έχετε αναρωτηθεί **πώς να επαληθεύσετε την υπογραφή** σε ένα PDF χωρίς να τρελαίνεστε; Δεν είστε μόνοι. Πολλοί προγραμματιστές συναντούν πρόβλημα όταν χρειάζεται **επαλήθευση υπογραφής PDF** για λόγους συμμόρφωσης ή ελέγχου, και η συνηθισμένη προσέγγιση «απλώς εμπιστεύσου τη βιβλιοθήκη» μπορεί να αποδειχθεί λανθασμένη. + +Σε αυτό το tutorial θα περάσουμε βήμα‑βήμα από μια πρακτική, ολοκληρωμένη λύση που όχι μόνο **επαληθεύει την υπογραφή PDF** αλλά και σας ενημερώνει αν η υπογραφή έχει παραβιαστεί. Θα χρησιμοποιήσουμε τη βιβλιοθήκη **Aspose PDF**, που σημαίνει ότι ο κώδικας λειτουργεί σε .NET 6+, .NET Framework 4.6+ και ακόμη και .NET Core. Στο τέλος θα έχετε ένα έτοιμο κομμάτι κώδικα που μπορείτε να ενσωματώσετε σε οποιοδήποτε έργο C#. + +## Τι Θα Χρειαστείτε + +- Πακέτο NuGet **Aspose.Pdf** (τελευταία έκδοση τη στιγμή της συγγραφής – 23.12). +- Περιβάλλον ανάπτυξης .NET (Visual Studio, Rider ή VS Code). +- Ένα υπογεγραμμένο αρχείο PDF (θα το ονομάσουμε `Signed.pdf`). +- Βασικές γνώσεις C# – τίποτα περίπλοκο, μόνο οι συνήθεις δηλώσεις `using` και η είσοδος/έξοδος `Console`. + +Αυτό είναι όλο. Χωρίς επιπλέον υπηρεσίες, χωρίς περίπλοκα αρχεία ρυθμίσεων. Έτοιμοι; Ας ξεκινήσουμε. + +![διάγραμμα επαλήθευσης υπογραφής](image.png "πώς να επαληθεύσετε την υπογραφή") + +## Βήμα 1: Ρυθμίστε το Έργο σας για Επαλήθευση Υπογραφής PDF + +Πριν καλέσετε οποιοδήποτε Aspose API, πρέπει να αναφέρετε τη βιβλιοθήκη. Ανοίξτε το τερματικό ή το Package Manager Console και εκτελέστε: + +```bash +dotnet add package Aspose.Pdf +``` + +Ή, αν προτιμάτε το UI, αναζητήστε **Aspose.Pdf** στο NuGet Package Manager και εγκαταστήστε το. Αυτό το βήμα είναι κρίσιμο, επειδή χωρίς το **aspose pdf signature** assembly δεν θα μπορείτε να προσπελάσετε την κλάση `PdfFileSignature` αργότερα. + +> **Pro tip:** Στοχεύστε .NET 6 ή νεότερο για τη βέλτιστη απόδοση και για να αποφύγετε προειδοποιήσεις συμβατότητας με παλαιότερες εκδόσεις. + +## Βήμα 2: Φορτώστε το Έγγραφο PDF + +Τώρα που το πακέτο είναι εγκατεστημένο, μπορούμε να φορτώσουμε το PDF που θέλουμε να ελέγξουμε. Η κλάση `Document` αντιπροσωπεύει ολόκληρο το αρχείο στη μνήμη. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**Γιατί είναι σημαντικό:** Η φόρτωση του εγγράφου μας δίνει πρόσβαση στις εσωτερικές του δομές, συμπεριλαμβανομένων των πεδίων υπογραφής. Αν το αρχείο λείπει ή είναι κατεστραμμένο, η `Document` θα ρίξει εξαίρεση, την οποία μπορείτε να πιάσετε για πιο φιλική εμπειρία χρήστη. + +## Βήμα 3: Δημιουργήστε το Αντικείμενο Aspose PdfFileSignature + +Με το έγγραφο στα χέρια, το επόμενο βήμα είναι η δημιουργία ενός αντικειμένου `PdfFileSignature`. Αυτή η κλάση-πρόσοψη γνωρίζει πώς να διαβάσει, να επαληθεύσει και να διαχειριστεί ψηφιακές υπογραφές ενσωματωμένες σε PDF. + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**Επεξήγηση:** Ο κατασκευαστής `PdfFileSignature` δέχεται το φορτωμένο `Document`. Εσωτερικά αναλύει το λεξικό υπογραφής, κάνοντας διαθέσιμες μεθόδους όπως `VerifySignature` και `IsSignatureCompromised`. + +## Βήμα 4: Επαληθεύστε την Ακεραιότητα της Υπογραφής + +Η καρδιά της **pdf signature verification** είναι η μέθοδος `VerifySignature`. Επιστρέφει `true` αν το κρυπτογραφικό hash ταιριάζει με την αποθηκευμένη τιμή και η αλυσίδα πιστοποιητικών είναι αξιόπιστη (υπό την προϋπόθεση ότι έχετε ρυθμίσει έναν διαχειριστή εμπιστοσύνης, κάτι που θα παραλείψουμε για συντομία). + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +Αν έχετε πολλαπλές υπογραφές, απλώς αλλάξτε το δείκτη (`0`, `1`, …). Η μέθοδος ελέγχει τόσο την ακεραιότητα όσο και την εμπιστοσύνη σε ένα βήμα, γι' αυτό είναι η προτιμώμενη επιλογή σε περισσότερα σενάρια. + +## Βήμα 5: Ανιχνεύστε Μια Παραβιασμένη Υπογραφή + +Ακόμη και μια «έγκυρη» υπογραφή μπορεί να είναι παραβιασμένη αν το έγγραφο τροποποιηθεί μετά την υπογραφή. Η Aspose παρέχει τη μέθοδο `IsSignatureCompromised` για να εντοπίσει αυτήν την λεπτή περίπτωση. + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**Πότε να τη χρησιμοποιήσετε:** Υποθέστε ότι ένα PDF έχει υπογραφεί, και στη συνέχεια ένας χρήστης προσθέτει ένα σχόλιο ή αλλάζει μια σελίδα. Το hash θα διαφέρει, και η `IsSignatureCompromised` θα επιστρέψει `true` ενώ η `VerifySignature` μπορεί ακόμα να είναι `true` αν το πιστοποιητικό είναι εντάξει. Ο έλεγχος και των δύο σηματοδοτών σας δίνει μια πλήρη εικόνα. + +## Βήμα 6: Ερμηνεύστε τα Αποτελέσματα + +Τώρα έχουμε δύο boolean: `isSignatureValid` και `isSignatureCompromised`. Ας τα μετατρέψουμε σε φιλικό μήνυμα στην κονσόλα. + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### Αναμενόμενο Αποτέλεσμα + +| Σενάριο | Έξοδος Κονσόλας | +|-----------------------------------------|--------------------------------| +| Έγκυρο και μη παραβιασμένο | `Signature OK` | +| Έγκυρο αλλά παραβιασμένο (αλλαγή εγγράφου) | `Signature compromised!` | +| Μη έγκυρο (πιστοποιητικό μη αξιόπιστο, διαφορά hash) | `Signature verification failed` | + +Αυτός ο πίνακας σας βοηθά να αντιστοιχίσετε γρήγορα τα boolean αποτελέσματα σε μηνύματα κατανοητά από τον χρήστη. + +## Πλήρες Παράδειγμα Λειτουργίας + +Συνδυάζοντας όλα τα παραπάνω, εδώ είναι το πλήρες, έτοιμο‑για‑εκτέλεση πρόγραμμα: + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +Αντιγράψτε, επικολλήστε, προσαρμόστε το `pdfPath` και τρέξτε. Αν όλα είναι ρυθμισμένα σωστά, θα δείτε ένα από τα τρία μηνύματα που αναφέρονται παραπάνω. + +## Συνηθισμένα Πόνα και Συμβουλές για Επαλήθευση Υπογραφής PDF + +| Πρόβλημα | Γιατί Συμβαίνει | Πώς να Διορθώσετε / Αποφύγετε | +|------------------------------------------|--------------------------------------|--------------------------------| +| **Λείπει η άδεια Aspose** | Η δωρεάν αξιολόγηση προσθέτει υδατογράφημα και μπορεί να περιορίσει κάποιες κλήσεις API. | Καταχωρίστε μια άδεια (`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`). | +| **Πολλαπλές υπογραφές αλλά λανθασμένος δείκτης** | Ελέγχετε τη λάθος υπογραφή, οδηγώντας σε ψευδείς αρνητικά. | Κάντε βρόχο μέσω `signatureVerifier.GetSignatureCount()` και εξετάστε κάθε μία. | +| **Αλυσίδα πιστοποιητικών μη αξιόπιστη** | Η `VerifySignature` αποτυγχάνει αν η ρίζα CA δεν βρίσκεται στο αξιόπιστο αποθετήριο. | Προσθέστε την CA υπογραφής στο Windows Trusted Root ή ρυθμίστε έναν προσαρμοσμένο `CertificateValidator`. | +| **Αρχείο κλειδωμένο από άλλη διεργασία** | Το άνοιγμα ενός PDF που είναι ανοιχτό αλλού μπορεί να ρίξει `IOException`. | Χρησιμοποιήστε `FileStream` με `FileShare.ReadWrite` ή αντιγράψτε σε προσωρινό αρχείο πρώτα. | +| **Λανθασμένη διαδρομή PDF** | Απλό τυπογραφικό λάθος που οδηγεί σε `FileNotFoundException`. | Επαληθεύστε τη διαδρομή με `File.Exists(pdfPath)` πριν τη φόρτωση. | + +### Ακραίες Περιπτώσεις που Μπορείτε να Συναντήσετε + +- **Αποσπασμένες υπογραφές**: Ορισμένα PDF αποθηκεύουν υπογραφές εξωτερικά. Η `PdfFileSignature` της Aspose υποστηρίζει προς το παρόν μόνο ενσωματωμένες υπογραφές. +- **Υπογραφές με χρονική σήμανση**: Αν χρειάζεται να επαληθεύσετε την αρχή χρονικής σήμανσης (TSA), θα πρέπει να καλέσετε `VerifySignature` με προσαρμοσμένο αντικείμενο `VerificationOptions` – εκτός του εύρους αυτού του γρήγορου οδηγού, αλλά αξίζει να το σημειώσετε για έργα με αυστηρές απαιτήσεις συμμόρφωσης. + +## Επόμενα Βήματα – Επέκταση της Λογικής Επαλήθευσης + +Τώρα που έχετε κατακτήσει τα βασικά του **πώς να επαληθεύσετε την υπογραφή**, μπορείτε να: + +1. **Επικυρώσετε την υπογραφή PDF** έναντι λίστας αξιόπιστων πιστοποιητικών (π.χ. εταιρικού PKI). +2. **Εξάγετε λεπτομέρειες υπογραφής** (όνομα υπογράφοντα, ώρα υπογραφής, αποτύπωμα πιστοποιητικού) χρησιμοποιώντας `GetSignatureInfo`. +3. **Επεξεργαστείτε μαζικά πολλαπλά PDF** σε φάκελο, καταγράφοντας τα αποτελέσματα σε CSV για σκοπούς ελέγχου. + +Όλα αυτά είναι απλές επεκτάσεις του κώδικα που καλύψαμε και σας κρατούν εντός του ίδιου οικοσυστήματος **aspose pdf signature**. + +--- + +**Συνοπτικά**, τώρα ξέρετε ακριβώς **πώς να επαληθεύσετε την υπογραφή** σε ένα PDF χρησιμοποιώντας C# και Aspose, πώς να εντοπίσετε μια παραβιασμένη υπογραφή, και τι να κάνετε όταν η επαλήθευση αποτύχει. Η προσέγγιση είναι στιβαρή, λειτουργεί με πολλαπλές υπογραφές και μπορεί να ενσωματωθεί σε μεγαλύτερα pipelines επεξεργασίας εγγράφων. + +Έχετε κάποια παραλλαγή αυτού του σεναρίου; Ίσως χρειάζεστε να υπογράψετε PDF αντί να τα επαληθεύετε, ή να αντιμετωπίζετε κρυπτογραφημένα PDF. Αφήστε ένα σχόλιο και θα εξερευνήσουμε αυτές τις πτυχές μαζί. Καλή προγραμματιστική! + +{{< /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/programming-with-stamps-and-watermarks/_index.md b/pdf/greek/net/programming-with-stamps-and-watermarks/_index.md index edfaf86a9..fb73d552c 100644 --- a/pdf/greek/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/greek/net/programming-with-stamps-and-watermarks/_index.md @@ -39,6 +39,7 @@ | [Πίνακας στην ενότητα Κεφαλίδα Υποσέλιδο](./table-in-header-footer-section/) | Μάθετε πώς να προσθέτετε εύκολα κείμενο στο υποσέλιδο ενός αρχείου PDF χρησιμοποιώντας το Aspose.PDF για .NET. Περιλαμβάνεται οδηγός βήμα προς βήμα για απρόσκοπτη ενσωμάτωση. | | [Κείμενο στο υποσέλιδο ενός αρχείου PDF](./text-in-footer/) | Μάθετε πώς να προσθέτετε κείμενο στο υποσέλιδο ενός αρχείου PDF με το Aspose.PDF για .NET. | | [Κείμενο στην κεφαλίδα ενός αρχείου PDF](./text-in-header/) | Μάθετε να προσθέτετε κεφαλίδες κειμένου σε PDF χρησιμοποιώντας το Aspose.PDF για .NET με αυτό το βήμα προς βήμα σεμινάριο. Βελτιώστε τα έγγραφά σας αποτελεσματικά και αποδοτικά. | +| [Δημιουργία εγγράφου PDF με αρίθμηση Bates σε C# – Πλήρης Οδηγός](./create-pdf-document-with-bates-numbering-in-c-full-guide/) | Μάθετε πώς να δημιουργήσετε PDF με αρίθμηση Bates χρησιμοποιώντας το Aspose.PDF για .NET σε C# με πλήρη οδηγό βήμα-βήμα. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/greek/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/greek/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..67881c294 --- /dev/null +++ b/pdf/greek/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,184 @@ +--- +category: general +date: 2026-03-06 +description: Δημιουργήστε έγγραφο PDF σε C# και προσθέστε εύκολα αριθμό Bates. Μάθετε + πώς να προσθέσετε κενή σελίδα PDF, να τοποθετήσετε σφραγίδα στη σελίδα και να υλοποιήσετε + την αρίθμηση Bates. +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: el +og_description: Δημιουργήστε έγγραφο PDF σε C# και προσθέστε αριθμό Bates. Αυτός ο + οδηγός δείχνει πώς να προσθέσετε κενή σελίδα PDF, να τοποθετήσετε σφραγίδα στη σελίδα + και να εφαρμόσετε αρίθμηση Bates. +og_title: Δημιουργία εγγράφου PDF με αριθμητική Bates – Οδηγός C# +tags: +- Aspose.Pdf +- C# +- PDF automation +title: Δημιουργία εγγράφου PDF με αριθμήσεις Bates σε C# – Πλήρης οδηγός +url: /el/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Δημιουργία εγγράφου PDF με αρίθμηση Bates σε C# + +Έχετε ποτέ χρειαστεί να **create PDF document** σε C# και αναρωτηθήκατε πώς να προσθέσετε έναν αριθμό Bates χωρίς να τρελαθείτε; Δεν είστε οι μόνοι—γραφεία δικηγόρων, δικαστήρια και ακόμη ορισμένες ομάδες εταιρικής συμμόρφωσης αντιμετωπίζουν ακριβώς αυτό το πρόβλημα καθημερινά. Τα καλά νέα; Με μερικές γραμμές κώδικα Aspose.Pdf μπορείτε να δημιουργήσετε ένα ολοκαίνουργιο PDF, να προσθέσετε μια κενή σελίδα και να σφραγίσετε έναν σωστό αριθμό Bates σε μία ομαλή ροή. + +Σε αυτό το tutorial θα περάσουμε από όλη τη διαδικασία: από τη ρύθμιση του έργου, στην προσθήκη ενός κενό PDF σελίδας, στην κατανόηση του **how to add bates numbering**, και τέλος στο **place stamp on page** και την αποθήκευση του αποτελέσματος. Στο τέλος θα έχετε ένα έτοιμο προς χρήση snippet που μπορείτε να ενσωματώσετε σε οποιαδήποτε εφαρμογή .NET. Χωρίς ασαφείς αναφορές, μόνο ένα πλήρες, εκτελέσιμο παράδειγμα. + +## Τι θα χρειαστείτε + +- **.NET 6+** (ή .NET Framework 4.6+ – το Aspose.Pdf λειτουργεί και με τα δύο) +- **Aspose.Pdf for .NET** πακέτο NuGet (`Install-Package Aspose.Pdf`) +- Ένα καλό IDE (Visual Studio, Rider ή VS Code με επέκταση C#) + +Αυτό είναι όλο. Χωρίς επιπλέον DLLs, χωρίς εξωτερικές υπηρεσίες. Ας βουτήξουμε. + +## Βήμα 1: Δημιουργία PDF Εγγράφου – Αρχική Ρύθμιση + +Πρώτα απ' όλα, χρειαζόμαστε ένα νέο αντικείμενο `Document`. Σκεφτείτε το ως το κενό καμβά όπου θα ζήσει ό,τι άλλο. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **Why this matters:** Η κλάση `Document` είναι το σημείο εισόδου για κάθε λειτουργία του Aspose. Η δημιουργία της σας δίνει πρόσβαση στη συλλογή `Pages`, τα μεταδεδομένα και τις ρυθμίσεις ασφαλείας—όλα τα δομικά στοιχεία για ένα επαγγελματικό PDF. + +## Βήμα 2: Προσθήκη κενής σελίδας PDF + +Ένα PDF χωρίς σελίδες είναι σαν ένα βιβλίο χωρίς σελίδες—αρκετά άχρηστο. Η προσθήκη μιας κενής σελίδας είναι απλή και μας παρέχει μια επιφάνεια για να σφραγίσουμε τον αριθμό Bates. + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **Pro tip:** Αν χρειάζεστε πολλαπλές σελίδες, απλώς καλέστε `pdfDocument.Pages.Add()` σε βρόχο. Κάθε κλήση επιστρέφει ένα νέο αντικείμενο `Page` που μπορείτε να προσαρμόσετε ανεξάρτητα. + +## Βήμα 3: Πώς να προσθέσετε αρίθμηση Bates – Δημιουργία του TextStamp + +Τώρα έρχεται η ουσία: ο **Bates number**. Στο Aspose.Pdf είναι απλώς ένα `TextStamp` με ειδική σημαία artifact. + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **Why we set `Artifact`**: Ορισμένα προγράμματα ανάγνωσης PDF εκθέτουν τους αριθμούς Bates ως αναζητήσιμα μεταδεδομένα. Η σημαία του σφραγίσματος ως artifact `BatesNumbering` εξασφαλίζει ότι τα επόμενα εργαλεία θα το αναγνωρίσουν αυτόματα. + +## Βήμα 4: Τοποθέτηση σφραγίσματος στη σελίδα + +Με το σφραγίδιο έτοιμο, τώρα **place stamp on page**. Αυτό είναι το βήμα όπου ο οπτικός αριθμός εμφανίζεται πραγματικά στο PDF. + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **Edge case:** Αν χρειάζεστε τον αριθμό να αυξάνεται σε κάθε σελίδα, θα επαναλάβετε το `pdfDocument.Pages` και θα ενημερώσετε το `batesStamp.Value` πριν καλέσετε το `AddStamp`. Το παράδειγμα εδώ το κρατά απλό με ένα στατικό “Bates‑001”. + +## Βήμα 5: Αποθήκευση και επαλήθευση του αποτελέσματος + +Τέλος, αποθηκεύουμε το PDF στο δίσκο. Επιλέξτε έναν φάκελο στον οποίο έχετε δικαίωμα εγγραφής· διαφορετικά, θα αντιμετωπίσετε `UnauthorizedAccessException`. + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +Όταν ανοίξετε το `BatesStamped.pdf` σε οποιονδήποτε προβολέα, θα πρέπει να δείτε ένα μικρό “Bates‑001” τοποθετημένο κομψά στην κάτω‑δεξιά γωνία της κενής σελίδας. + +> **Expected output:** +> ![PDF with Bates number stamp](image-placeholder.png "PDF with Bates number stamp") +> *Κείμενο alt: PDF με σφραγίδα αριθμού Bates στην κάτω‑δεξιά γωνία.* + +Αν ο αριθμός δεν εμφανίζεται, ελέγξτε ξανά τις τιμές περιθωρίων και βεβαιωθείτε ότι το μέγεθος της σελίδας δεν είναι πολύ μικρό (το προεπιλεγμένο A4 λειτουργεί καλά). Επίσης, επιβεβαιώστε ότι η σημαία `Artifact` δεν αφαιρείται από κανένα εργαλείο μετα-επεξεργασίας. + +## Πλήρες λειτουργικό παράδειγμα + +Παρακάτω είναι το πλήρες, έτοιμο για αντιγραφή πρόγραμμα. Περιλαμβάνει όλες τις οδηγίες `using` και σχόλια για να παραμείνετε προσανατολισμένοι. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +Εκτελέστε το πρόγραμμα, ανοίξτε το PDF, και θα δείτε τον αριθμό Bates ακριβώς εκεί που του είχαμε πει να τοποθετηθεί. 🎉 + +## Συνηθισμένες παραλλαγές & παγίδες + +| Scenario | What to Change | Why | +|----------|----------------|-----| +| **Multiple pages, incrementing numbers** | Loop through `pdfDocument.Pages`, set `batesStamp.Value = $"Bates-{i:D3}"` before `AddStamp` | Δίνει σε κάθε σελίδα ένα μοναδικό αναγνωριστικό, τυπικό για νομικά πακέτα | +| **Different placement (top‑left)** | Change `HorizontalAlignment = HorizontalAlignment.Left` and `VerticalAlignment = VerticalAlignment.Top` | Κάποιες οργανώσεις προτιμούν τον αριθμό στην κεφαλίδα αντί στο υποσέλιδο | +| **Custom font or color** | Set `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` | Βελτιώνει την αναγνωσιμότητα ή συμμορφώνεται με τις οδηγίες branding | +| **Adding an existing PDF as a background** | Load the source PDF with `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` | Χρήσιμο όταν χρειάζεται να σφραγίσετε πάνω σε μια προ‑δημιουργημένη φόρμα | + +## Συμπεράσματα + +Μόλις δείξαμε πώς να **create PDF document**, **add blank page pdf**, και **add bates number** χρησιμοποιώντας το Aspose.Pdf για .NET, στη συνέχεια **place stamp on page** και να αποθηκεύσετε το αρχείο. Ο κώδικας είναι σκόπιμα συνοπτικός ώστε να μπορείτε να τον προσαρμόσετε σε μεγαλύτερες ροές εργασίας—είτε επεξεργάζεστε δεκάδες αρχεία είτε το ενσωματώνετε σε μια υπηρεσία web. + +Αν είστε έτοιμοι να προχωρήσετε παραπέρα, σκεφτείτε: + +- Αυτοματοποίηση της λογικής αύξησης για μεγάλα αρχεία υποθέσεων. +- Ενσωμάτωση της δημιουργίας PDF σε ένα ASP.NET Core API. +- Προσθήκη ασφαλείας (προστασία με κωδικό) με `pdfDocument.Encrypt(...)`. + +Μη διστάσετε να πειραματιστείτε, να σπάσετε πράγματα, και να θέσετε ερωτήσεις στα σχόλια. Καλή προγραμματιστική, και εύχομαι τα PDF σας να είναι πάντα τέλεια σφραγισμένα! + +{{< /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/programming-with-tagged-pdf/_index.md b/pdf/greek/net/programming-with-tagged-pdf/_index.md index 364e8c8ed..f3ea2fcc1 100644 --- a/pdf/greek/net/programming-with-tagged-pdf/_index.md +++ b/pdf/greek/net/programming-with-tagged-pdf/_index.md @@ -22,7 +22,7 @@ | --- | --- | | [Στοιχεία Πρόσβασης Παιδιών](./access-children-elements/) | Μάθετε πώς να αποκτάτε πρόσβαση και να τροποποιείτε θυγατρικά στοιχεία σε PDF με ετικέτες με το Aspose.PDF για .NET σε αυτό το βήμα προς βήμα εκπαιδευτικό βίντεο. | | [Προσθήκη στοιχείου δομής σε στοιχείο](./add-structure-element-into-element/) | Μάθετε πώς να προσθέτετε στοιχεία δομής προσβασιμότητας σε PDF χρησιμοποιώντας το Aspose.PDF για .NET σε αυτό το ολοκληρωμένο βήμα προς βήμα εκπαιδευτικό βίντεο. | -| [Δημιουργία στοιχείου δομής σημείωσης](./create-note-structure-element/) Μάθετε να δημιουργείτε στοιχεία δομής σημειώσεων σε PDF με το Aspose.PDF για .NET μέσω αυτού του λεπτομερούς, βήμα προς βήμα οδηγού. | +| [Δημιουργία στοιχείου δομής σημείωσης](./create-note-structure-element/) Μάθετε να δημιουργείτε στοιχεία δομής σημειώσεων σε PDF με το Aspose.PDF για .NET μέσω αυτού του λεπτομερούς, βήμα προς βήμα οδηγού. | | [Δημιουργία PDF με εικόνα με ετικέτα](./create-pdf-with-tagged-image/) | Μάθετε να δημιουργείτε ένα PDF με ετικέτες και εικόνες χρησιμοποιώντας το Aspose.PDF για .NET. Ακολουθήστε τον αναλυτικό οδηγό μας για προσβάσιμη και επαγγελματική δημιουργία εγγράφων. | | [Δημιουργία PDF με κείμενο με ετικέτες](./create-pdf-with-tagged-text/) | Μάθετε πώς να δημιουργείτε PDF με ετικέτες και προσβάσιμο περιεχόμενο χρησιμοποιώντας το Aspose.PDF για .NET σε αυτό το ολοκληρωμένο βήμα προς βήμα σεμινάριο. | | [Δημιουργία στοιχείων δομής](./create-structure-elements/) | Μάθετε πώς να δημιουργείτε στοιχεία δομής σε PDF με το Aspose.PDF για .NET. Ένας οδηγός βήμα προς βήμα για βελτιωμένη προσβασιμότητα και οργάνωση PDF. | @@ -45,6 +45,7 @@ | [Στοιχεία δομής κειμένου σε αρχείο PDF](./text-structure-elements/) Μάθετε να χειρίζεστε στοιχεία δομής κειμένου σε PDF με το Aspose.PDF για .NET. Αυτός ο οδηγός βήμα προς βήμα καλύπτει όλα όσα χρειάζεστε για να δημιουργήσετε δομημένα PDF. | | [Επικύρωση αρχείου PDF](./validate-pdf/) | Μάθετε πώς να επικυρώνετε ένα αρχείο PDF με το Aspose.PDF για .NET. Ελέγξτε τη συμμόρφωσή του με τα πρότυπα και δημιουργήστε μια αναφορά επικύρωσης. | | [Δημιουργία PDF με ετικέτες σε C# – Πλήρης οδηγός βήμα προς βήμα](./create-tagged-pdf-in-c-complete-step-by-step-guide/) | Μάθετε πώς να δημιουργήσετε PDF με ετικέτες χρησιμοποιώντας C# και Aspose.PDF για .NET σε αυτόν τον πλήρη οδηγό βήμα‑βήμα. | +| [Δημιουργία PDF με ετικέτες σε C# – Οδηγός βήμα‑βήμα](./create-tagged-pdf-in-c-step-by-step-guide/) | Μάθετε πώς να δημιουργήσετε PDF με ετικέτες χρησιμοποιώντας C# και Aspose.PDF για .NET σε αυτόν τον οδηγό βήμα‑βήμα. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/greek/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/greek/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..e8cfc35bb --- /dev/null +++ b/pdf/greek/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,283 @@ +--- +category: general +date: 2026-03-06 +description: Δημιουργήστε PDF με ετικέτες χρησιμοποιώντας το Aspose.Pdf σε C#. Μάθετε + πώς να προσθέσετε εικόνα σε PDF, να ορίσετε τη θέση της εικόνας και να ετικετοποιήσετε + το PDF για προσβασιμότητα. +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: el +og_description: Δημιουργήστε PDF με ετικέτες χρησιμοποιώντας το Aspose.Pdf. Αυτός + ο οδηγός δείχνει πώς να προσθέσετε εικόνα σε PDF, να ορίσετε τη θέση της εικόνας + και να ετικετοποιήσετε το PDF για προσβασιμότητα. +og_title: Δημιουργία PDF με ετικέτες σε C# – Πλήρης οδηγός +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: Δημιουργία PDF με ετικέτες σε C# – Οδηγός βήμα‑βήμα +url: /el/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Δημιουργία Tagged PDF σε C# – Πλήρης Οδηγός + +Έχετε ποτέ χρειαστεί να **create tagged PDF** σε C# αλλά δεν ήξερες από πού να ξεκινήσεις; Δεν είστε μόνοι· η προσβασιμότητα είναι απαραίτητη αυτές τις μέρες, και ένα tagged PDF είναι η ραχοκοκαλιά ενός συμμορφωμένου εγγράφου. Σε αυτόν τον οδηγό θα περάσουμε από ένα πραγματικό παράδειγμα που **adds image to PDF**, ορίζει τη θέση του figure και δείχνει **how to tag PDF** χρησιμοποιώντας το Aspose.Pdf. Στο τέλος θα έχετε ένα πλήρως tagged PDF που μπορείτε να στείλετε σε οποιονδήποτε. + +Θα καλύψουμε τα πάντα, από τη φόρτωση ενός υπάρχοντος αρχείου μέχρι την αποθήκευση του τελικού αποτελέσματος, ώστε να μην χρειάζεται να ψάχνετε για “how to add image” αλλού. Χωρίς περιττές πληροφορίες—μόνο μια σαφής, εκτελέσιμη λύση που λειτουργεί με το Aspose.Pdf 23.8 (η πιο πρόσφατη έκδοση τη στιγμή της συγγραφής). Πάρτε το IDE σας και ας ξεκινήσουμε. + +--- + +## Τι Θα Χρειαστείτε + +- **Aspose.Pdf for .NET** (NuGet package `Aspose.Pdf`). +- .NET 6+ (or .NET Framework 4.7.2+). +- Ένα αρχείο PDF εισόδου που ήδη έχει λογική δομή (δηλαδή είναι ήδη tagged) – αν όχι, μπορείτε να ενεργοποιήσετε την ετικετοποίηση μέσω `pdfDocument.TaggedContent = true`. +- Ένα αρχείο εικόνας (`image.png`) που θέλετε να ενσωματώσετε. + +Αυτό είναι όλο. Δεν χρειάζονται επιπλέον βιβλιοθήκες, ούτε περίπλοκα αρχεία ρυθμίσεων. + +--- + +## Βήμα 1: Φόρτωση του Υπάρχοντος Εγγράφου PDF (Δημιουργία Βάσης Tagged PDF) + +Το πρώτο που κάνουμε είναι να ανοίξουμε το PDF που θέλουμε να βελτιώσουμε. Η φόρτωση του αρχείου μας δίνει πρόσβαση στη λογική του δομή, η οποία είναι απαραίτητη για τις ροές εργασίας **create tagged pdf**. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*Γιατί είναι σημαντικό:* Χωρίς δέντρο ετικετών το PDF δεν θα μεταδίδει δομικές πληροφορίες σε προγράμματα ανάγνωσης οθόνης. Η ενεργοποίηση της ετικετοποίησης εξασφαλίζει ότι οποιαδήποτε νέα στοιχεία προσθέτουμε (όπως ένα figure) κληρονομούν τη σωστή ιεραρχία. + +--- + +## Βήμα 2: Πρόσβαση στη Ρίζα της Λογικής Δομής (How to Tag PDF) + +Τώρα προσεγγίζουμε τη λογική δομή του PDF. Το στοιχείο ρίζας είναι ο container για όλες τις ετικέτες—σκεφτείτε το ως το περίγραμμα του εγγράφου. + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*Εξήγηση:* Το `logicalRoot` μας επιτρέπει να προσθέσουμε νέες ετικέτες όπως `
` ή `
`. Αυτό είναι ο πυρήνας του **how to tag PDF** προγραμματιστικά. + +--- + +## Βήμα 3: Δημιουργία Ετικέτας Figure και Ορισμός Θέσης (Set Figure Position) + +Μια ετικέτα *Figure* ομαδοποιεί οπτικό περιεχόμενο με προαιρετική λεζάντα. Θα δημιουργήσουμε μία, θα ορίσουμε τη θέση της και θα την επισυνάψουμε στη ρίζα. + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*Γιατί ορίζουμε θέση:* Το βήμα **set figure position** καθορίζει πού θα τοποθετηθεί το οπτικό στοιχείο στη σελίδα. Αν το παραλείψετε, το figure μπορεί να εμφανιστεί σε απροσδόκητη θέση ή να είναι αόρατο για τις βοηθητικές τεχνολογίες. + +--- + +## Βήμα 4: Προσθήκη Οπτικής Αναπαράστασης – Εισαγωγή Εικόνας (Add Image to PDF) + +Με την ετικέτα στη θέση της, χρειαζόμαστε μια πραγματική εικόνα. Αυτό είναι το τμήμα που απαντά στο **add image to pdf**. + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*Κύριο σημείο:* Οι συντεταγμένες του rectangle πρέπει να ταιριάζουν με το `figureTag.Position` που ορίσαμε νωρίτερα· διαφορετικά το figure και το οπτικό του περιεχόμενο θα είναι ασύγχρονα, διασπώντας την προσβασιμότητα. + +--- + +## Βήμα 5: Αποθήκευση του Ενημερωμένου PDF (Ολοκλήρωση Δημιουργίας Tagged PDF) + +Τέλος, αποθηκεύουμε τις αλλαγές σε νέο αρχείο. Η διατήρηση του αρχικού αμετάβλητου είναι καλή πρακτική. + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +Σε αυτό το στάδιο έχετε ένα αρχείο **create tagged pdf** που περιέχει μια σωστά τοποθετημένη εικόνα τυλιγμένη σε ετικέτα `
`. Ανοίξτε το `output.pdf` στο Adobe Acrobat και ελέγξτε το πάνελ *Tags* – θα πρέπει να δείτε έναν κόμβο `Figure` κάτω από τη ρίζα. + +--- + +## Πλήρες, Έτοιμο‑για‑Εκτέλεση Παράδειγμα + +Παρακάτω βρίσκεται το πλήρες πρόγραμμα που μπορείτε να αντιγράψετε‑επικολλήσετε σε μια εφαρμογή console. Όλα τα βήματα είναι ήδη στη σωστή σειρά. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### Αναμενόμενο Αποτέλεσμα + +- `output.pdf` ανοίγει με την εικόνα να εμφανίζεται στο (100, 150) points, με μέγεθος 300 × 200 points. +- Το πάνελ *Tags* δείχνει ένα στοιχείο `Figure` που περιβάλλει την εικόνα. +- Τα εργαλεία ανάγνωσης οθόνης αναγγέλλουν “Figure” πριν περιγράψουν την εικόνα, ικανοποιώντας τα βασικά πρότυπα προσβασιμότητας. + +--- + +## Συχνές Ερωτήσεις & Ακραίες Περιπτώσεις + +### Τι γίνεται αν το PDF προέλευσης δεν είναι ήδη tagged; + +Το Aspose.Pdf σας επιτρέπει να ενεργοποιήσετε την ετικετοποίηση ορίζοντας `pdfDocument.TaggedContent.IsTagged = true;`. Η βιβλιοθήκη θα δημιουργήσει ένα προεπιλεγμένο δέντρο ετικετών, μετά το οποίο μπορείτε να προσθέσετε προσαρμοσμένες ετικέτες όπως φαίνεται. + +### Μπορώ να προσθέσω λεζάντα στο figure; + +Ναι. Μετά τη δημιουργία του `figureTag`, μπορείτε να επισυνάψετε ένα `Paragraph` με ένα `TextFragment` και να ορίσετε το `Tag` του σε `Caption`. Παράδειγμα: + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### Πώς τοποθετώ το figure σε διαφορετική σελίδα; + +Αντικαταστήστε το `var firstPage = pdfDocument.Pages[1];` με τον επιθυμητό δείκτη σελίδας, π.χ., `pdfDocument.Pages[3]`. Θυμηθείτε να προσαρμόσετε τις συντεταγμένες `Position` αν το μέγεθος της σελίδας διαφέρει. + +### Τι γίνεται αν χρειαστεί να ετικετοποιήσω πολλές εικόνες; + +Δημιουργήστε ένα νέο `Figure` για κάθε εικόνα, δώστε σε κάθε ένα μοναδική `Position` και προσθέστε το αντίστοιχο αντικείμενο `Image` στη σωστή σελίδα. Η επανάληψη πάνω σε μια συλλογή εικόνων λειτουργεί καλά. + +### Λειτουργεί αυτό με συμμόρφωση PDF/A; + +Το Aspose.Pdf υποστηρίζει PDF/A‑1b, PDF/A‑2b και PDF/A‑3b. Κατά τη δημιουργία εγγράφου PDF/A, βεβαιωθείτε ότι έχετε ορίσει τη λειτουργία συμμόρφωσης πριν την αποθήκευση: + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +Η λογική ετικετοποίησης παραμένει η ίδια. + +--- + +## Επαγγελματικές Συμβουλές & Πιθανά Προβλήματα + +- **Pro tip:** Χρησιμοποιείτε πάντα απόλυτες διαδρομές ή `Path.Combine` για να αποφύγετε σφάλματα αρχείου‑δεν‑βρέθηκε κατά την εκτέλεση. +- **Watch out for:** Ασυμφωνία συντεταγμένων μεταξύ της ετικέτας `Figure` και του rectangle `Image`—οι βοηθητικές τεχνολογίες βασίζονται σε αυτή τη στοίχιση. +- **Performance note:** Αν επεξεργάζεστε πολλές σελίδες, τυλίξτε το stream της εικόνας σε ένα μπλοκ `using` για να ελευθερώσετε γρήγορα τους πόρους. +- **Version check:** Το API που φαίνεται λειτουργεί με Aspose.Pdf 23.8+. Παλαιότερες εκδόσεις μπορεί να έχουν ελαφρώς διαφορετικά ονόματα κλάσεων (π.χ., `LogicalStructureElement` αντί για `FigureElement`). + +--- + +## Συμπέρασμα + +Μόλις **create tagged pdf** από την αρχή μέχρι το τέλος, παρουσιάσαμε **add image to pdf**, και δείξαμε πώς να **set figure position** ενώ απαντήσαμε στο **how to tag pdf** και **how to add image** σε ένα ενιαίο, συνεκτικό παράδειγμα. Ο κώδικας είναι έτοιμος για εκτέλεση, οι εξηγήσεις καλύπτουν το «γιατί» κάθε βήματος, και τώρα έχετε μια σταθερή βάση για τη δημιουργία προσβάσιμων PDF σε C#. + +Έτοιμοι για την επόμενη πρόκληση; Δοκιμάστε να προσθέσετε πίνακες με ετικέτες `
`, ή να ενσωματώσετε ένα επίπεδο συμμόρφωσης PDF/A‑2b για αρχειοθέτηση. Το ίδιο μοτίβο—φόρτωση, πρόσβαση στη λογική δομή, δημιουργία ετικέτας, προσθήκη οπτικού περιεχομένου, αποθήκευση—εφαρμόζεται σε πολλές εργασίες προσβασιμότητας PDF. + +Αν αντιμετωπίσετε πρόβλημα ή έχετε μια περίπτωση χρήσης που δεν καλύπτεται εδώ, αφήστε ένα σχόλιο παρακάτω. Καλή ετικετοποίηση και απολαύστε τη δημιουργία PDF που μπορεί να διαβάσει όλοι! + +![Διάγραμμα που δείχνει ένα PDF με ετικέτα Figure και εικόνα – απεικονίζει πώς να δημιουργήσετε tagged pdf](placeholder-image.png "παράδειγμα create tagged pdf") + +{{< /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/digital-signatures/_index.md b/pdf/hindi/net/digital-signatures/_index.md index 0e7e44bcb..d53772e41 100644 --- a/pdf/hindi/net/digital-signatures/_index.md +++ b/pdf/hindi/net/digital-signatures/_index.md @@ -19,10 +19,13 @@ ### [.NET के लिए Aspose.PDF के साथ PDF में डिजिटल हस्ताक्षर: एक व्यापक गाइड](./digital-signature-aspose-pdf-net-tutorial/) -### [.NET के लिए Aspose.PDF का उपयोग करके कस्टम अपीयरेंस के साथ PDF पर डिजिटल हस्ताक्षर करें: एक चरण-दर-चरण मार्गदर्शिका](./digitally-sign-pdf-custom-appearance-aspose-pdf-net/) +### [.NET के लिए Aspose.PDF का उपयोग करके कस्टम अपीयरेंस के साथ PDF पर डिजिटल हस्ताक्षर करें: एक चरण-दर-श...](./digitally-sign-pdf-custom-appearance-aspose-pdf-net/) ### [Aspose.PDF के साथ PDF से डिजिटल हस्ताक्षर जानकारी निकालें](./extract-digital-signature-info-from-pdfs-aspose-pdf/) +### [C# के साथ PDF में हस्ताक्षर पढ़ें – चरण‑दर‑चरण गाइड](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +C# का उपयोग करके PDF फ़ाइलों में डिजिटल हस्ताक्षर पढ़ने की विस्तृत प्रक्रिया सीखें। + ### [.NET के लिए Aspose.PDF के साथ PDF हस्ताक्षर भाषा कैसे बदलें](./change-pdf-signature-language-aspose-net/) ### [.NET के लिए Aspose.PDF का उपयोग करके PDF हस्ताक्षर कैसे बनाएं और सत्यापित करें](./create-verify-pdf-signatures-aspose-net/) diff --git a/pdf/hindi/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/hindi/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..36884af3e --- /dev/null +++ b/pdf/hindi/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-06 +description: C# का उपयोग करके PDF में हस्ताक्षर कैसे पढ़ें। C# में PDF दस्तावेज़ लोड + करना, PDF हस्ताक्षरों की सूची बनाना, और तेज़ एवं विश्वसनीय तरीके से PDF के डिजिटल + हस्ताक्षर प्राप्त करना सीखें। +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: hi +og_description: C# का उपयोग करके PDF में हस्ताक्षर कैसे पढ़ें। यह गाइड दिखाता है कि + C# में PDF दस्तावेज़ कैसे लोड करें, PDF हस्ताक्षरों की सूची बनाएं, और कुछ आसान चरणों + में डिजिटल हस्ताक्षर प्राप्त करें। +og_title: C# के साथ PDF में हस्ताक्षर कैसे पढ़ें – पूर्ण गाइड +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: C# के साथ PDF में हस्ताक्षर कैसे पढ़ें – चरण‑दर‑चरण मार्गदर्शिका +url: /hi/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# के साथ PDF में हस्ताक्षर कैसे पढ़ें – पूर्ण गाइड + +क्या आपने कभी सोचा है **हस्ताक्षर कैसे पढ़ें** जो पहले से ही PDF फ़ाइल में एम्बेडेड हैं? शायद आप एक कंप्लायंस डैशबोर्ड बना रहे हैं, या आपको डेटाबेस में जाने से पहले साइन किए गए कॉन्ट्रैक्ट्स का ऑडिट करना है। अच्छी खबर यह है कि कुछ ही पंक्तियों के C# कोड और Aspose.Pdf लाइब्रेरी के साथ आप फ़ाइल से सीधे हस्ताक्षर नाम निकाल सकते हैं—बिना मैन्युअल निरीक्षण के। + +इस ट्यूटोरियल में हम C# में PDF दस्तावेज़ लोड करने, PDF हस्ताक्षर सूचीबद्ध करने, और डिजिटल हस्ताक्षर PDF जानकारी प्राप्त करने की प्रक्रिया देखेंगे। अंत तक आपके पास एक तैयार‑चलाने‑योग्य कंसोल ऐप होगा जो मिलने वाले प्रत्येक हस्ताक्षर का नाम प्रिंट करेगा, साथ ही पासवर्ड‑सुरक्षित फ़ाइलों जैसे एज केस को संभालने के टिप्स भी देगा। + +## आवश्यकताएँ + +- .NET 6.0 या बाद का (कोड .NET Framework 4.6+ के साथ भी काम करता है) +- Aspose.Pdf for .NET (आप Aspose वेबसाइट से एक मुफ्त टेम्पररी लाइसेंस प्राप्त कर सकते हैं) +- एक PDF जिसमें पहले से एक या अधिक डिजिटल हस्ताक्षर मौजूद हैं (सैंपल `MultiSigned.pdf` रिपॉज़िटरी में शामिल है) + +> **Pro tip:** यदि आप Visual Studio का उपयोग कर रहे हैं, तो *Nullable Reference Types* को सक्षम करें ताकि null‑संबंधी बग्स को जल्दी पकड़ सकें। + +## चरण 1: C# में PDF दस्तावेज़ लोड करें + +सबसे पहले हमें एक `Document` ऑब्जेक्ट चाहिए जो डिस्क पर PDF फ़ाइल का प्रतिनिधित्व करता है। Aspose.Pdf का `Document` क्लास सरल टेक्स्ट एक्सट्रैक्शन से लेकर जटिल फ़ॉर्म प्रोसेसिंग तक सब कुछ संभालता है। + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**Why this matters:** PDF लोड करने से यह सत्यापित होता है कि फ़ाइल मौजूद है और पढ़ी जा सकती है। यदि फ़ाइल भ्रष्ट है या पथ गलत है, तो हम जल्दी बाहर निकलते हैं बजाय इसके कि बाद में हस्ताक्षर सूचीबद्ध करने की कोशिश में अस्पष्ट त्रुटियों का सामना करना पड़े। + +## चरण 2: एक `PdfFileSignature` हेल्पर बनाएं + +Aspose सामान्य PDF हैंडलिंग (`Document`) को हस्ताक्षर‑विशिष्ट ऑपरेशन्स (`PdfFileSignature`) से अलग करता है। इस हेल्पर को इंस्टैंशिएट करने से हमें `GetSignatureNames()` जैसी मेथड्स तक पहुंच मिलती है। + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**Why this matters:** `PdfFileSignature` क्लास जानता है कि PDF के `/Sig` डिक्शनरी एंट्रीज़ को कैसे पार्स किया जाए, जहाँ डिजिटल हस्ताक्षर स्थित होते हैं। इसका उपयोग करने से हम सुनिश्चित करते हैं कि हम हस्ताक्षर ठीक उसी तरह पढ़ रहे हैं जैसा वे जोड़े गए थे, और किसी भी क्रिप्टोग्राफ़िक मेटाडेटा को संरक्षित रखते हैं। + +## चरण 3: सभी हस्ताक्षर नाम प्राप्त करें + +अब आता है **हस्ताक्षर कैसे पढ़ें** का मुख्य भाग: `GetSignatureNames()` को कॉल करें। यह मेथड एक स्ट्रिंग एरे रिटर्न करता है जिसमें प्रत्येक हस्ताक्षर के *फ़ील्ड नाम* होते हैं। + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**What you’ll see:** यदि `MultiSigned.pdf` में तीन हस्ताक्षर हैं जिनके नाम `Signature1`, `Signature2`, और `Signature3` हैं, तो कंसोल आउटपुट इस प्रकार होगा: + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## चरण 4: (वैकल्पिक) प्रत्येक हस्ताक्षर की वैधता सत्यापित करें + +नाम पढ़ना अक्सर पर्याप्त होता है, लेकिन कई प्रोजेक्ट्स को यह भी जानना पड़ता है कि प्रत्येक हस्ताक्षर अभी भी वैध है या नहीं। Aspose आपको फ़ील्ड नाम के आधार पर हस्ताक्षर वैधता जांचने की सुविधा देता है: + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **Edge case:** यदि PDF पासवर्ड‑सुरक्षित है, तो `VerifySignature` कॉल करने से पहले आपको पासवर्ड प्रदान करना होगा। दस्तावेज़ लोड करने के तुरंत बाद `pdfDocument.Encrypt.Password = "yourPassword";` का उपयोग करें। + +## पूर्ण कार्यशील उदाहरण + +नीचे पूरा प्रोग्राम दिया गया है जिसे आप नए कंसोल प्रोजेक्ट (`dotnet new console`) में कॉपी‑पेस्ट कर सकते हैं। इसमें सभी चरण, एरर हैंडलिंग, और वैकल्पिक सत्यापन शामिल हैं। + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**Expected output** (मान लेते हैं कि तीन वैध हस्ताक्षर हैं): + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## सामान्य विविधताओं को संभालना + +| Situation | What to Change | Why | +|-----------|----------------|-----| +| **Password‑protected PDF** | `pdfDocument.Encrypt.Password = "yourPwd";` को `PdfFileSignature` बनाने से पहले सेट करें। | पासवर्ड के बिना सिग्नेचर डिक्शनरी एन्क्रिप्टेड रहती हैं और `GetSignatureNames()` एक खाली एरे रिटर्न करता है। | +| **Large PDFs ( > 100 MB )** | परिणामों को पेज करने के लिए `pdfSigner.GetSignatureNames(0, 10)` का उपयोग करें (पहला पैरामीटर = प्रारंभिक इंडेक्स)। | सभी सिग्नेचर सूची को एक साथ लोड करने से बहुत मेमोरी खर्च हो सकती है। | +| **No signatures at all** | कोड पहले से ही एक मैत्रीपूर्ण चेतावनी प्रिंट करता है। इसे ऑडिट इवेंट के रूप में लॉग करने पर विचार करें। | नीचे के प्रोसेस को यह तय करने में मदद करता है कि फ़ाइल को अस्वीकार किया जाए या उपयोगकर्ता से साइन की हुई संस्करण मांगा जाए। | +| **Custom signature field names** | यह मेथड साइनिंग के दौरान उपयोग किए गए फ़ील्ड नाम को रिटर्न करता है, जैसे `EmployeeApproval`। अतिरिक्त कार्य की आवश्यकता नहीं है। | आपको हस्ताक्षरों को व्यावसायिक भूमिकाओं से मैप करने की सुविधा देता है। | + +## सर्वोत्तम प्रथाएँ और टिप्स + +- **Dispose objects**: `using var pdfSigner` पैटर्न यह सुनिश्चित करता है कि नेटिव रिसोर्सेज तुरंत रिलीज़ हो जाएँ। +- **License early**: `Main` की शुरुआत में `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` कॉल करें ताकि इवैल्यूएशन वाटरमार्क न आए। +- **Thread safety**: यदि आप कई PDFs को समानांतर में प्रोसेस कर रहे हैं, तो प्रत्येक थ्रेड के लिए एक अलग `PdfFileSignature` इंस्टैंसिएट करें। यह क्लास थ्रेड‑सेफ़ नहीं है। +- **Logging**: प्रोडक्शन में `Console.WriteLine` को एक स्ट्रक्चर्ड लॉगर (Serilog, NLog) से बदलें ताकि आप ऑडिट ट्रेल्स के लिए सटीक हस्ताक्षर नाम कैप्चर कर सकें। +- **Version check**: यह कोड Aspose.Pdf for .NET 23.10 और उसके बाद के संस्करणों के साथ काम करता है। पुराने संस्करणों में `PdfFileSignature` के बजाय `PdfSignature` की आवश्यकता हो सकती है। + +## निष्कर्ष + +हमने C# का उपयोग करके PDF से **हस्ताक्षर कैसे पढ़ें** को कवर किया है। PDF दस्तावेज़ लोड करके, एक `PdfFileSignature` हेल्पर बनाकर, और `GetSignatureNames()` कॉल करके, आप फ़ाइल में एम्बेडेड प्रत्येक डिजिटल हस्ताक्षर की सूची बना सकते हैं। वैकल्पिक सत्यापन भरोसे की एक परत जोड़ता है, और सैंपल कोड दिखाता है कि इसे वास्तविक‑दुनिया के कंसोल ऐप में कैसे इंटीग्रेट किया जाए। + +अगले कदम के लिए तैयार हैं? इसे Aspose के `DigitalSignatureUtil` के साथ मिलाकर साइनर सर्टिफ़िकेट निकालने की कोशिश करें, या हस्ताक्षर सूची को एक कंप्लायंस डैशबोर्ड में फ़ीड करें जो अनसाइन्ड कॉन्ट्रैक्ट्स को फ्लैग करता है। संभावनाएँ अनंत हैं—बस याद रखें **load PDF document C#**, **list PDF signatures**, और **get digital signatures PDF** जब भी आपको त्वरित ऑडिट चाहिए। + +कोडिंग का आनंद लें, और आपके PDFs हमेशा सुरक्षित रूप से साइन्ड रहें! + +{{< /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-conversion/_index.md b/pdf/hindi/net/document-conversion/_index.md index 4b6d53e4a..12c2c50fb 100644 --- a/pdf/hindi/net/document-conversion/_index.md +++ b/pdf/hindi/net/document-conversion/_index.md @@ -40,7 +40,7 @@ | [PDF को PNG में बदलें – C# में PDF पृष्ठों को PNG में परिवर्तित करें](./pdf-to-png-tutorial-convert-pdf-pages-to-png-in-c/) | इस चरण-दर-चरण ट्यूटोरियल के साथ .NET के लिए Aspose.PDF का उपयोग करके PDF पृष्ठों को PNG छवियों में बदलना सीखें। | | [पीडीएफ से पीपीटी](./pdf-to-ppt/) | इस चरण-दर-चरण मार्गदर्शिका के साथ .NET के लिए Aspose.PDF का उपयोग करके PDF को PPT में परिवर्तित करना सीखें। आसान, कुशल और प्रस्तुतियों के लिए एकदम सही। | | [पीडीएफ से एसवीजी](./pdf-to-svg/) | इस चरण-दर-चरण ट्यूटोरियल में जानें कि .NET के लिए Aspose.PDF का उपयोग करके PDF फ़ाइलों को SVG प्रारूप में कैसे परिवर्तित किया जाए। डेवलपर्स और डिज़ाइनरों के लिए बिल्कुल सही। | -| [पीडीएफ से टीईएक्स](./pdf-to-tex/) | इस चरण-दर-चरण मार्गदर्शिका के साथ .NET के लिए Aspose.PDF का उपयोग करके PDF को TeX में परिवर्तित करना सीखें। दस्तावेज़ प्रसंस्करण कौशल को बढ़ाने के इच्छुक डेवलपर्स के लिए बिल्कुल सही। | +| [पीडीएफ से टीईएक्स](./pdf-to-tex/) | इस चरण-दर-चरण मार्गदर्शिका के साथ .NET के लिए Aspose.PDF का उपयोग करके PDF को TeX में परिवर्तित करना सीखें। दस्तावेज़ प्रसंस्करण कौशल को बढ़ाने की इच्छुक डेवलपर्स के लिए बिल्कुल सही। | | [पीडीएफ से एक्सएलएस](./pdf-to-xls/) .NET के लिए Aspose.PDF का उपयोग करके PDF फ़ाइलों को आसानी से XLS प्रारूप में बदलें। सहज डेटा निष्कर्षण के लिए हमारे चरण-दर-चरण मार्गदर्शिका का पालन करें। | | [पीडीएफ से XML](./pdf-to-xml/) | इस व्यापक ट्यूटोरियल में जानें कि .NET के लिए Aspose.PDF का उपयोग करके PDF को XML में कैसे परिवर्तित किया जाए। कोड उदाहरणों के साथ चरण-दर-चरण मार्गदर्शिका शामिल है। | | [पीडीएफ से एक्सपीएस](./pdf-to-xps/) | इस चरण-दर-चरण मार्गदर्शिका के साथ .NET के लिए Aspose.PDF का उपयोग करके PDF को XPS में परिवर्तित करना सीखें। डेवलपर्स और दस्तावेज़ प्रसंस्करण के प्रति उत्साही लोगों के लिए बिल्कुल सही। | @@ -58,6 +58,8 @@ | [XML से PDFसेट छवि पथ](./xml-to-pdfset-image-path/) | जानें कि .NET के लिए Aspose.PDF का उपयोग करके XML को आसानी से PDF में कैसे परिवर्तित किया जाए। यह विस्तृत गाइड आपको सेटअप से लेकर पूरा होने तक की प्रक्रिया के बारे में चरण दर चरण बताता है। | | [XPS से PDF में](./xps-to-pdf/) इस चरण-दर-चरण ट्यूटोरियल के साथ .NET के लिए Aspose.PDF का उपयोग करके XPS फ़ाइलों को PDF में कनवर्ट करना सीखें। डेवलपर्स और दस्तावेज़ उत्साही लोगों के लिए बिल्कुल सही। | | [C# में PDF को PDF/X‑4 में परिवर्तित करें – चरण-दर-चरण ASP.NET PDF ट्यूटोरियल](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | इस ट्यूटोरियल में .NET के लिए Aspose.PDF का उपयोग करके PDF को PDF/X‑4 फ़ॉर्मेट में बदलना सीखें। | +| [Aspose PDF ट्यूटोरियल: C# में PDF को PDF/X‑4 में परिवर्तित करें](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) | इस ट्यूटोरियल में .NET के लिए Aspose.PDF का उपयोग करके PDF को PDF/X‑4 फ़ॉर्मेट में बदलना सीखें। | + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} diff --git a/pdf/hindi/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/hindi/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..85211843f --- /dev/null +++ b/pdf/hindi/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-03-06 +description: Aspose PDF ट्यूटोरियल दिखाता है कि C# में Aspose का उपयोग करके PDF दस्तावेज़ + को कैसे लोड करें, PDF को PDF/X‑4 में कैसे परिवर्तित करें, और परिवर्तित PDF को प्रभावी + ढंग से कैसे सहेजें। +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: hi +og_description: Aspose PDF ट्यूटोरियल बताता है कि C# में PDF दस्तावेज़ को कैसे लोड + करें, उसे PDF/X‑4 फ़ॉर्मेट में कैसे परिवर्तित करें, और स्पष्ट कोड उदाहरणों के साथ + परिवर्तित PDF को कैसे सहेजें। +og_title: 'Aspose PDF ट्यूटोरियल: C# में PDF को PDF/X‑4 में बदलें' +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: 'Aspose PDF ट्यूटोरियल: C# में PDF को PDF/X‑4 में बदलें' +url: /hi/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose PDF ट्यूटोरियल: C# में PDF को PDF/X‑4 में बदलें + +क्या आपने कभी सोचा है कि Aspose का उपयोग करके एक सामान्य PDF को बिना किसी परेशानी के PDF/X‑4 फ़ाइल में कैसे बदला जाए? आप अकेले नहीं हैं—डेवलपर्स अक्सर **load PDF document C#**‑स्टाइल, इसे कन्वर्ट करने और फिर **save the converted PDF** को डाउनस्ट्रीम वर्कफ़्लोज़ के लिए आवश्यक होते हैं। इस गाइड में, हम नवीनतम Aspose.Pdf for .NET का उपयोग करके एक पूर्ण, चलाने योग्य उदाहरण के माध्यम से इसे दिखाएंगे। + +हम लाइब्रेरी को इंस्टॉल करने, स्रोत PDF को लोड करने, इसे PDF/X‑4 मानक में बदलने, और अंत में डिस्क पर परिणाम को सहेजने तक सब कुछ कवर करेंगे। अंत तक आप इस सामान्य कन्वर्ज़न परिदृश्य के लिए **how to use Aspose** की ठोस समझ प्राप्त करेंगे, साथ ही एज केस को संभालने के टिप्स भी। + +## आवश्यकताएँ + +- .NET 6.0 या बाद का (कोड .NET Framework पर भी काम करता है, लेकिन .NET 6+ की सलाह दी जाती है)। +- एक वैध Aspose.Pdf for .NET लाइसेंस फ़ाइल (या आप त्वरित परीक्षण के लिए इवैल्यूएशन मोड में चला सकते हैं)। +- Visual Studio 2022 या कोई भी C#‑compatible IDE। +- एक इनपुट PDF फ़ाइल जो `YOUR_DIRECTORY/input.pdf` पर स्थित है। + +`Aspose.Pdf` के अलावा कोई अतिरिक्त NuGet पैकेज आवश्यक नहीं हैं। + +## NuGet के माध्यम से Aspose.Pdf इंस्टॉल करें + +अपना टर्मिनल या पैकेज मैनेजर कंसोल खोलें और चलाएँ: + +```bash +dotnet add package Aspose.Pdf +``` + +यह नवीनतम स्थिर संस्करण (मार्च 2026 तक, संस्करण 23.12) को प्राप्त करता है। यदि आप UI पसंद करते हैं, तो NuGet पैकेज मैनेजर में *Aspose.Pdf* खोजें और इसे इंस्टॉल करें। + +## चरण 1: Aspose के साथ C# में PDF दस्तावेज़ लोड करें + +पहला काम यह है कि स्रोत PDF को मेमोरी में लाया जाए। Aspose की `Document` क्लास एंट्री पॉइंट है। + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**Why this matters:** फ़ाइल को लोड करने से यह सत्यापित होता है कि पथ मौजूद है और PDF भ्रष्ट नहीं है। `try/catch` ब्लॉक आपको त्रुटियों को सहजता से दिखाने का तरीका देता है—जब फ़ाइल उपयोगकर्ता अपलोड से आती है तो यह उपयोगी होता है। + +## चरण 2: PDF को PDF/X‑4 फ़ॉर्मेट में बदलें + +PDF/X‑4 PDF का एक उपसमुच्चय है जो विश्वसनीय प्रिंटिंग और अभिलेखीयकरण के लिए डिज़ाइन किया गया है। कन्वर्ज़न यह सुनिश्चित करता है कि सभी फ़ॉन्ट एम्बेडेड हों और फ़ाइल उद्योग मानकों के अनुरूप हो। + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**Why choose `ConvertErrorAction.Delete`?** कुछ लेगेसी PDFs में ऐसे तत्व होते हैं (जैसे असमर्थित एनोटेशन) जो अन्यथा कन्वर्ज़न को रोक देंगे। उन्हें हटाने से प्रक्रिया सुगम रहती है, लेकिन यदि आपको उन तत्वों को संरक्षित रखना है तो आउटपुट की समीक्षा करनी चाहिए। + +### वैकल्पिक: कन्वर्ज़न सफलता की जाँच करें + +यदि आप अतिरिक्त रूप से सुनिश्चित होना चाहते हैं, तो आप कन्वर्ज़न के बाद दस्तावेज़ के `PdfFormat` की जांच कर सकते हैं: + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## चरण 3: परिवर्तित PDF फ़ाइल को सहेजें + +अब जब दस्तावेज़ PDF/X‑4 रूप में है, इसे डिस्क पर वापस लिखें। + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**Result you’ll see:** `YOUR_DIRECTORY` में `Converted_PDFX4.pdf` नाम की नई फ़ाइल दिखाई देगी। इसे किसी भी PDF व्यूअर (जैसे Adobe Acrobat, Foxit आदि) में खोलें जो PDF/X‑4 को सपोर्ट करता हो और आप देखेंगे कि सभी फ़ॉन्ट एम्बेडेड हैं और दस्तावेज़ PDF/X‑4 स्पेसिफिकेशन के अनुरूप है। + +![aspose pdf tutorial - converting PDF to PDF/X‑4](/images/aspose-pdf-conversion.png "aspose pdf tutorial showing PDF/X‑4 conversion result") + +*इमेज का alt टेक्स्ट मुख्य कीवर्ड शामिल करता है, जो SEO आवश्यकताओं को पूरा करता है।* + +## पूर्ण End‑to‑End उदाहरण + +सब कुछ एक साथ मिलाकर, यहाँ एक स्व-निहित कंसोल ऐप है जिसे आप नई C# प्रोजेक्ट में कॉपी‑पेस्ट कर सकते हैं: + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +प्रोग्राम चलाएँ, और आपको प्रत्येक चरण की पुष्टि करने वाले कंसोल संदेश दिखेंगे। यदि कुछ गड़बड़ हो, तो त्रुटि संदेश आपको सही चरण की ओर इंगित करेंगे। + +## सामान्य प्रश्न और एज केस + +### यदि मुझे एनोटेशन रखना है तो क्या करें? + +`ConvertErrorAction.Delete` असमर्थित ऑब्जेक्ट्स, जिसमें कुछ एनोटेशन भी शामिल हैं, को हटा देता है। यदि उनका संरक्षण महत्वपूर्ण है तो `ConvertErrorAction.Keep` पर स्विच करें, लेकिन आउटपुट का परीक्षण करें—कुछ एनोटेशन अभी भी अनुपालन चेतावनियां दे सकते हैं। + +### बड़े PDFs (सैकड़ों MB) को कैसे संभालें? + +Aspose.Pdf फ़ाइल को स्ट्रीम करता है, इसलिए मेमोरी उपयोग सीमित रहता है। हालांकि, अत्यधिक बड़े फ़ाइलों के लिए आप `System.GC` थ्रेशोल्ड बढ़ा सकते हैं या दस्तावेज़ को भागों में प्रोसेस कर सकते हैं (जैसे, पेज‑दर‑पेज कन्वर्ट करना)। + +### क्या मैं बैच में कई फ़ाइलें कन्वर्ट कर सकता हूँ? + +बिल्कुल। लोडिंग‑कन्वर्ज़न‑सेविंग लॉजिक को `foreach` लूप में रखें जो PDFs की डायरेक्टरी पर इटररेट करता है। प्रत्येक फ़ाइल के लिए अपवादों को संभालना याद रखें ताकि एक खराब PDF पूरी बैच को रोक न दे। + +### क्या यह Linux पर .NET Core पर काम करता है? + +हां। Aspose.Pdf क्रॉस‑प्लेटफ़ॉर्म है। बस यह सुनिश्चित करें कि `Aspose.Pdf` NuGet पैकेज रेफ़रेंस किया गया है और यदि आपको टेक्स्ट रेंडरिंग चाहिए तो Linux होस्ट पर उपयुक्त फ़ॉन्ट फ़ाइलें स्थापित हों। + +## फील्ड से प्रो टिप्स + +- **Set a license early**: `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` – यह इवैल्यूएशन वॉटरमार्क को हटाता है और प्रदर्शन को बढ़ाता है। +- **Validate the output**: फ़ाइल शिप करने से पहले PDF/X‑4 अनुपालन की प्रोग्रामेटिक पुष्टि के लिए Aspose के `PdfFormatValidator` का उपयोग करें। +- **Log conversion time**: बड़े बैच में प्रत्येक कन्वर्ज़न (`Stopwatch`) को टाइम करने से प्रदर्शन गिरावट को पहचानने में मदद मिलती है। +- **Avoid hard‑coded paths**: `inputPath` और `outputPath` के लिए कॉन्फ़िगरेशन फ़ाइलें या एनवायरनमेंट वेरिएबल्स को प्राथमिकता दें—यह ऐप को पोर्टेबल बनाता है। + +## निष्कर्ष + +इस **Aspose PDF ट्यूटोरियल** में हमने **how to use Aspose** को **load PDF document C#**, इसे **PDF/X‑4** मानक में बदलने, और **save the converted PDF** के लिए एक साफ़, End‑to‑End वर्कफ़्लो दिखाया। यह स्निपेट पूरी तरह चलाने योग्य है, प्रत्येक चरण के *why* को समझाता है, और वास्तविक प्रोजेक्ट्स में आप जिन समस्याओं का सामना कर सकते हैं, उन्हें उजागर करता है। + +अब जब आपके पास बुनियादी जानकारी है, आप समाधान को विस्तारित कर सकते हैं—दर्जनों फ़ाइलों को बैच प्रोसेस करें, कस्टम मेटाडाटा एम्बेड करें, या कन्वर्ज़न को वेब API में इंटीग्रेट करें। संभावनाएँ असीम हैं, और Aspose.Pdf आपको जल्दी से वहाँ पहुँचने के लिए टूल्स प्रदान करता है। + +Aspose के साथ PDF प्रोसेसिंग के बारे में और प्रश्न हैं? टिप्पणी छोड़ें, आधिकारिक Aspose दस्तावेज़ देखें, या ऊपर दिए गए कोड के साथ प्रयोग करें। खुशहाल कन्वर्ज़न! + +{{< /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-creation/_index.md b/pdf/hindi/net/document-creation/_index.md index 3ca687d74..514373fdc 100644 --- a/pdf/hindi/net/document-creation/_index.md +++ b/pdf/hindi/net/document-creation/_index.md @@ -13,7 +13,7 @@ # .NET के लिए Aspose.PDF के साथ PDF दस्तावेज़ निर्माण ट्यूटोरियल -हमारे दस्तावेज़ निर्माण ट्यूटोरियल .NET में प्रोग्रामेटिक रूप से PDF फ़ाइलें बनाने के लिए व्यापक मार्गदर्शन प्रदान करते हैं। स्क्रैच से PDF दस्तावेज़ बनाने, टेम्प्लेट का उपयोग करने, अन्य प्रारूपों से कनवर्ट करने और दस्तावेज़-स्तरीय गुणों को लागू करने के तरीके जानने के लिए इन चरण-दर-चरण मार्गदर्शिकाओं का पालन करें। इन व्यावहारिक ट्यूटोरियल में विभिन्न दस्तावेज़ निर्माण परिदृश्यों के लिए पूर्ण कोड उदाहरण शामिल हैं, जो आपको अपने .NET अनुप्रयोगों में मज़बूत PDF जनरेशन क्षमताएँ बनाने में मदद करते हैं। +हमारे दस्तावेज़ निर्माण ट्यूटोरियल .NET में प्रोग्रामेटिक रूप से PDF फ़ाइलें बनाने के लिए व्यापक मार्गदर्शन प्रदान करते हैं। स्क्रैच से PDF दस्तावेज़ बनाने, टेम्प्लेट का उपयोग करने, अन्य प्रारूपों से कनवर्ट करने और दस्तावेज़-स्तरीय गुणों को लागू करने के तरीके जानने के लिए इन चरण-दर-स्टेप मार्गदर्शिकाओं का पालन करें। इन व्यावहारिक ट्यूटोरियल में विभिन्न दस्तावेज़ निर्माण परिदृश्यों के लिए पूर्ण कोड उदाहरण शामिल हैं, जो आपको अपने .NET अनुप्रयोगों में मज़बूत PDF जनरेशन क्षमताएँ बनाने में मदद करते हैं। ## उपलब्ध ट्यूटोरियल @@ -77,6 +77,12 @@ Aspose.PDF नेट के लिए एक कोड ट्यूटोरि ### [Aspose.PDF के साथ PDF दस्तावेज़ बनाएं – पृष्ठ जोड़ें, आकार बनाएं और सहेजें](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) Aspose.PDF का उपयोग करके पृष्ठ, आकार जोड़कर PDF बनाना और सहेजना सीखें। +### [Aspose.PDF के साथ PDF दस्तावेज़ बनाएं – चरण‑दर‑चरण मार्गदर्शिका](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +Aspose.PDF का उपयोग करके PDF दस्तावेज़ बनाने की पूरी प्रक्रिया सीखें, सेटअप से लेकर सहेजने तक। + +### [Aspose.PDF के साथ PDF दस्तावेज़ बनाएं – पूर्ण C# गाइड](./create-pdf-document-with-aspose-pdf-full-c-guide/) +Aspose.PDF के साथ C# में PDF दस्तावेज़ बनाने के लिए विस्तृत कोड उदाहरण और चरण‑दर‑चरण निर्देश। + ## अतिरिक्त संसाधन - [Aspose.PDF for Net दस्तावेज़ीकरण](https://docs.aspose.com/pdf/net/) diff --git a/pdf/hindi/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/hindi/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..5c0878e35 --- /dev/null +++ b/pdf/hindi/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-06 +description: C# में Aspose.PDF का उपयोग करके PDF दस्तावेज़ बनाएं – सीखें कैसे खाली + पृष्ठ, टेक्स्टबॉक्स, विजेट जोड़ें, और PDF को जल्दी सहेजें। +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: hi +og_description: Aspose.PDF के साथ C# में PDF दस्तावेज़ बनाएं। यह गाइड दिखाता है कि + कैसे खाली पृष्ठ, टेक्स्टबॉक्स, विजेट जोड़ें और PDF को कैसे सहेजें। +og_title: Aspose.PDF के साथ PDF दस्तावेज़ बनाएं – पूर्ण C# ट्यूटोरियल +tags: +- pdf +- csharp +- aspose +- forms +title: Aspose.PDF के साथ PDF दस्तावेज़ बनाएं – पूर्ण C# गाइड +url: /hi/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose.PDF के साथ PDF दस्तावेज़ बनाएं – पूर्ण C# गाइड + +क्या आपको कभी **pdf दस्तावेज़ बनाना** पड़ा है .NET प्रोजेक्ट में शुरू से और यह नहीं पता था कि कहाँ से शुरू करें? आप अकेले नहीं हैं; कई डेवलपर्स को वही समस्या आती है जब पहली आवश्यकता होती है “तीन पृष्ठों पर एक ही टेक्स्टबॉक्स के साथ भरने योग्य PDF बनाएं।” अच्छी खबर? Aspose.PDF के साथ आप कुछ ही लाइनों में एक प्रोफ़ेशनल‑लुक PDF तैयार कर सकते हैं। + +इस ट्यूटोरियल में हम पूरी प्रक्रिया को समझेंगे: नया PDF इनिशियलाइज़ करना, **खाली पृष्ठ जोड़ना**, **टेक्स्टबॉक्स** डालना, उसे **विजेट** एनोटेशन के साथ दोहराना, और अंत में **PDF को डिस्क पर सेव करना**। अंत तक आपके पास *MultiWidgetField.pdf* नाम की एक तैयार फ़ाइल होगी और प्रत्येक चरण का महत्व भी समझ आएगा। + +## इस गाइड में क्या कवर किया गया है + +- कोड लिखने से पहले आपको चाहिए ऐसी प्री‑रिक्विज़िट्स। +- Aspose.PDF for .NET का उपयोग करके PDF दस्तावेज़ बनाने की चरण‑दर‑चरण प्रक्रिया। +- खाली पृष्ठ, टेक्स्टबॉक्स फ़ॉर्म फ़ील्ड, और अतिरिक्त विजेट इंस्टेंस कैसे जोड़ें। +- सामान्य समस्याओं (जैसे पेज इंडेक्सिंग, फ़ील्ड नाम टकराव) को कैसे संभालें। +- एक पूर्ण, कॉपी‑एंड‑पेस्ट‑तैयार C# प्रोग्राम जिसे आप आज ही चला सकते हैं। + +कोई बाहरी डॉक्यूमेंटेशन लिंक नहीं, कोई “API डॉक्यूमेंट देखें” शॉर्टकट नहीं—आपको जो चाहिए वह सब यहाँ है। + +## प्री‑रिक्विज़िट्स + +शुरू करने से पहले सुनिश्चित करें कि आपके पास ये हैं: + +1. **.NET 6.0** (या कोई भी बाद का संस्करण) आपके मशीन पर इंस्टॉल हो। +2. एक सक्रिय **Aspose.PDF for .NET** लाइसेंस या अस्थायी इवैल्यूएशन की। +3. **Visual Studio 2022** या **VS Code** (C# एक्सटेंशन के साथ) जैसा डेवलपमेंट एनवायरनमेंट। + +बस इतना ही—और कुछ नहीं चाहिए। + +## चरण 1: PDF दस्तावेज़ को इनिशियलाइज़ करें और खाली पृष्ठ जोड़ें + +जब आप प्रोग्रामेटिकली **pdf दस्तावेज़ बनाते** हैं, तो सबसे पहले `Document` ऑब्जेक्ट बनाते हैं। इसे एक नई नोटबुक खोलने जैसा समझें। फिर आपको आवश्यक पृष्ठ जोड़ने होते हैं; हमारे मामले में तीन खाली पृष्ठ। + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**यह क्यों महत्वपूर्ण है:** Aspose.PDF पृष्ठों को आंतरिक रूप से ज़ीरो‑बेस्ड कलेक्शन के रूप में रखता है, लेकिन उसका पब्लिक API 1‑बेस्ड है, इसलिए `Pages[1]` वह पहला पृष्ठ है जो आपने अभी जोड़ा है। पहले से पृष्ठ जोड़ने से आपको फ़ॉर्म फ़ील्ड रखने के लिए एक कैनवास मिल जाता है, और यह बाद में डॉक्यूमेंट बढ़ने के बाद पृष्ठ डालने की तुलना में बहुत सस्ता पड़ता है। + +> **प्रो टिप:** यदि आपको केवल एक पृष्ठ चाहिए, तो लूप को स्किप करके `pdfDocument.Pages.Add()` को एक बार कॉल कर सकते हैं। लूप में कई पृष्ठ जोड़ने से कोड स्केलेबल रहता है। + +## चरण 2: पहले पृष्ठ पर एक TextBox फ़ॉर्म फ़ील्ड परिभाषित करें + +अब हमारे पास तीन खाली शीट्स हैं, चलिए पहले पृष्ठ पर एक **textbox** डालते हैं। `TextBoxField` एक फ़ॉर्म एलिमेंट है जिसमें उपयोगकर्ता PDF को Acrobat Reader या किसी भी फ़ॉर्म‑सपोर्टेड PDF व्यूअर में खोलने पर टाइप कर सकता है। + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**आयत (Rectangle) के निर्देशांक क्यों?** Aspose.PDF पॉइंट्स (इंच का 1/72) का उपयोग करता है। आयत `(100, 700, 300, 730)` टेक्स्टबॉक्स को पृष्ठ के लगभग मध्य में रखता है, 200 pt चौड़ा और 30 pt ऊँचा। अपने लेआउट के अनुसार इन संख्याओं को बदलें। + +> **सामान्य प्रश्न:** *क्या मुझे `Value` प्रॉपर्टी सेट करनी चाहिए?* +> नहीं, यह वैकल्पिक है। इसे खाली छोड़ने से फ़ील्ड खाली दिखेगा; डिफ़ॉल्ट वैल्यू सेट करने से उपयोगकर्ता को मार्गदर्शन मिल सकता है। + +## चरण 3: पृष्ठ 2 और 3 पर उसी फ़ील्ड के लिए Widget एनोटेशन जोड़ें + +एक **widget** किसी फ़ॉर्म फ़ील्ड का विशिष्ट पृष्ठ पर दृश्य प्रतिनिधित्व है। डिफ़ॉल्ट रूप से फ़ील्ड केवल उसी पृष्ठ पर दिखता है जहाँ इसे बनाया गया था। उसी टेक्स्टबॉक्स को अन्य पृष्ठों पर पुनः उपयोग करने के लिए, आपको फ़ील्ड की `Widgets` कलेक्शन में अतिरिक्त `WidgetAnnotation` ऑब्जेक्ट्स जोड़ने होते हैं। + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**विजेट्स क्यों?** इनके बिना उपयोगकर्ता केवल पेज 1 पर ही टेक्स्टबॉक्स देखेगा, भले ही बैकएंड में फ़ील्ड मौजूद हो। विजेट्स आपको एक ही लॉजिकल फ़ील्ड को कई पृष्ठों पर साझा करने की सुविधा देते हैं, जिससे दर्ज किया गया टेक्स्ट सभी पृष्ठों पर दिखता है जहाँ फ़ील्ड प्रदर्शित है। + +> **एज केस:** यदि आपको प्रत्येक पृष्ठ पर टेक्स्टबॉक्स को अलग कॉर्डिनेट्स पर रखना है, तो प्रत्येक विजेट के लिए `Rectangle` मान बदल दें। + +## चरण 4: फ़ील्ड को डॉक्यूमेंट के Form कलेक्शन में रजिस्टर करें + +Aspose.PDF सभी फ़ॉर्म फ़ील्ड्स का एक सेंट्रल रजिस्ट्री रखता है। फ़ील्ड को `Form` कलेक्शन में जोड़ने से वह PDF की इंटरैक्टिव फ़ॉर्म स्ट्रक्चर का हिस्सा बन जाता है। + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +दूसरा आर्ग्यूमेंट (`"Comment"`) फ़ील्ड का **पूर्ण योग्य नाम** है। यह डॉक्यूमेंट में यूनिक होना चाहिए; नहीं तो Aspose एक एक्सेप्शन फेंकेगा। + +## चरण 5: परिणामी PDF को सेव करें – PDF कैसे सेव करें + +अंत में, हम इन‑मेमोरी डॉक्यूमेंट को डिस्क पर लिखते हैं। यही इस ट्यूटोरियल का **PDF कैसे सेव करें** भाग है। + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**एब्सोल्यूट पाथ क्यों निर्दिष्ट करें?** एब्सोल्यूट पाथ उपयोग करने से वर्किंग डायरेक्टरी के बारे में भ्रम नहीं रहता, खासकर जब आप प्रोग्राम को Visual Studio के डिबगर से चलाते हैं। यदि आप रिलेटिव पाथ पसंद करते हैं, तो `Save` कॉल करने से पहले सुनिश्चित कर लें कि फ़ोल्डर मौजूद है। + +### अपेक्षित परिणाम + +*MultiWidgetField.pdf* को Adobe Acrobat Reader में खोलें। आपको पेज 1, 2, और 3 पर एक ही टेक्स्टबॉक्स दिखाई देगा। किसी भी पेज पर फ़ील्ड में टाइप करें—टेक्स्ट तुरंत अन्य पेजों पर भी दिखेगा क्योंकि वे एक ही बैकएंड फ़ॉर्म फ़ील्ड को शेयर करते हैं। + +![Create PDF Document example showing a textbox on three pages](https://example.com/placeholder-image.png "Create PDF Document example") + +*छवि वैकल्पिक पाठ: तीन पृष्ठों पर टेक्स्टबॉक्स दिखाते हुए PDF दस्तावेज़ का उदाहरण।* + +## पूर्ण, रन‑टू‑डेड उदाहरण + +नीचे पूरा प्रोग्राम दिया गया है जिसे आप नई कंसोल प्रोजेक्ट (`dotnet new console`) में कॉपी करके चला सकते हैं। सभी चरण पहले से क्रमबद्ध हैं, और कोड में स्पष्टता के लिए टिप्पणी भी शामिल है। + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +प्रोग्राम चलाएँ, `C:\Temp\` पर जाएँ, और जेनरेटेड PDF खोलें। आपको तीन समान टेक्स्टबॉक्स दिखाई देंगे जो उपयोगकर्ता इनपुट के लिए तैयार हैं। + +## सामान्य वैरिएशन और एज केस + +| परिदृश्य | क्या बदलें | क्यों | +|----------|------------|------| +| **प्रत्येक पेज पर अलग टेक्स्टबॉक्स आकार** | प्रत्येक `WidgetAnnotation` के लिए `Rectangle` मान बदलें। | विभिन्न लेआउट में फ़ील्ड फिट करने के लिए। | +| **रीड‑ओनली फ़ील्ड** | `commentField.ReadOnly = true;` सेट करें। | प्रारंभिक भरने के बाद उपयोगकर्ता को संपादन से रोकता है। | +| **मल्टी‑लाइन टेक्स्टबॉक्स** | `commentField.Multiline = true;` सेट करें और आयत की ऊँचाई बढ़ाएँ। | लंबी टिप्पणी बिना स्क्रॉल के लिखी जा सके। | +| **दूसरा फ़ील्ड जोड़ना** | नया `TextBoxField` (या कोई भी `FormField`) बनाएं और चरण 2‑4 को नए नाम के साथ दोहराएँ। | एक ही PDF में कई जानकारी एकत्र की जा सकती है। | + +## प्रो टिप्स और बचने योग्य पिटफ़ॉल्स + +- **पेज इंडेक्सिंग:** याद रखें `pdfDocument.Pages[1]` पहला पेज है, `[0]` नहीं। 0‑बेस्ड और 1‑बेस्ड इंडेक्स को मिलाने से “Index out of range” एक्सेप्शन आता है। +- **फ़ील्ड नाम टकराव:** दो फ़ील्ड का पूर्ण योग्य नाम समान नहीं हो सकता। यदि डुप्लिकेट नाम की त्रुटि आती है, तो `Form.Add` में पास किए गए स्ट्रिंग को दोबारा जांचें। +- **लाइसेंस बनाम इवैल्यूएशन:** इवैल्यूएशन संस्करण प्रत्येक पेज पर वॉटरमार्क जोड़ता है। प्रोडक्शन में इसे हटाने के लिए वैध लाइसेंस डिप्लॉय करें। +- **परफ़ॉर्मेंस:** लूप में सैकड़ों पेज जोड़ना ठीक है, लेकिन यदि आपको हजारों पेज वाले बड़े PDF जनरेट करने हैं, तो विचार करें + +{{< /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-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/hindi/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..0e576d508 --- /dev/null +++ b/pdf/hindi/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,223 @@ +--- +category: general +date: 2026-03-06 +description: Aspose.PDF का उपयोग करके C# में PDF दस्तावेज़ बनाएं। जानें कैसे PDF पेज + जोड़ें, PDF में आयत बनाएं, PDF में आकार जोड़ें, और आयत की सीमा की मोटाई को नियंत्रित + करें—सभी एक ही ट्यूटोरियल में। +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: hi +og_description: Aspose.PDF के साथ C# में PDF दस्तावेज़ बनाएं। यह ट्यूटोरियल दिखाता + है कि कैसे PDF पेज जोड़ें, PDF में आयत बनाएं, PDF में आकार जोड़ें, और आयत की बॉर्डर + मोटाई सेट करें। +og_title: Aspose.PDF के साथ PDF दस्तावेज़ बनाएं – पूर्ण गाइड +tags: +- Aspose.PDF +- C# +- PDF generation +title: Aspose.PDF के साथ PDF दस्तावेज़ बनाएं – चरण‑दर‑चरण मार्गदर्शिका +url: /hi/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< 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 के साथ आप इसे कुछ ही लाइनों में कर सकते हैं, और आप सीखेंगे कि कैसे **add page PDF**, **draw rectangle PDF**, **add shape PDF** किया जाता है, और साथ ही **rectangle border thickness** को कैसे समायोजित किया जाए। चलिए शुरू करते हैं। + +## आप क्या बनाएँगे + +इस गाइड के अंत तक आपके पास एक पूरी तरह से कार्यशील C# कंसोल ऐप होगा जो: + +1. **Creates a PDF document** को शून्य से बनाता है। +2. **Adds a page PDF** को दस्तावेज़ में जोड़ता है। +3. **Draws a rectangle PDF** को उस पेज पर बनाता है। +4. **Validates** कि आयत पेज की सीमाओं के भीतर रहती है (**add shape PDF** चरण)। +5. कस्टम **rectangle border thickness** सेट करता है। +6. परिणाम को `ShapeValidated.pdf` के रूप में सहेजता है। + +कोई बाहरी सेवा नहीं, कोई रहस्यमयी कॉन्फ़िगरेशन नहीं—सिर्फ साधारण C# और Aspose.PDF। + +### आवश्यकताएँ + +- .NET 6.0 या बाद का संस्करण (कोड .NET Framework 4.6+ के साथ भी काम करता है)। +- `Aspose.Pdf` NuGet पैकेज का रेफ़रेंस। आप इसे इस प्रकार जोड़ सकते हैं: + +```bash +dotnet add package Aspose.Pdf +``` + +- एक टेक्स्ट एडिटर या IDE—Visual Studio, VS Code, Rider, जो भी आपको पसंद हो। + +> **Pro tip:** यदि आप कॉर्पोरेट मशीन पर हैं, तो सुनिश्चित करें कि NuGet फ़ीड ब्लॉक नहीं है; अन्यथा आपको “Package not found” त्रुटि मिलेगी। + +--- + +## PDF दस्तावेज़ बनाएं – दस्तावेज़ को इनिशियलाइज़ करें + +पहला कदम `Document` ऑब्जेक्ट बनाना है। इसे एक खाली कैनवास की तरह समझें जहाँ हर पेज और आकार स्थित होंगे। + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +हमें इस ऑब्जेक्ट की क्यों जरूरत है? यह मेमोरी में पूरे PDF फ़ाइल का प्रतिनिधित्व करता है, जिससे हमें `Pages` कलेक्शन, मेटाडेटा और सुरक्षा सेटिंग्स तक पहुँच मिलती है। एक बार दस्तावेज़ मिल जाने पर आप पेज, टेक्स्ट, इमेज और वेक्टर ग्राफ़िक्स जोड़ना शुरू कर सकते हैं। + +## PDF में एक पेज जोड़ें (add page pdf) + +पेजों के बिना PDF मूलतः एक खाली फ़ाइल है—बिना मतलब। पेज जोड़ना सरल है, और आप चाहें तो उसका आकार कस्टमाइज़ कर सकते हैं। यहाँ हम डिफ़ॉल्ट A4 आकार का उपयोग कर रहे हैं। + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +`Add()` मेथड एक नया `Page` इंस्टेंस लौटाता है जो पहले से ही `Pages` कलेक्शन का हिस्सा है, इसलिए आप तुरंत उस पर ड्रॉ करना शुरू कर सकते हैं। वास्तविक परिदृश्यों में आप डेटा सेट पर लूप करके कई पेज जोड़ सकते हैं; वही एक‑लाइन कॉल प्रत्येक इटरशन में काम करता है। + +## आयत आकार बनाएं (draw rectangle pdf) + +अब दृश्य भाग: एक आयत जिसमें स्पष्ट बॉर्डर हो। यहाँ **draw rectangle pdf** काम आता है। + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +ध्यान देने योग्य कुछ बातें: + +- `Rect` पॉइंट्स (1 pt ≈ 1/72 इंच) का उपयोग करता है। कॉर्डिनेट्स निचले‑बाएँ और ऊपरी‑दाएँ कोने को परिभाषित करते हैं, जिससे आप चौड़ाई और ऊँचाई को सटीक रूप से नियंत्रित कर सकते हैं। +- `BorderInfo` आपको यह निर्धारित करने देता है कि किन किनारों पर लाइन हो और उसकी मोटाई कितनी हो। यहाँ हम **all** किनारों पर 2‑पॉइंट लाइन लागू करते हैं, जिससे आयत को साफ़, समान रूप मिलता है। + +## आकार की स्थिति सत्यापित करें (add shape pdf) + +आयत को पेज पर जोड़ने से पहले, यह सुनिश्चित करना समझदारी है कि वह पेज के प्रिंटेबल एरिया के भीतर फिट हो। Aspose.PDF इसके लिए एक उपयोगी हेल्पर मेथड प्रदान करता है। + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +क्यों परेशान हों? यदि आप गलती से आकार को आंशिक रूप से स्क्रीन के बाहर रख देते हैं, तो PDF व्यूअर उसे काट सकता है, जिससे उपयोगकर्ता अनुभव भ्रमित हो जाता है। यह **add shape pdf** गार्ड क्लॉज़ सुनिश्चित करता है कि आप केवल वही सामग्री जोड़ें जो पूरी तरह दिखाई दे। + +## PDF सहेजें (add page pdf) + +अंत में, हम मेमोरी में मौजूद दस्तावेज़ को डिस्क पर सहेजते हैं। आप कोई भी स्थान चुन सकते हैं जहाँ आपके पास लिखने की अनुमति हो। + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +प्रोग्राम चलाने के बाद, `ShapeValidated.pdf` खोलें—आपको एकल पेज पर मध्य में लगभग केंद्रित एक साफ़ बॉर्डर वाली आयत दिखनी चाहिए। + +## अपेक्षित परिणाम + +जब आप उत्पन्न PDF खोलेंगे, तो आप देखेंगे: + +- एक A4‑आकार का पेज। +- एक आयत जिसका निचला‑बायाँ कोना (50 pt, 50 pt) पर शुरू होता है और ऊपरी‑दायाँ कोना (600 pt, 800 pt) पर समाप्त होता है। +- आयत के चारों ओर **2‑point thick** बॉर्डर। + +यदि कंसोल में “PDF created successfully!” प्रिंट हुआ, तो आप जानते हैं कि कोड ने बाउंडरी चेक को पार किए बिना चलाया। + +![Aspose.PDF के साथ PDF दस्तावेज़ बनाने का आरेख](https://example.com/diagram-create-pdf.png "PDF दस्तावेज़ बनाएं – दृश्य अवलोकन") + +*इमेज का alt टेक्स्ट मुख्य कीवर्ड शामिल करता है ताकि SEO आवश्यकताओं को पूरा किया जा सके।* + +## सामान्य प्रश्न और किनारे के केस + +### यदि मुझे अलग पेज आकार चाहिए तो क्या करें? + +डिफ़ॉल्ट पेज को कस्टम आकार से बदलें: + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### बॉर्डर का रंग कैसे बदलें? + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### क्या मैं एक ही पेज पर कई आकार जोड़ सकता हूँ? + +बिल्कुल। बस **add shape pdf** ब्लॉक को नए `RectangleShape` (या अन्य `Shape` सबक्लास) के साथ दोहराएँ और `Rect` कॉर्डिनेट्स को उसी अनुसार समायोजित करें। + +### यदि आयत पेज की सीमाओं से बाहर हो तो क्या करें? + +`IsShapeWithinBounds` कॉल `false` लौटाएगा। प्रोडक्शन कोड में आप आकार को स्वचालित रूप से री‑साइज़ करना चाह सकते हैं: + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +## पुनरावलोकन + +हमने Aspose.PDF के साथ **creating a PDF document** का पूरा जीवनचक्र देखा: + +1. `Document` को इनिशियलाइज़ करें। +2. `Pages.Add()` का उपयोग करके **Add a page PDF** करें। +3. `RectangleShape` के माध्यम से **Draw a rectangle PDF** बनाएं। +4. पेज के भीतर रहने की पुष्टि करने के बाद ही **Add shape PDF** करें। +5. `BorderInfo` के साथ **rectangle border thickness** को नियंत्रित करें। +6. फ़ाइल को सहेजें। + +यह पूरा वर्कफ़्लो 60 लाइनों से कम कोड में है। + +## आगे क्या? + +- **Add text**: `TextFragment` का उपयोग करके आयत के भीतर शीर्षक या लेबल रखें। +- **Insert images**: `Image` क्लास आपको लोगो या चार्ट एम्बेड करने देता है। +- **Create tables**: इनवॉइस या डेटा रिपोर्ट के लिए उपयुक्त। +- **Apply security**: यदि PDF में संवेदनशील डेटा है तो पासवर्ड‑प्रोटेक्ट करें। + +इनमें से प्रत्येक विषय यहाँ कवर किए गए मूल सिद्धांतों पर आधारित है, इसलिए आप अधिक उन्नत PDF जनरेशन परिदृश्यों का अन्वेषण करने के लिए तैयार हैं। + +### प्रयोग जारी रखें + +सिर्फ एक आयत पर रुकें नहीं—विभिन्न आकार, रंग और लाइन स्टाइल के साथ प्रयोग करें। Aspose.PDF API समृद्ध है, और जितना आप टिंकर करेंगे, उतना ही आप सहज महसूस करेंगे। यदि आपको कोई समस्या आती है, तो आधिकारिक Aspose दस्तावेज़ एक अच्छा साथी है, लेकिन याद रखें कि ऊपर दिया गया कोड एक पूर्ण, कॉपी‑एंड‑पेस्ट‑तैयार समाधान है जिसे आप आज ही चला सकते हैं। + +कोडिंग का आनंद लें, और आपके PDFs हमेशा वैसा ही रेंडर हों जैसा आप कल्पना करते हैं! + +{{< /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 ce35c6768..e6417898b 100644 --- a/pdf/hindi/net/document-manipulation/_index.md +++ b/pdf/hindi/net/document-manipulation/_index.md @@ -57,7 +57,7 @@ Aspose.PDF नेट के लिए एक कोड ट्यूटोरि जानें कि Aspose.PDF का उपयोग करके .NET में PDF फ़ाइलों को कैसे विभाजित किया जाए। यह मार्गदर्शिका फ़ाइल स्ट्रीम हैंडलिंग, पेज स्प्लिटिंग तकनीक और कुशल दस्तावेज़ प्रबंधन के लिए प्रदर्शन को अनुकूलित करने को कवर करती है। ### [C# में Aspose.PDF का उपयोग करके PDF फ़ील्ड कॉपी करें: एक व्यापक गाइड](./copy-pdf-fields-aspose-pdf-csharp/) -C# में Aspose.PDF का उपयोग करके PDF में फ़ील्ड को कुशलतापूर्वक कॉपी करना सीखें। यह गाइड सेटअप, कोड कार्यान्वयन और व्यावहारिक अनुप्रयोगों को कवर करती है। +C# में Aspose.PDF का उपयोग करके PDF में फ़ील्ड को कुशलतापूर्वक कॉपी करना सीखें। यह गाइड सेटअप, कोड कार्यान्वयन और व्यावहारिक अनुप्रयोगों को कवर करता है। ### [.NET के लिए Aspose.PDF का उपयोग करके कुशलतापूर्वक N-Up PDF बनाएं: एक चरण-दर-चरण मार्गदर्शिका](./create-n-up-pdfs-aspose-pdf-net-guide/) जानें कि Aspose.PDF for .NET की N-Up सुविधा के साथ कई PDF फ़ाइलों को एक में कैसे संयोजित किया जाए। अपने दस्तावेज़ प्रसंस्करण को सरल बनाने के लिए इस व्यापक गाइड का पालन करें। @@ -200,7 +200,7 @@ Aspose.PDF नेट के लिए एक कोड ट्यूटोरि ### [.NET के लिए Aspose.PDF का उपयोग करके PDF पृष्ठों को कैसे विभाजित करें: एक चरण-दर-चरण मार्गदर्शिका](./split-pdf-pages-aspose-pdf-net-guide/) इस व्यापक गाइड के साथ .NET के लिए Aspose.PDF का उपयोग करके PDF पृष्ठों को विभाजित करना सीखें। C# में दस्तावेज़ हेरफेर में महारत हासिल करें और अपने वर्कफ़्लो को अनुकूलित करें। -### [.NET के लिए Aspose.PDF का उपयोग करके PDF से रिक्त स्थान कैसे काटें: एक व्यापक मार्गदर्शिका](./trim-white-space-aspose-pdf-net/) +### [.NET के लिए Aspose.PDF का उपयोग करके PDF से रिक्त स्थान कैसे काटें: एक व्यापक गाइड](./trim-white-space-aspose-pdf-net/) जानें कि .NET के लिए Aspose.PDF का उपयोग करके PDF दस्तावेज़ों से सफ़ेद स्थान को कुशलतापूर्वक कैसे ट्रिम किया जाए। यह गाइड सेटअप, तकनीक और अनुकूलन युक्तियों को कवर करती है। ### [.NET के लिए Aspose.PDF का उपयोग करके PDF फ़ाइलों में लिंक कैसे अपडेट करें: एक व्यापक गाइड](./update-links-pdfs-aspose-pdf-dotnet/) @@ -309,7 +309,9 @@ Aspose.PDF नेट के लिए एक कोड ट्यूटोरि .NET के लिए Aspose.PDF का उपयोग करके मल्टी-पेज PDF को विभाजित करने और नई PDF फ़ाइलें बनाने का तरीका जानें। कोड उदाहरणों के साथ इस व्यापक गाइड का पालन करें। ### [Aspose.PDF .NET के साथ PDF मैनिपुलेशन के लिए अंतिम गाइड: टेक्स्ट को कुशलतापूर्वक लोड, सेव और रिप्लेस करें](./master-pdf-manipulation-aspose-pdf-net/) -.NET के लिए Aspose.PDF का उपयोग करके PDF में हेरफेर करने का तरीका जानें। यह गाइड PDF में टेक्स्ट लोड करने, सहेजने और बदलने के बारे में बताती है, जो दक्षता चाहने वाले डेवलपर्स के लिए आदर्श है। + +### [C# के साथ Aspose PDF का उपयोग करके PDF को रीडैक्ट कैसे करें – पूर्ण गाइड](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) +C# में Aspose PDF के साथ PDF फ़ाइलों से संवेदनशील जानकारी को हटाने और ब्लैकआउट करने की पूरी प्रक्रिया सीखें। ## अतिरिक्त संसाधन diff --git a/pdf/hindi/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/hindi/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..3ff9488d7 --- /dev/null +++ b/pdf/hindi/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-06 +description: Aspose PDF का उपयोग करके C# में PDF को रीडैक्ट करना सीखें। यह चरण‑दर‑चरण + गाइड दिखाता है कि कैसे PDF दस्तावेज़ को C# में लोड करें, पहले PDF पृष्ठ तक पहुँचें, + और PDF से छवि हटाएँ। +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: hi +og_description: Aspose PDF का उपयोग करके C# में PDF को जल्दी से रीडैक्ट कैसे करें। + PDF दस्तावेज़ लोड करें, पहले PDF पृष्ठ तक पहुँचें, और कुछ ही कोड लाइनों में PDF + से इमेज हटाएँ। +og_title: C# में PDF को रीडैक्ट कैसे करें – Aspose PDF ट्यूटोरियल +tags: +- Aspose PDF +- C# +- PDF Redaction +title: C# में Aspose PDF के साथ PDF को रीडैक्ट कैसे करें – पूर्ण मार्गदर्शिका +url: /hi/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# में Aspose PDF के साथ PDF को रिडैक्ट कैसे करें – पूर्ण गाइड + +क्या आपने कभी **PDF को रिडैक्ट** करने के बारे में सोचा है बिना किसी मेहनत के? शायद आपको एक अनुबंध मिला है जिसमें एक गोपनीय लोगो छिपा है, या एक रिपोर्ट जिसमें अभी भी एक प्लेसहोल्डर इमेज दिख रही है जिसे आपको मिटाना है। ऐसे क्षणों में आप एक भरोसेमंद, प्रोग्रामेटिक तरीका चाहते हैं जिससे वह सामग्री हटाई जा सके—बिना मैन्युअल Acrobat जादू के। + +इस ट्यूटोरियल में हम एक संक्षिप्त, एंड‑टू‑एंड समाधान के माध्यम से चलेंगे जो **loads PDF document C#**, **access first PDF page** तक पहुँचता है, और फिर **remove image from PDF** को शक्तिशाली **use Aspose PDF** लाइब्रेरी का उपयोग करके करता है। अंत तक आपके पास वितरण के लिए तैयार एक पूरी तरह से रिडैक्टेड PDF होगा, और आप समझेंगे कि कोड की प्रत्येक पंक्ति क्यों महत्वपूर्ण है। + +> **Pro tip:** Aspose PDF .NET Framework 4.6+ और .NET Core 3.1+ के साथ काम करता है, इसलिए आप Windows, Linux, या macOS पर हों, आप सुरक्षित हैं। + +![PDF को रिडैक्ट करने का उदाहरण](redact-pdf-before-after.png){alt="PDF को रिडैक्ट करने का उदाहरण"} + +## आपको क्या चाहिए + +- **Aspose.PDF for .NET** (नवीनतम NuGet पैकेज) +- एक **C# विकास पर्यावरण** (Visual Studio, Rider, या VS Code) +- एक सैंपल PDF जिसमें वह इमेज रिसोर्स है जिसे आप मिटाना चाहते हैं (हम इसे `Sensitive.pdf` कहेंगे) + +कोई अतिरिक्त थर्ड‑पार्टी टूल्स नहीं, कोई OCR नहीं, सिर्फ शुद्ध कोड। + +## चरण 1: Load PDF Document C# – पहला कदम + +किसी भी चीज़ को रिडैक्ट करने से पहले, आपको फ़ाइल को मेमोरी में लाना होगा। `Document` क्लास हर Aspose PDF ऑपरेशन का एंट्री पॉइंट है। + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**क्यों यह महत्वपूर्ण है:** +`Document` पूरे PDF स्ट्रक्चर को पार्स करता है, एक ऑब्जेक्ट मॉडल बनाता है जिससे आप पेजेज, रिसोर्सेज, और एनोटेशन्स को मैनीपुलेट कर सकते हैं। यदि फ़ाइल लोड नहीं हो पाती (गलत पाथ, करप्टेड PDF), तो तुरंत एक एक्सेप्शन थ्रो किया जाएगा—जिससे आपको जल्दी पता चल जाएगा कि कुछ गड़बड़ है। + +### सामान्य गलती + +> *“मुझे `FileNotFoundException` मिल रहा है जबकि फ़ाइल मौजूद है।”* +> सुनिश्चित करें कि पाथ एब्सॉल्यूट है या आपका प्रोजेक्ट का वर्किंग डायरेक्टरी `Sensitive.pdf` के स्थान से मेल खाता है। `Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")` का उपयोग करने से रिलेटिव‑पाथ की समस्याओं से बचा जा सकता है। + +## चरण 2: Access First PDF Page – जहाँ इमेज स्थित है + +इमेजेज पेज‑वाइज रिसोर्सेज के रूप में स्टोर होते हैं। कई साधारण PDFs में पहली पेज ही समस्या होती है, इसलिए चलिए इसे प्राप्त करते हैं। + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**क्यों यह महत्वपूर्ण है:** +Aspose PDF पेजेज के लिए 1‑बेस्ड इंडेक्स उपयोग करता है, जो अधिकांश .NET कलेक्शन्स की तुलना में थोड़ा असामान्य है। गलत पेज एक्सेस करने से आप गलत कंटेंट को रिडैक्ट कर सकते हैं—या उससे भी बुरा, संवेदनशील इमेज को अनछुआ छोड़ सकते हैं। + +### एज‑केस विचार + +यदि आपके डॉक्यूमेंट में कोई पेज नहीं है (एक खाली PDF), `pdfDocument.Pages[1]` करने से `IndexOutOfRangeException` थ्रो होगा। एक त्वरित गार्ड आपको बचा सकता है: + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +## चरण 3: Remove Image from PDF – रिसोर्स को रिडैक्ट करें + +Aspose PDF आपको नाम से रिसोर्स डिलीट करने देता है। अधिकांश इमेजेज का नाम `Im1`, `Im2` आदि होता है, लेकिन आप `firstPage.Resources.Images` को देख कर पुष्टि कर सकते हैं। + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**क्यों यह महत्वपूर्ण है:** +`RedactResource` इमेज *और* पेज पर उसकी सभी रेफ़रेंसेज़ को हटा देता है, जिससे विज़ुअल गैप एक खाली क्षेत्र से भर जाता है न कि टूटे हुए लिंक से। यह कंटेंट मिटाने का एक साफ़, PDF‑स्टैंडर्ड तरीका है। + +### सही इमेज नाम कैसे खोजें + +यदि आप सुनिश्चित नहीं हैं कि इमेज का नाम `"Im1"` है या नहीं: + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +इस स्निपेट को चलाएँ, कंसोल आउटपुट देखें, और `"Im1"` को वास्तविक की से बदलें जो आपको दिखे। + +## चरण 4: Save the Redacted PDF – काम समाप्त करें + +अब जब अनचाही इमेज हट गई है, तो बदलावों को डिस्क पर वापस लिखें। + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**क्यों यह महत्वपूर्ण है:** +एक **नई** फ़ाइल में सेव करने से मूल फ़ाइल अपरिवर्तित रहती है—एक सुरक्षा जाल यदि आपको रिवर्ट करना पड़े। यदि आपको ओवरराइट करना ही है, तो `Save` मेथड को मूल पाथ पर पॉइंट करें, लेकिन ध्यान रखें कि यह ऑपरेशन अपरिवर्तनीय है। + +### परिणाम की पुष्टि + +`Redacted.pdf` को किसी भी PDF व्यूअर में खोलें। इमेज का स्थान खाली दिखना चाहिए, और दस्तावेज़ का बाकी हिस्सा मूल जैसा ही दिखना चाहिए। यदि पेज लेआउट शिफ्ट हुआ दिखे, तो दोबारा जांचें कि आपने केवल इच्छित रिसोर्स हटाया है और कोई साझा XObject नहीं। + +## पूर्ण कार्यशील उदाहरण + +सभी को एक साथ मिलाकर, यहाँ पूरा, रन‑तैयार प्रोग्राम है: + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**अपेक्षित आउटपुट** (कंसोल में): + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +`Redacted.pdf` खोलने पर, वह इमेज जो पहले `Im1` थी, हट जाएगी, और एक साफ़ पेज बचा रहेगा। + +## अक्सर पूछे जाने वाले प्रश्न + +### क्या यह एन्क्रिप्टेड PDFs के साथ काम करता है? + +यदि स्रोत PDF पासवर्ड‑प्रोटेक्टेड है, तो पासवर्ड को `Document` कंस्ट्रक्टर में पास करें: + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### यदि इमेज कई पेजों पर दिखाई देती है तो क्या करें? + +प्रत्येक पेज पर लूप करें और उसी इमेज नाम पर `RedactResource` कॉल करें (या पेज‑वाइज नाम खोजें)। उदाहरण: + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### क्या मैं टेक्स्ट को भी इसी तरह रिडैक्ट कर सकता हूँ? + +हां—`page.Contents.RedactText("confidential")` का उपयोग करें या अधिक उन्नत पैटर्न के लिए `Redactor` क्लास को अपनाएँ। यह एक अलग ट्यूटोरियल है, लेकिन सिद्धांत इमेजेज के लिए हमने जो किया, वही है। + +## निष्कर्ष – हमने क्या हासिल किया + +हमने प्रोग्रामेटिक रूप से **PDF को रिडैक्ट** करने के प्रश्न का उत्तर दिया है: + +1. **Loading PDF document C#** को Aspose PDF के साथ लोड करना। +2. **Accessing first PDF page** को लक्ष्य रिसोर्स खोजने के लिए एक्सेस करना। +3. **Removing image from PDF** को `RedactResource` के माध्यम से हटाना। +4. **Saving** को सुरक्षित रूप से क्लीन वर्ज़न को सेव करना। + +यह तरीका तेज़, दोहराने योग्य, और बैच जॉब्स में काम करता है—कम्प्लायंस पाइपलाइन या ऑटोमेटेड रिपोर्ट जेनरेशन के लिए परफेक्ट। + +यदि आप आगे बढ़ने के लिए तैयार हैं, तो विचार करें: + +- **Batch redaction** पूरे फ़ोल्डर के PDFs पर। +- **Redacting text** को `Redactor` के साथ रेगेक्स पैटर्न से। +- **Embedding a watermark** रिडैक्शन के बाद “सैनिटाइज़्ड” संकेत देने के लिए। + +इसे आज़माएँ, अपनी फ़ाइलों के लिए इमेज नाम लॉजिक को समायोजित करें, + +{{< /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/performance-optimization/_index.md b/pdf/hindi/net/performance-optimization/_index.md index e2db32880..f71f2580c 100644 --- a/pdf/hindi/net/performance-optimization/_index.md +++ b/pdf/hindi/net/performance-optimization/_index.md @@ -50,6 +50,8 @@ ### [.NET के लिए Aspose.PDF का उपयोग करके PDF में फ़ॉन्ट्स को अनएम्बेड करें: फ़ाइल का आकार कम करें और प्रदर्शन में सुधार करें](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) .NET के लिए Aspose.PDF का उपयोग करके अपनी PDF फ़ाइलों से फ़ॉन्ट को अनएम्बेड करना सीखें। इस चरण-दर-चरण मार्गदर्शिका के साथ PDF प्रदर्शन को अनुकूलित करें, फ़ाइल का आकार कम करें और लोड समय में सुधार करें। +### [Aspose.PDF के साथ PDF को संपीड़ित करने का त्वरित गाइड](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) + ## अतिरिक्त संसाधन - [Aspose.PDF for Net दस्तावेज़ीकरण](https://docs.aspose.com/pdf/net/) diff --git a/pdf/hindi/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/hindi/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..8718582f3 --- /dev/null +++ b/pdf/hindi/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,202 @@ +--- +category: general +date: 2026-03-06 +description: Aspose.Pdf का उपयोग करके तुरंत PDF को कैसे संकुचित करें, सीखें। यह गाइड + दिखाता है कि कैसे लॉसलेस PDF संपीड़न के साथ PDF फ़ाइल का आकार कम किया जाए। +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: hi +og_description: Aspose.Pdf का उपयोग करके PDF को कैसे संकुचित करें? PDF फ़ाइल का आकार + घटाने, लॉसलेस PDF संपीड़न प्राप्त करने और अनुकूलित PDF फ़ाइलें सहेजने के लिए इस + चरण‑दर‑चरण ट्यूटोरियल का पालन करें। +og_title: Aspose.Pdf के साथ PDF को कैसे संपीड़ित करें – त्वरित गाइड +tags: +- pdf +- aspnet +- csharp +title: Aspose.Pdf के साथ PDF को कैसे संकुचित करें – त्वरित गाइड +url: /hi/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose.Pdf के साथ PDF को कैसे कॉम्प्रेस करें – त्वरित गाइड + +क्या आपने कभी **PDF को कैसे कॉम्प्रेस करें** फ़ाइलों को धुंधला किए बिना सोच रखा है? आप अकेले नहीं हैं। अधिकांश डेवलपर्स को ई‑मेल अटैचमेंट, वेब अपलोड या स्टोरेज लिमिट के लिए **PDF फ़ाइल का आकार घटाएँ** की आवश्यकता पड़ने पर रुकावट आती है, फिर भी वे इमेज़ क्वालिटी खोने से डरते हैं। + +इस ट्यूटोरियल में हम एक पूर्ण, तैयार‑चलाने‑योग्य उदाहरण के माध्यम से दिखाएंगे कि Aspose.Pdf के बिल्ट‑इन ऑप्टिमाइज़र का उपयोग करके **PDF को कैसे कॉम्प्रेस करें**। अंत तक आप जानेंगे कि **PDF फ़ाइल का आकार घटाएँ**, **लॉसलेस PDF कॉम्प्रेशन** के साथ अपनी इमेज़ को साफ़ रखें, और अंत में **ऑप्टिमाइज़्ड PDF** फ़ाइलें सहेजें जो किसी भी व्यूअर के साथ सहजता से काम करती हैं। + +## आप क्या सीखेंगे + +- भारी PDF (जैसे, उच्च‑रिज़ॉल्यूशन इमेज़ से भरा) को मेमोरी में लोड करें। +- Aspose.Pdf के ऑप्टिमाइज़र को उसकी डिफ़ॉल्ट लॉसलेस सेटिंग्स के साथ लागू करें। +- परिणाम को एक नई, छोटी फ़ाइल के रूप में सहेजें। +- यदि आपको अधिक संपीड़न चाहिए तो कॉम्प्रेशन को ट्यून करने के टिप्स। + +कोई बाहरी टूल नहीं, कोई रहस्यमय कमांड‑लाइन ट्रिक नहीं—सिर्फ साफ़ C# कोड और स्पष्ट व्याख्याएँ। + +## आवश्यकताएँ + +| आवश्यकता | महत्व क्यों | +|-------------|----------------| +| .NET 6.0 या बाद का (या .NET Framework 4.6+) | Aspose.Pdf दोनों को सपोर्ट करता है; नए रनटाइम बेहतर प्रदर्शन देते हैं। | +| Aspose.Pdf for .NET NuGet पैकेज (`Aspose.Pdf`) | `Document` क्लास यहाँ स्थित है। | +| बड़ी इमेज़ वाली PDF (जैसे, `HeavyImages.pdf`) | आपको संपीड़न के लिए एक ठोस फ़ाइल देती है। | +| Visual Studio, Rider, या कोई भी पसंदीदा C# एडिटर | आराम महत्वपूर्ण है—जो सहज लगे उसे चुनें। | + +> **Pro tip:** यदि आप CI/CD पाइपलाइन पर हैं, तो अपने `.csproj` में NuGet रेफ़रेंस जोड़ें ताकि बिल्ड इसे कभी न भूलें। + +```xml + + + +``` + +## चरण 1: वह PDF लोड करें जिसे आप कॉम्प्रेस करना चाहते हैं + +पहले हमें एक `Document` ऑब्जेक्ट चाहिए जो स्रोत फ़ाइल की ओर इशारा करता हो। इसे इस तरह समझें जैसे आप अध्याय संपादित करने से पहले किताब खोल रहे हों। + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*यह क्यों महत्वपूर्ण है:* फ़ाइल को लोड करने से Aspose.Pdf को सभी एम्बेडेड रिसोर्सेज (इमेज़, फ़ॉन्ट आदि) पढ़ने का मौका मिलता है। इस चरण के बिना **PDF फ़ाइल का आकार घटाएँ** संभव नहीं है। + +## चरण 2: लॉसलेस PDF कॉम्प्रेशन लागू करें + +Aspose.Pdf एक `Optimize` मेथड के साथ आता है जो डिफ़ॉल्ट रूप से **लॉसलेस PDF कॉम्प्रेशन** रूटीन चलाता है। यह अनावश्यक ऑब्जेक्ट्स को हटाता है, इमेज़ को समान दृश्य गुणवत्ता के साथ पुनः‑कम्प्रेस करता है, और उपयोग न किए गए फ़ॉन्ट्स को हटाता है। + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*यह क्यों महत्वपूर्ण है:* डिफ़ॉल्ट ऑप्टिमाइज़र को इस तरह डिज़ाइन किया गया है कि वह **PDF फ़ाइल का आकार घटाएँ** जबकि हर पिक्सेल को बरकरार रखे। यदि बाद में आप थोड़ी गुणवत्ता की गिरावट बर्दाश्त कर सकते हैं, तो टिप्पणी‑की गई `OptimizationOptions` आपको अतिरिक्त किलॉबाइट्स को गति के लिए बदलने की अनुमति देती है। + +## चरण 3: ऑप्टिमाइज़्ड PDF सहेजें + +अब जब दस्तावेज़ पतला हो गया है, हम इसे एक नई फ़ाइल में लिखते हैं। मूल फ़ाइल को अनछुआ रखना एक अच्छी आदत है, विशेषकर जब आप विभिन्न सेटिंग्स का परीक्षण कर रहे हों। + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +सेव के बाद, फ़ाइल आकारों की तुलना करें: + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +आपको एक उल्लेखनीय गिरावट दिखनी चाहिए—आमतौर पर **30‑70 %** तक, यह इस पर निर्भर करता है कि स्रोत में कितनी उच्च‑रिज़ॉल्यूशन इमेज़ थीं। + +![PDF को कॉम्प्रेस करने का चित्रण](image.png "PDF को कैसे कॉम्प्रेस करें") + +*Image alt text:* PDF को कॉम्प्रेस करना – ऑप्टिमाइज़ेशन से पहले और बाद + +## उन्नत: विशिष्ट परिदृश्यों के लिए कॉम्प्रेशन ट्यून करना + +डिफ़ॉल्ट ऑप्टिमाइज़र अधिकांश मामलों के लिए बेहतरीन है, लेकिन कभी‑कभी आपको **PDF फ़ाइल का आकार घटाएँ** और अधिक चाहिए: + +| परिदृश्य | समायोजित करने की सेटिंग | प्रभाव | +|----------|-------------------|--------| +| बहुत सारे रास्टर इमेज़ वाली PDFs | `CompressImages = true` + कम `ImageQuality` (जैसे, 70) | इमेज़ बाइट काउंट घटाता है, हल्का दृश्य नुकसान। | +| डुप्लिकेट फ़ॉन्ट्स वाली PDFs | `RemoveUnusedObjects = true` | ऐसे फ़ॉन्ट्स हटाता है जो संदर्भित नहीं हैं। | +| बड़ी मेटाडेटा वाली PDFs | `RemoveMetadata = true` | छिपे हुए XML/मेटाडेटा ब्लॉक्स को हटाता है। | + +आप इन सेटिंग्स को एक `OptimizationOptions` ऑब्जेक्ट में जोड़ सकते हैं और `pdfDoc.Optimize(options)` को पास कर सकते हैं। + +## सामान्य प्रश्न और किनारे के मामले + +**यदि PDF पहले से ही ऑप्टिमाइज़्ड है तो क्या होगा?** +Aspose.Pdf अभी भी दस्तावेज़ को स्कैन करेगा, लेकिन आकार में परिवर्तन न्यूनतम रहेगा। पहले से ही पतली फ़ाइल पर ऑप्टिमाइज़र चलाना सुरक्षित है; यह कुछ भी खराब नहीं करेगा। + +**क्या मैं एन्क्रिप्टेड PDFs को कॉम्प्रेस कर सकता हूँ?** +हाँ, लेकिन `Optimize` कॉल करने से पहले आपको पासवर्ड प्रदान करना होगा। उदाहरण: + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**वेक्टर ग्राफ़िक्स वाली PDFs के बारे में क्या?** +वेक्टर ऑब्जेक्ट्स पहले से ही हल्के होते हैं, इसलिए ऑप्टिमाइज़र रास्टर इमेज़ और मेटाडेटा पर ध्यान देता है। शुद्ध‑वेक्टर फ़ाइलों के लिए अपेक्षाकृत मामूली लाभ मिलेगा। + +## पूर्ण, चलाने योग्य उदाहरण + +नीचे एक स्व-समाहित कंसोल ऐप है जिसे आप नई `.csproj` में कॉपी‑पेस्ट कर सकते हैं। यह सब कुछ दर्शाता है—लोडिंग से लेकर सत्यापन तक। + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +प्रोग्राम चलाएँ, किसी भी व्यूअर में `Optimized.pdf` खोलें, और आप वही पेज लेआउट, वही साफ़ इमेज़, लेकिन एक पतली फ़ाइल देखेंगे। यही है **लॉसलेस PDF कॉम्प्रेशन** का जादू। + +## निष्कर्ष + +हमने **PDF को कैसे कॉम्प्रेस करें** फ़ाइलों को Aspose.Pdf के बिल्ट‑इन ऑप्टिमाइज़र का उपयोग करके कवर किया, एक व्यावहारिक **PDF फ़ाइल का आकार घटाएँ** वर्कफ़्लो दिखाया, और प्रत्येक चरण के पीछे के कारण समझाए। लोड, ऑप्टिमाइज़, सहेजें—इन तीन चरणों का पालन करके आप तुरंत **PDF फ़ाइल का आकार घटाएँ**, **लॉसलेस PDF कॉम्प्रेशन** के साथ अपनी इमेज़ को बरकरार रखें, और आत्मविश्वास से **ऑप्टिमाइज़्ड PDF** फ़ाइलें सहेजें। + +अगली चुनौती के लिए तैयार हैं? इस ऑप्टिमाइज़र को बैच स्क्रिप्ट के साथ जोड़ें ताकि पूरी फ़ोल्डर प्रोसेस हो सके, या वैकल्पिक `OptimizationOptions` के साथ अंतिम कुछ किलॉबाइट्स निकालें। वही सिद्धांत डेस्कटॉप टूल, वेब API, या सर्वर‑साइड बैच जॉब में लागू होते हैं। + +PDF हैंडलिंग, Aspose.Pdf की बारीकियों, या .NET फ़ाइल I/O के बारे में और प्रश्न हैं? नीचे टिप्पणी छोड़ें, और बातचीत जारी रखें। खुशहाल कॉम्प्रेशन! + +{{< /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/programming-with-security-and-signatures/_index.md b/pdf/hindi/net/programming-with-security-and-signatures/_index.md index 13f176f75..2d2a5c5a1 100644 --- a/pdf/hindi/net/programming-with-security-and-signatures/_index.md +++ b/pdf/hindi/net/programming-with-security-and-signatures/_index.md @@ -26,14 +26,16 @@ | [पीडीएफ फाइल में सही पासवर्ड निर्धारित करें](./determine-correct-password/) | .NET के लिए Aspose.PDF का उपयोग करके सही पासवर्ड के साथ PDF फ़ाइलें अनलॉक करें। आसानी से सही पासवर्ड की पहचान करना सीखें। | | [डिजिटल रूप से साइन इन करें PDF फ़ाइल](./digitally-sign/) जानें कि .NET के लिए Aspose.PDF के साथ PDF फ़ाइलों पर डिजिटल हस्ताक्षर कैसे करें। अपने दस्तावेज़ों को सुरक्षित और प्रामाणिक बनाने के लिए चरण-दर-चरण मार्गदर्शिका। | | [पीडीएफ फाइल में टाइम स्टैम्प के साथ डिजिटल हस्ताक्षर करें](./digitally-sign-with-time-stamp/) | .NET के लिए Aspose.PDF का उपयोग करके टाइमस्टैम्प के साथ PDF पर डिजिटल हस्ताक्षर करना सीखें। यह चरण-दर-चरण मार्गदर्शिका पूर्वापेक्षाएँ, प्रमाणपत्र सेटअप, टाइमस्टैम्पिंग और बहुत कुछ को कवर करती है। | -| [पीडीएफ फाइल एन्क्रिप्ट करें](./encrypt/) | .NET के लिए Aspose.PDF का उपयोग करके अपनी PDF फ़ाइलों को आसानी से एन्क्रिप्ट करना सीखें। हमारे आसान चरण-दर-चरण गाइड के साथ संवेदनशील जानकारी सुरक्षित करें। | -| [छवि निकालना](./extracting-image/) | .NET के लिए Aspose.PDF का उपयोग करके PDF से छवियों को निकालना सीखें। सहज छवि निष्कर्षण के लिए हमारे चरण-दर-चरण मार्गदर्शिका का पालन करें। | -| [हस्ताक्षर जानकारी निकालें](./extract-signature-info/) | .NET के लिए Aspose.PDF का उपयोग करके PDF दस्तावेज़ों से डिजिटल हस्ताक्षर और प्रमाणपत्र जानकारी निकालना सीखें। C# डेवलपर्स के लिए एक संपूर्ण चरण-दर-चरण मार्गदर्शिका। | -| [क्या पासवर्ड सुरक्षित है?](./is-password-protected/) इस विस्तृत चरण-दर-चरण मार्गदर्शिका में जानें कि .NET के लिए Aspose.PDF का उपयोग करके किसी PDF को पासवर्ड से सुरक्षित किया गया है या नहीं। | -| [पीडीएफ फाइल में विशेषाधिकार सेट करें](./set-privileges/) | इस चरण-दर-चरण मार्गदर्शिका के साथ .NET के लिए Aspose.PDF का उपयोग करके PDF विशेषाधिकार सेट करना सीखें। अपने दस्तावेज़ों को प्रभावी ढंग से सुरक्षित करें। | -| [पीडीएफ फाइल हस्ताक्षर का उपयोग करके स्मार्ट कार्ड से हस्ताक्षर करें](./sign-with-smart-card-using-pdf-file-signature/) | .NET के लिए Aspose.PDF के साथ स्मार्ट कार्ड का उपयोग करके PDF फ़ाइलों पर हस्ताक्षर करना सीखें। सुरक्षित डिजिटल हस्ताक्षर के लिए इस चरण-दर-चरण मार्गदर्शिका का पालन करें। | -| [हस्ताक्षर फ़ील्ड का उपयोग करके स्मार्ट कार्ड से हस्ताक्षर करें](./sign-with-smart-card-using-signature-field/) | .NET के लिए Aspose.PDF के साथ स्मार्ट कार्ड का उपयोग करके PDF पर सुरक्षित रूप से हस्ताक्षर करना सीखें। आसान कार्यान्वयन के लिए हमारे चरण-दर-चरण मार्गदर्शिका का पालन करें। | -| [C# में PDF हस्ताक्षर जाँचें – साइन किए गए PDF फ़ाइलें पढ़ें](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) | .NET के लिए Aspose.PDF का उपयोग करके PDF हस्ताक्षर कैसे पढ़ें, इस चरण-दर-चरण मार्गदर्शिका में जानें। | +| [पीडीएफ फाइल एन्क्रिप्ट करें](./encrypt/) | .NET के लिए Aspose.PDF का उपयोग करके अपनी PDF फ़ाइलों को आसानी से एन्क्रिप्ट करना सीखें। हमारे आसान चरण-दर-स्टेप गाइड के साथ संवेदनशील जानकारी सुरक्षित करें। | +| [छवि निकालना](./extracting-image/) | .NET के लिए Aspose.PDF का उपयोग करके PDF से छवियों को निकालना सीखें। सहज छवि निष्कर्षण के लिए हमारे चरण-दर-स्टेप मार्गदर्शिका का पालन करें। | +| [हस्ताक्षर जानकारी निकालें](./extract-signature-info/) | .NET के लिए Aspose.PDF का उपयोग करके PDF दस्तावेज़ों से डिजिटल हस्ताक्षर और प्रमाणपत्र जानकारी निकालना सीखें। C# डेवलपर्स के लिए एक संपूर्ण चरण-दर-स्टेप मार्गदर्शिका। | +| [क्या पासवर्ड सुरक्षित है?](./is-password-protected/) इस विस्तृत चरण-दर-स्टेप मार्गदर्शिका में जानें कि .NET के लिए Aspose.PDF का उपयोग करके किसी PDF को पासवर्ड से सुरक्षित किया गया है या नहीं। | +| [पीडीएफ फाइल में विशेषाधिकार सेट करें](./set-privileges/) | इस चरण-दर-स्टेप मार्गदर्शिका के साथ .NET के लिए Aspose.PDF का उपयोग करके PDF विशेषाधिकार सेट करना सीखें। अपने दस्तावेज़ों को प्रभावी ढंग से सुरक्षित करें। | +| [पीडीएफ फाइल हस्ताक्षर का उपयोग करके स्मार्ट कार्ड से हस्ताक्षर करें](./sign-with-smart-card-using-pdf-file-signature/) | .NET के लिए Aspose.PDF के साथ स्मार्ट कार्ड का उपयोग करके PDF फ़ाइलों पर हस्ताक्षर करना सीखें। सुरक्षित डिजिटल हस्ताक्षर के लिए इस चरण-दर-स्टेप मार्गदर्शिका का पालन करें। | +| [हस्ताक्षर फ़ील्ड का उपयोग करके स्मार्ट कार्ड से हस्ताक्षर करें](./sign-with-smart-card-using-signature-field/) | .NET के लिए Aspose.PDF के साथ स्मार्ट कार्ड का उपयोग करके PDF पर सुरक्षित रूप से हस्ताक्षर करना सीखें। आसान कार्यान्वयन के लिए हमारे चरण-दर-स्टेप मार्गदर्शिका का पालन करें। | +| [C# में PDF हस्ताक्षर जाँचें – साइन किए गए PDF फ़ाइलें पढ़ें](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) | .NET के लिए Aspose.PDF का उपयोग करके PDF हस्ताक्षर कैसे पढ़ें, इस चरण-दर-स्टेप मार्गदर्शिका में जानें। | +| [C# का उपयोग करके PDF में हस्ताक्षर कैसे सत्यापित करें – पूर्ण Aspose गाइड](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) | .NET के लिए Aspose.PDF के साथ C# में PDF हस्ताक्षर सत्यापित करने की चरण‑दर‑चरण गाइड। | +| [C# में डिजिटल हस्ताक्षर PDF जोड़ें – पूर्ण चरण‑दर‑चरण गाइड](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) | .NET के लिए Aspose.PDF के साथ C# में PDF पर डिजिटल हस्ताक्षर जोड़ना सीखें। चरण‑दर‑चरण मार्गदर्शिका। | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/hindi/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/hindi/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..44d012147 --- /dev/null +++ b/pdf/hindi/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-03-06 +description: Aspose.PDF का उपयोग करके PDF में डिजिटल सिग्नेचर जोड़ें। pkcs7 डिटैच्ड + सिग्नेचर बनाना सीखें और कस्टम कॉलबैक के साथ pfx का उपयोग करके PDF पर साइन करें। +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: hi +og_description: डिजिटल सिग्नेचर पीडीएफ जल्दी जोड़ें। यह गाइड दिखाता है कि कैसे PKCS7 + डिटैच्ड सिग्नेचर बनाएं और C# में PFX का उपयोग करके पीडीएफ पर साइन करें। +og_title: C# में PDF में डिजिटल सिग्नेचर जोड़ें – पूर्ण प्रोग्रामिंग ट्यूटोरियल +tags: +- Aspose.PDF +- C# +- Digital Signature +title: C# में PDF में डिजिटल सिग्नेचर जोड़ें – पूर्ण चरण‑दर‑चरण मार्गदर्शिका +url: /hi/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# डिजिटल सिग्नेचर PDF – पूर्ण चरण‑दर‑चरण गाइड + +क्या आपको कभी **add digital signature pdf** फ़ाइलें जोड़नी पड़ी हैं लेकिन आप नहीं जानते थे कि कहाँ से शुरू करें? आप अकेले नहीं हैं; कई डेवलपर्स को वही समस्या आती है जब कागजी कार्यवाही को कानूनी‑बद्ध सिग्नेचर की आवश्यकता होती है और कोडबेस केवल साधारण PDF बनाने को ही जानता है। + +इस ट्यूटोरियल में हम एक व्यावहारिक समाधान के माध्यम से चलेंगे जो आपको Aspose.PDF for .NET का उपयोग करके **add digital signature pdf** दस्तावेज़ जोड़ने, PKCS#7 डिटैच्ड सिग्नेचर बनाने, और PFX प्रमाणपत्र के साथ PDF साइन करने की अनुमति देता है—सभी शुद्ध C# में। अंत तक आपके पास चलाने योग्य स्निपेट होगा, प्रत्येक कॉल के “क्यों” को समझेंगे, और किनारे के मामलों के लिए इस दृष्टिकोण को कैसे अनुकूलित करें, यह जानेंगे। + +## आप क्या सीखेंगे + +- एक अनसाइन्ड PDF को लोड करने और साइनिंग के लिए तैयार करने का तरीका। +- एक **create pkcs7 detached signature** की यांत्रिकी और क्यों आप एम्बेडेड के बजाय डिटैच्ड को पसंद कर सकते हैं। +- एक कस्टम कॉलबैक के साथ **sign pdf using pfx** करने के सटीक चरण, जो आपको क्रिप्टोग्राफिक प्रक्रिया पर पूर्ण नियंत्रण देते हैं। +- सामान्य समस्याओं (गुम प्रमाणपत्र, गलत हैश एल्गोरिद्म, आदि) को हल करने के टिप्स। + +### पूर्वापेक्षाएँ + +| आवश्यकता | कारण | +|-------------|--------| +| .NET 6.0 या बाद का | आधुनिक भाषा सुविधाएँ और बेहतर मेमोरी हैंडलिंग। | +| Aspose.PDF for .NET (NuGet पैकेज) | `PdfFileSignature`, `PKCS7Detached`, और अन्य PDF उपयोगिताएँ प्रदान करता है। | +| एक वैध PFX फ़ाइल (`.pfx`) निजी कुंजी के साथ | **sign pdf using pfx** चरण के लिए आवश्यक। | +| बेसिक C# ज्ञान | कोड सीधा है, लेकिन `using` स्टेटमेंट्स को समझना मददगार है। | + +> **Pro tip:** अपने PFX पासवर्ड को स्रोत नियंत्रण से बाहर रखें—प्रोडक्शन के लिए एनवायरनमेंट वेरिएबल्स या Azure Key Vault का उपयोग करें। + +--- + +## Aspose.PDF के साथ डिजिटल सिग्नेचर PDF कैसे जोड़ें + +नीचे हम प्रक्रिया को पाँच समझने योग्य चरणों में विभाजित करते हैं। प्रत्येक चरण में एक कोड स्निपेट, इसका महत्व *क्यों* है का स्पष्टीकरण, और एक त्वरित जांच शामिल है। + +![साइन किए गए PDF का स्क्रीनशॉट, जिसमें एक दृश्यमान सिग्नेचर फ़ील्ड दिख रहा है](/images/add-digital-signature-pdf.png "डिजिटल सिग्नेचर PDF उदाहरण") + +### चरण 1 – अनसाइन्ड PDF दस्तावेज़ लोड करें + +सबसे पहले हमें एक `Document` ऑब्जेक्ट चाहिए जो उस PDF का प्रतिनिधित्व करता है जिसे आप साइन करना चाहते हैं। `using var` का उपयोग करने से फ़ाइल हैंडल स्वचालित रूप से रिलीज़ हो जाता है। + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**क्यों?** +Aspose PDF को एक ऑब्जेक्ट ग्राफ़ के रूप में मानता है; इसे लोड करने से आपको पेज, एनोटेशन, और आंतरिक बाइट स्ट्रीम तक पहुँच मिलती है जिसे बाद में सिग्नेचर के लिए हैश किया जाएगा। + +### चरण 2 – PdfFileSignature हेल्पर को इनिशियलाइज़ करें + +`PdfFileSignature` वह क्लास है जो वास्तव में क्रिप्टोग्राफिक एन्क्लोज़ लागू करती है। यह `PKCS7Detached` के साथ हाथ‑में‑हाथ काम करता है। + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**क्यों?** +साइनर को दस्तावेज़ से अलग करने से आप सिग्नेचर को अंतिम रूप देने से पहले उसी `Document` इंस्टेंस को अन्य ऑपरेशन्स (जैसे, वॉटरमार्क जोड़ना) के लिए पुन: उपयोग कर सकते हैं। + +### चरण 3 – PKCS#7 डिटैच्ड सिग्नेचर बनाएं (Create PKCS7 Detached Signature) + +एक **PKCS#7 डिटैच्ड सिग्नेचर** केवल PDF का हैश संग्रहीत करता है, PDF स्वयं नहीं। यह बड़े दस्तावेज़ों या जब आपको मूल फ़ाइल को अपरिवर्तित रखना हो, के लिए आदर्श है। + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**कस्टम कॉलबैक क्यों?** +कभी‑कभी साइनिंग कुंजी HSM या Azure Key Vault में रहती है, और आप निजी कुंजी को सीधे निकाल नहीं सकते। `CustomSignHash` प्रदान करके आप हैश को उस सेवा को देते हैं जो कुंजी रखती है, जिससे निजी सामग्री सुरक्षित रहती है। + +**अगर आपको कस्टम कॉलबैक की आवश्यकता नहीं है तो क्या?** +आप `CustomSignHash` को छोड़ सकते हैं; Aspose स्वचालित रूप से PFX के अंदर की निजी कुंजी का उपयोग करेगा। हालांकि, कस्टम मार्ग अधिक लचीला है और अनुपालन आवश्यकताओं के अनुरूप है। + +### चरण 4 – विशिष्ट पेज पर सिग्नेचर लागू करें (Sign PDF Using PFX) + +अब हम वास्तव में पेज पर एक दृश्यमान सिग्नेचर फ़ील्ड रखते हैं। आयत (rectangle) स्थान और आकार (पॉइंट्स में) निर्धारित करती है। + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**आयत क्यों निर्दिष्ट करें?** +एक दृश्यमान सिग्नेचर उपयोगकर्ताओं को दिखाता है कि दस्तावेज़ साइन किया गया है। यदि आप `isVisible` को `false` सेट करते हैं, तो सिग्नेचर अदृश्य हो जाता है—फिर भी वैध, लेकिन खोजने में कठिन। + +**एज केस:** यदि PDF में कोई पेज नहीं है (खाली फ़ाइल) तो कॉल `ArgumentOutOfRangeException` फेंकेगा। साइन करने से पहले हमेशा `pdfDocument.Pages.Count > 0` सत्यापित करें। + +### चरण 5 – साइन किए गए PDF को सेव करें + +अंत में, साइन किए गए दस्तावेज़ को डिस्क पर सहेजें। आप इसे सीधे ASP.NET Core में प्रतिक्रिया के रूप में स्ट्रीम भी कर सकते हैं। + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**वेरिफिकेशन टिप:** परिणामी फ़ाइल को Adobe Acrobat Reader में खोलें। सिग्नेचर पैनल में एक हरा चेकमार्क दिखना चाहिए (यदि प्रमाणपत्र मशीन पर विश्वसनीय है)। + +--- + +## पूर्ण कार्यशील उदाहरण + +सब कुछ मिलाकर, यहाँ एक स्व-निहित कंसोल प्रोग्राम है जिसे आप कॉपी‑पेस्ट करके चला सकते हैं (पाथ और पासवर्ड समायोजित करने के बाद)। + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**अपेक्षित आउटपुट:** कंसोल “✅ PDF signed successfully!” प्रिंट करेगा और फ़ाइल `CustomSigned.pdf` उसी फ़ोल्डर में दिखाई देगी। खोलने पर, आप (100,100)‑(300,200) निर्देशांक पर एक सिग्नेचर विजेट देखेंगे। + +## अक्सर पूछे जाने वाले प्रश्न और एज केस + +### यदि मेरा PFX स्मार्ट कार्ड से सुरक्षित है तो क्या करें? + +`CustomSignHash` डेलीगेट का उपयोग करके हैश को स्मार्ट‑कार्ड ड्राइवर को फॉरवर्ड करें। ड्राइवर सिग्नेचर बाइट्स लौटाएगा, और Aspose उन्हें निजी कुंजी को कभी उजागर किए बिना एम्बेड करेगा। + +### क्या मैं एक साथ कई पेज साइन कर सकता हूँ? + +हां। लूप के अंदर `pdfSigner.Sign` को कॉल करें, प्रत्येक पेज के लिए `pageNumber` और वैकल्पिक रूप से आयत (rectangle) को समायोजित करें। याद रखें कि प्रत्येक कॉल एक अलग सिग्नेचर ऑब्जेक्ट जोड़ता है; कुछ व्यूअर्स उन्हें अलग‑अलग सूचीबद्ध कर सकते हैं। + +### मैं हैश एल्गोरिद्म कैसे बदलूँ? + +`PKCS7Detached` डिफ़ॉल्ट रूप से SHA‑256 उपयोग करता है, लेकिन आप `HashAlgorithm` प्रॉपर्टी सेट कर सकते हैं: + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +सुनिश्चित करें कि आपका साइनिंग प्रोवाइडर चुने हुए एल्गोरिद्म को सपोर्ट करता है। + +### यदि क्लाइंट मशीन पर प्रमाणपत्र चेन विश्वसनीय नहीं है तो क्या करें? + +PFX में पूरी चेन शामिल करें, या रूट प्रमाणपत्र को अंतिम उपयोगकर्ता के ट्रस्ट स्टोर में वितरित करें। अन्यथा Acrobat “Signature is unknown” रिपोर्ट करेगा। + +### क्या डिटैच्ड सिग्नेचर PDF/A‑3 के साथ संगत है? + +PDF/A‑3 को एम्बेडेड सिग्नेचर की आवश्यकता होती है, इसलिए एक डिटैच्ड PKCS#7 अनुपालन नहीं हो सकता। ऐसे में `CustomSignHash` डेलीगेट को हटाएँ और Aspose को साइनिंग आंतरिक रूप से संभालने दें, जो एम्बेडेड सिग्नेचर बनाता है। + +## प्रोडक्शन के लिए सर्वश्रेष्ठ प्रैक्टिसेज + +1. **Never hard‑code passwords.** उन्हें एनवायरनमेंट वेरिएबल्स या सीक्रेट मैनेजर से प्राप्त करें। +2. **Validate the PDF before signing.** भ्रष्ट फ़ाइलें `PdfFileSignatureException` का कारण बनती हैं। +3. **Log the hash algorithm and certificate thumbprint** ऑडिट ट्रेल के लिए। +4. **Test with multiple PDF viewers** (Adobe Reader, Foxit, Chrome) ताकि सिग्नेचर इच्छानुसार दिखे। +5. **Consider timestamping** एक TSA (Time‑Stamp Authority) अनुरोध जोड़कर, जो सिग्नेचर की कानूनी वैधता को और मजबूत करता है। + +## निष्कर्ष + +हमने अभी आपको दिखाया कि कैसे Aspose.PDF का उपयोग करके **add digital signature pdf** फ़ाइलें जोड़ें, एक **PKCS#7 डिटैच्ड सिग्नेचर** बनाएं, और **sign pdf using pfx** को कस्टम कॉलबैक के साथ साइन करें। पूर्ण उदाहरण बॉक्स से बाहर चलाता है, और व्याख्याएँ आपको HSMs, टाइमस्टैम्प सेवाओं, या PDF/A अनुपालन के लिए प्रक्रिया को अनुकूलित करने का आत्मविश्वास देती हैं। + +अगला, आप **बैच में कई दस्तावेज़ साइन करना**, सुरक्षित कुंजी संग्रहण के लिए **Azure Key Vault** को इंटीग्रेट करना, या सिग्नेचर रूप में **विज़ुअल कस्टमाइज़ेशन** जोड़ने का अन्वेषण कर सकते हैं। इन सभी विषयों का निर्माण यहाँ स्थापित बुनियाद पर सीधे होता है। + +यदि आपने चरणों का पालन किया है, तो अब आपके पास एक ठोस, उद्धरण‑योग्य समाधान है जिसे आप टीम के साथ साझा कर सकते हैं—या यहां तक कि AI‑संचालित सहायक उत्तर में संदर्भित कर सकते हैं। साइनिंग का आनंद लें, और यदि कुछ स्पष्ट नहीं है तो टिप्पणी छोड़ने में संकोच न करें! + +{{< /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/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/hindi/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..b31abb94b --- /dev/null +++ b/pdf/hindi/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-03-06 +description: Aspose PDF के साथ C# में PDF में हस्ताक्षर को कैसे सत्यापित करें, सीखें। + चरण‑दर‑चरण PDF हस्ताक्षर सत्यापन, PDF हस्ताक्षर को मान्य करें और क्षतिग्रस्त हस्ताक्षरों + को संभालें। +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: hi +og_description: Aspose PDF के साथ PDF में हस्ताक्षर कैसे सत्यापित करें। इस गाइड का + पालन करके PDF हस्ताक्षर सत्यापन करें, PDF हस्ताक्षर को मान्य करें और C# में समझौता + किए गए हस्ताक्षरों का पता लगाएँ। +og_title: C# का उपयोग करके PDF में हस्ताक्षर कैसे सत्यापित करें – पूर्ण Aspose गाइड +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: C# का उपयोग करके PDF में हस्ताक्षर कैसे सत्यापित करें – पूर्ण Aspose गाइड +url: /hi/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# का उपयोग करके PDF में सिग्नेचर कैसे वेरिफाई करें – पूर्ण Aspose गाइड + +क्या आपने कभी PDF में **how to verify signature** को वेरिफाई करने के बारे में सोचा है बिना सिर दर्द हुए? आप अकेले नहीं हैं। कई डेवलपर्स को कंप्लायंस या ऑडिट कारणों से **pdf signature verification** की जरूरत पड़ने पर रुकावट आती है, और आम “बस लाइब्रेरी पर भरोसा करो” वाला तरीका उल्टा पड़ सकता है। + +इस ट्यूटोरियल में हम एक व्यावहारिक, एंड‑टू‑एंड समाधान पर चलेंगे जो न केवल **validate pdf signature** करता है बल्कि यह भी बताता है कि सिग्नेचर में छेड़छाड़ हुई है या नहीं। हम **Aspose PDF** लाइब्रेरी का उपयोग करेंगे, जिसका मतलब है कि कोड .NET 6+, .NET Framework 4.6+ और यहाँ तक कि .NET Core पर भी काम करता है। अंत तक आपके पास एक तैयार‑टू‑रन स्निपेट होगा जिसे आप किसी भी C# प्रोजेक्ट में डाल सकते हैं। + +## आपको क्या चाहिए + +- **Aspose.Pdf** NuGet पैकेज (लेखन के समय का नवीनतम संस्करण – 23.12)। +- .NET विकास पर्यावरण (Visual Studio, Rider, या VS Code)। +- एक साइन किया हुआ PDF फ़ाइल (हम इसे `Signed.pdf` कहेंगे)। +- बेसिक C# ज्ञान – कुछ भी जटिल नहीं, बस सामान्य `using` स्टेटमेंट्स और `Console` I/O। + +बस इतना ही। कोई अतिरिक्त सर्विसेज़ नहीं, कोई अस्पष्ट कॉन्फ़िग फ़ाइलें नहीं। तैयार हैं? चलिए शुरू करते हैं। + +![how to verify signature diagram](image.png "how to verify signature") + +## चरण 1: PDF सिग्नेचर वेरिफिकेशन के लिए अपना प्रोजेक्ट सेट अप करें + +किसी भी Aspose API को कॉल करने से पहले आपको लाइब्रेरी को रेफ़रेंस करना होगा। अपना टर्मिनल या पैकेज मैनेजर कंसोल खोलें और चलाएँ: + +```bash +dotnet add package Aspose.Pdf +``` + +या, यदि आप UI पसंद करते हैं, तो NuGet पैकेज मैनेजर में **Aspose.Pdf** खोजें और इंस्टॉल करें। यह कदम महत्वपूर्ण है क्योंकि **aspose pdf signature** असेंबली के बिना आप बाद में `PdfFileSignature` क्लास तक पहुँच नहीं पाएँगे। + +> **Pro tip:** सर्वोत्तम प्रदर्शन के लिए .NET 6 या उससे ऊपर टार्गेट करें और लेगेसी कंपैटिबिलिटी वार्निंग्स से बचें। + +## चरण 2: PDF दस्तावेज़ लोड करें + +अब पैकेज इंस्टॉल हो गया है, हम वह PDF लोड कर सकते हैं जिसे हम जांचना चाहते हैं। `Document` क्लास पूरी फ़ाइल को मेमोरी में प्रतिनिधित्व करती है। + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**Why this matters:** दस्तावेज़ लोड करने से हमें उसकी आंतरिक संरचनाओं, जिसमें सिग्नेचर फ़ील्ड्स शामिल हैं, तक पहुँच मिलती है। यदि फ़ाइल गायब या करप्ट है, तो `Document` एक एक्सेप्शन थ्रो करेगा, जिसे आप अधिक सुगम यूज़र अनुभव के लिए कैच कर सकते हैं। + +## चरण 3: Aspose PdfFileSignature ऑब्जेक्ट बनाएं + +डॉक्यूमेंट हाथ में होने पर अगला कदम `PdfFileSignature` को इंस्टैंशिएट करना है। यह फ़ैसाड क्लास जानती है कि PDF में एम्बेडेड डिजिटल सिग्नेचर्स को कैसे पढ़ें, वेरिफाई करें और मैनीपुलेट करें। + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**Explanation:** `PdfFileSignature` कन्स्ट्रक्टर लोडेड `Document` लेता है। आंतरिक रूप से यह सिग्नेचर डिक्शनरी को पार्स करता है, जिससे `VerifySignature` और `IsSignatureCompromised` जैसे मेथड्स उपलब्ध होते हैं। + +## चरण 4: सिग्नेचर इंटेग्रिटी वेरिफाई करें + +**pdf signature verification** का मुख्य भाग `VerifySignature` मेथड है। यह `true` रिटर्न करता है यदि क्रिप्टोग्राफ़िक हैश स्टोर किए गए वैल्यू से मेल खाता है और सर्टिफ़िकेट चेन ट्रस्टेड है (मान लेते हैं कि आपने ट्रस्ट मैनेजर सेट किया है, जिसे हम संक्षेप में छोड़ रहे हैं)। + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +यदि आपके पास कई सिग्नेचर हैं, तो बस इंडेक्स (`0`, `1`, …) बदल दें। यह मेथड एक साथ इंटेग्रिटी और ट्रस्ट दोनों को चेक करता है, इसलिए यह अधिकांश परिदृश्यों के लिए गो‑टू है। + +## चरण 5: कॉम्प्रोमाइज़्ड सिग्नेचर का पता लगाएँ + +भले ही एक “valid” सिग्नेचर हो, यदि दस्तावेज़ साइन करने के बाद बदला गया हो तो वह कॉम्प्रोमाइज़्ड हो सकता है। Aspose हमें `IsSignatureCompromised` देता है जिससे यह सूक्ष्म केस पता चल सके। + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**When to use it:** मान लीजिए एक PDF साइन किया गया है, फिर कोई यूज़र कमेंट जोड़ता है या पेज बदलता है। हैश अलग होगा, और `IsSignatureCompromised` `true` रिटर्न करेगा जबकि `VerifySignature` अभी भी `true` हो सकता है यदि सर्टिफ़िकेट स्वयं ठीक है। दोनों फ्लैग्स को चेक करने से आपको पूरी तस्वीर मिलती है। + +## चरण 6: परिणामों की व्याख्या करें + +अब हमारे पास दो बूलियन हैं: `isSignatureValid` और `isSignatureCompromised`। चलिए इन्हें एक फ्रेंडली कंसोल आउटपुट में बदलते हैं। + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### अपेक्षित आउटपुट + +| Scenario | Console Output | +|---|---| +| वैध और बिना कॉम्प्रोमाइज़्ड | `Signature OK` | +| वैध लेकिन कॉम्प्रोमाइज़्ड (दस्तावेज़ बदला गया) | `Signature compromised!` | +| अवैध (सर्टिफ़िकेट ट्रस्टेड नहीं, हैश मिसमैच) | `Signature verification failed` | + +## पूर्ण कार्यशील उदाहरण + +सब कुछ एक साथ मिलाकर, यहाँ पूरा, तैयार‑टू‑रन प्रोग्राम है: + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +`pdfPath` को समायोजित करके कॉपी, पेस्ट करें और चलाएँ। यदि सब कुछ सही ढंग से सेट है तो आप ऊपर सूचीबद्ध तीन संदेशों में से एक देखेंगे। + +## PDF सिग्नेचर वेरिफिकेशन के सामान्य pitfalls और टिप्स + +| Issue | Why it Happens | How to Fix / Avoid | +|---|---|---| +| **Aspose लाइसेंस गायब** | फ्री इवैल्युएशन में वॉटरमार्क जोड़ता है और कुछ API कॉल्स को सीमित कर सकता है। | Register a license (`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`). | +| **एकाधिक सिग्नेचर लेकिन गलत इंडेक्स** | आप गलत सिग्नेचर चेक कर रहे हो सकते हैं, जिससे फॉल्स नेगेटिव्स मिल सकते हैं। | Loop through `signatureVerifier.GetSignatureCount()` and inspect each. | +| **सर्टिफ़िकेट चेन ट्रस्टेड नहीं** | `VerifySignature` फेल हो जाता है यदि रूट CA ट्रस्टेड स्टोर में नहीं है। | Add the signing CA to the Windows Trusted Root store or configure a custom `CertificateValidator`. | +| **फ़ाइल किसी अन्य प्रोसेस द्वारा लॉक्ड** | यदि PDF कहीं और खुला है तो उसे खोलने से `IOException` फेंका जा सकता है। | Use a `FileStream` with `FileShare.ReadWrite` or copy to a temp file first. | +| **गलत PDF पाथ** | साधारण टाइपो से `FileNotFoundException` मिलता है। | Validate the path with `File.Exists(pdfPath)` before loading. | + +### आप जिन किनारे के मामलों का सामना कर सकते हैं + +- **Detached signatures**: कुछ PDFs सिग्नेचर को बाहरी रूप से स्टोर करती हैं। Aspose का `PdfFileSignature` वर्तमान में केवल एम्बेडेड सिग्नेचर को सपोर्ट करता है। +- **Timestamped signatures**: यदि आपको टाइमस्टैम्प अथॉरिटी (TSA) को वेरिफाई करना है, तो आपको `VerifySignature` को एक कस्टम `VerificationOptions` ऑब्जेक्ट के साथ कॉल करना होगा—यह त्वरित गाइड के दायरे से बाहर है लेकिन कंप्लायंस‑हेवी प्रोजेक्ट्स के लिए उल्लेखनीय है। + +## अगले कदम – अपने वैलिडेशन लॉजिक का विस्तार + +अब जब आप **how to verify signature** की बुनियादों में महारत हासिल कर चुके हैं, आप चाहेंगे: + +1. **Validate PDF signature** को ट्रस्टेड सर्टिफ़िकेट्स की लिस्ट (जैसे, कॉर्पोरेट PKI) के खिलाफ वैलिडेट करें। +2. **Export signature details** (साइनर का नाम, साइनिंग टाइम, सर्टिफ़िकेट थंबप्रिंट) `GetSignatureInfo` का उपयोग करके एक्सपोर्ट करें। +3. **Batch‑process multiple PDFs** को एक फ़ोल्डर में प्रोसेस करें, ऑडिट उद्देश्यों के लिए परिणामों को CSV में लॉग करें। + +इन सभी कोड के सरल विस्तार हैं, और ये आपको उसी **aspose pdf signature** इकोसिस्टम में रखेंगे। + +--- + +**सारांश में**, अब आप बिल्कुल जानते हैं कि C# और Aspose का उपयोग करके PDF में **how to verify signature** कैसे करें, कॉम्प्रोमाइज़्ड सिग्नेचर का पता कैसे लगाएँ, और वेरिफिकेशन फेल होने पर क्या करें। यह तरीका मजबूत है, कई सिग्नेचर के साथ काम करता है, और बड़े दस्तावेज़‑प्रोसेसिंग पाइपलाइन में इंटीग्रेट किया जा सकता है। + +क्या इस परिदृश्य में कोई मोड़ है? शायद आपको PDFs को साइन करना है वेरिफाई करने के बजाय, या आप एन्क्रिप्टेड PDFs से निपट रहे हैं। एक कमेंट छोड़ें, और हम साथ में उन पहलुओं को एक्सप्लोर करेंगे। कोडिंग का आनंद लें! + +{{< /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/programming-with-stamps-and-watermarks/_index.md b/pdf/hindi/net/programming-with-stamps-and-watermarks/_index.md index 4b02d28e4..c8d2f5a2d 100644 --- a/pdf/hindi/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/hindi/net/programming-with-stamps-and-watermarks/_index.md @@ -39,6 +39,7 @@ Aspose.PDF के "स्टैम्प और वॉटरमार्क क | [शीर्षलेखपादलेखअनुभाग में तालिका](./table-in-header-footer-section/) | .NET के लिए Aspose.PDF का उपयोग करके PDF फ़ाइल के फ़ुटर में आसानी से टेक्स्ट जोड़ने का तरीका जानें। सहज एकीकरण के लिए चरण-दर-चरण मार्गदर्शिका शामिल है। | | [पीडीएफ फाइल के पादलेख में पाठ](./text-in-footer/) | .NET के लिए Aspose.PDF के साथ PDF फ़ाइल के पाद लेख में पाठ जोड़ना सीखें। | | [पीडीएफ फाइल के हेडर में पाठ](./text-in-header/) | इस चरण-दर-चरण ट्यूटोरियल के साथ .NET के लिए Aspose.PDF का उपयोग करके PDF में टेक्स्ट हेडर जोड़ना सीखें। अपने दस्तावेज़ों को कुशलतापूर्वक और प्रभावी ढंग से बेहतर बनाएँ। | +| [C# में Bates नंबरिंग के साथ PDF दस्तावेज़ बनाएं – पूर्ण गाइड](./create-pdf-document-with-bates-numbering-in-c-full-guide/) | C# में Aspose.PDF का उपयोग करके PDF फ़ाइल में Bates नंबरिंग जोड़ने की पूरी प्रक्रिया सीखें। | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/hindi/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/hindi/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..5923445e9 --- /dev/null +++ b/pdf/hindi/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,182 @@ +--- +category: general +date: 2026-03-06 +description: C# में PDF दस्तावेज़ बनाएं और आसानी से बेट्स नंबर जोड़ें। सीखें कि कैसे + खाली पृष्ठ PDF जोड़ें, पृष्ठ पर स्टैम्प रखें, और बेट्स नंबरिंग लागू करें। +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: hi +og_description: C# में PDF दस्तावेज़ बनाएं और बेट्स नंबर जोड़ें। यह गाइड दिखाता है + कि कैसे खाली पृष्ठ PDF जोड़ें, पृष्ठ पर स्टैम्प रखें, और बेट्स नंबरिंग लागू करें। +og_title: Bates नंबरिंग के साथ PDF दस्तावेज़ बनाएं – C# ट्यूटोरियल +tags: +- Aspose.Pdf +- C# +- PDF automation +title: C# में बेट्स नंबरिंग के साथ PDF दस्तावेज़ बनाएं – पूर्ण गाइड +url: /hi/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# में Bates नंबरिंग के साथ PDF दस्तावेज़ बनाएं + +क्या आपको कभी **PDF दस्तावेज़ बनाना** C# में ज़रूरी पड़ा है और आप सोच रहे थे कि बिना सिरदर्द के Bates नंबर कैसे जोड़ें? आप अकेले नहीं हैं—कानूनी फर्में, अदालतें, और यहाँ तक कि कुछ कॉर्पोरेट कंप्लायंस टीमें भी रोज़ इस समस्या का सामना करती हैं। अच्छी खबर? कुछ ही पंक्तियों के Aspose.Pdf कोड से आप एक नया PDF बना सकते हैं, एक खाली पृष्ठ जोड़ सकते हैं, और एक सुगम प्रवाह में सही Bates नंबर स्टैम्प कर सकते हैं। + +इस ट्यूटोरियल में हम पूरी प्रक्रिया को चरण‑दर‑चरण देखेंगे: प्रोजेक्ट सेट‑अप से लेकर, खाली पृष्ठ PDF जोड़ने, **how to add bates numbering** समझने, और अंत में **place stamp on page** करके परिणाम सहेजने तक। अंत तक आपके पास एक तैयार‑से‑उपयोग स्निपेट होगा जिसे आप किसी भी .NET ऐप में डाल सकते हैं। कोई अस्पष्ट संदर्भ नहीं, सिर्फ एक पूर्ण, चलाने योग्य उदाहरण। + +## आपको क्या चाहिए + +- **.NET 6+** (या .NET Framework 4.6+ – Aspose.Pdf दोनों के साथ काम करता है) +- **Aspose.Pdf for .NET** NuGet पैकेज (`Install-Package Aspose.Pdf`) +- एक अच्छा IDE (Visual Studio, Rider, या VS Code C# एक्सटेंशन के साथ) + +बस इतना ही। कोई अतिरिक्त DLLs नहीं, कोई बाहरी सेवाएँ नहीं। चलिए शुरू करते हैं। + +## Step 1: Create PDF Document – Initial Setup + +सबसे पहले हमें एक नया `Document` ऑब्जेक्ट चाहिए। इसे आप एक खाली कैनवास की तरह समझें जहाँ बाकी सब कुछ रहेगा। + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **यह क्यों महत्वपूर्ण है:** `Document` क्लास हर Aspose ऑपरेशन की एंट्री पॉइंट है। इसे इंस्टैंशिएट करने से आपको `Pages` कलेक्शन, मेटाडेटा, और सुरक्षा सेटिंग्स तक पहुँच मिलती है—एक प्रोफ़ेशनल PDF के सभी बिल्डिंग ब्लॉक्स। + +## Step 2: Add Blank Page PDF + +एक PDF जिसमें पृष्ठ नहीं होते, वह ऐसी किताब की तरह है जिसमें कोई पृष्ठ नहीं—बिल्कुल बेकार। एक खाली पृष्ठ जोड़ना सीधा है, और यह हमें Bates नंबर स्टैम्प करने के लिए सतह देता है। + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **प्रो टिप:** यदि आपको कई पृष्ठ चाहिए, तो बस `pdfDocument.Pages.Add()` को लूप में कॉल करें। प्रत्येक कॉल एक नया `Page` ऑब्जेक्ट रिटर्न करता है जिसे आप स्वतंत्र रूप से कस्टमाइज़ कर सकते हैं। + +## Step 3: How to Add Bates Numbering – Create the TextStamp + +अब बात आती है मुख्य चीज़ की: **Bates number**। Aspose.Pdf में यह सिर्फ एक `TextStamp` है जिसमें एक विशेष artifact फ़्लैग होता है। + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **हम `Artifact` सेट क्यों करते हैं:** कुछ PDF रीडर Bates नंबरों को सर्चेबल मेटाडेटा के रूप में दिखाते हैं। स्टैम्प को `BatesNumbering` artifact के रूप में फ़्लैग करने से डाउनस्ट्रीम टूल्स इसे स्वचालित रूप से पहचान सकते हैं। + +## Step 4: Place Stamp on Page + +स्टैम्प तैयार होने के बाद, अब हम **place stamp on page** करेंगे। यही वह कदम है जहाँ विज़ुअल नंबर वास्तव में PDF में दिखाई देता है। + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **एज केस:** यदि आपको प्रत्येक पृष्ठ पर नंबर बढ़ाना है, तो आप `pdfDocument.Pages` पर लूप करेंगे और `AddStamp` कॉल करने से पहले `batesStamp.Value` को अपडेट करेंगे। यहाँ का उदाहरण एक स्थिर “Bates‑001” के साथ सरल रखा गया है। + +## Step 5: Save and Verify the Result + +अंत में, हम PDF को डिस्क पर सहेजते हैं। ऐसा फ़ोल्डर चुनें जहाँ आपके पास लिखने की अनुमति हो; अन्यथा आपको `UnauthorizedAccessException` मिलेगा। + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +जब आप `BatesStamped.pdf` को किसी भी व्यूअर में खोलेंगे तो आपको खाली पृष्ठ के निचले‑दाएँ कोने में एक छोटा “Bates‑001” दिखाई देगा। + +> **अपेक्षित आउटपुट:** +> ![PDF with Bates number stamp](image-placeholder.png "PDF with Bates number stamp") +> *Alt text: नीचे‑दाएँ कोने में Bates नंबर स्टैम्प वाला PDF.* + +यदि नंबर नहीं दिख रहा है, तो मार्जिन वैल्यूज़ को दोबारा जांचें और सुनिश्चित करें कि पृष्ठ आकार बहुत छोटा नहीं है (डिफ़ॉल्ट A4 ठीक काम करता है)। यह भी पुष्टि करें कि `Artifact` फ़्लैग किसी पोस्ट‑प्रोसेसिंग टूल द्वारा हटाया नहीं गया है। + +## Full Working Example + +नीचे पूरा, कॉपी‑पेस्ट‑तैयार प्रोग्राम दिया गया है। इसमें सभी `using` निर्देश और टिप्पणियाँ शामिल हैं ताकि आप दिशा में रहें। + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +प्रोग्राम चलाएँ, PDF खोलें, और आप Bates नंबर ठीक उसी जगह देखेंगे जहाँ हमने उसे रखने को कहा था। 🎉 + +## Common Variations & Gotchas + +| परिदृश्य | क्या बदलें | क्यों | +|----------|------------|------| +| **एकाधिक पृष्ठ, क्रमिक संख्याएँ** | `pdfDocument.Pages` पर लूप करें, `AddStamp` से पहले `batesStamp.Value = $"Bates-{i:D3}"` सेट करें | प्रत्येक पृष्ठ को एक अनूठा पहचानकर्ता देता है, जो कानूनी बंडलों में सामान्य है | +| **विभिन्न प्लेसमेंट (टॉप‑लेफ़्ट)** | `HorizontalAlignment = HorizontalAlignment.Left` और `VerticalAlignment = VerticalAlignment.Top` बदलें | कुछ संस्थाएँ नंबर को हेडर में रखना पसंद करती हैं, फुटर के बजाय | +| **कस्टम फ़ॉन्ट या रंग** | `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` | पठनीयता बढ़ाता है या ब्रांडिंग गाइडलाइन को पूरा करता है | +| **बैकग्राउंड के रूप में मौजूदा PDF जोड़ना** | `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` लोड करें | तब उपयोगी जब आपको प्री‑जनरेटेड फ़ॉर्म के ऊपर स्टैम्प लगाना हो | + +## Wrapping Up + +हमने अभी दिखाया कि कैसे **create PDF document**, **add blank page pdf**, और **add bates number** Aspose.Pdf for .NET का उपयोग करके किया जाता है, फिर **place stamp on page** करके फ़ाइल को सहेजा जाता है। कोड जानबूझकर संक्षिप्त रखा गया है ताकि आप इसे बड़े वर्कफ़्लो में अनुकूलित कर सकें—चाहे आप दर्जनों फ़ाइलों को बैच में प्रोसेस कर रहे हों या वेब सर्विस में इंटीग्रेट कर रहे हों। + +यदि आप इसे आगे बढ़ाने के लिए तैयार हैं, तो विचार करें: + +- बड़े केस फ़ाइलों के लिए इन्क्रिमेंट लॉजिक को ऑटोमेट करना। +- PDF जनरेशन को ASP.NET Core API में एम्बेड करना। +- `pdfDocument.Encrypt(...)` के साथ सुरक्षा (पासवर्ड प्रोटेक्शन) जोड़ना। + +बिना झिझक प्रयोग करें, चीज़ें तोड़ें, और कमेंट्स में प्रश्न पूछें। हैप्पी कोडिंग, और आपके PDFs हमेशा सही ढंग से स्टैम्पेड रहें! + +{{< /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/programming-with-tagged-pdf/_index.md b/pdf/hindi/net/programming-with-tagged-pdf/_index.md index da70be6e0..daebccffd 100644 --- a/pdf/hindi/net/programming-with-tagged-pdf/_index.md +++ b/pdf/hindi/net/programming-with-tagged-pdf/_index.md @@ -44,7 +44,8 @@ Aspose.PDF for .NET के "टैग किए गए PDF के साथ प | [टेक्स्ट ब्लॉक संरचना तत्व](./text-block-structure-elements/) | किसी मौजूदा PDF दस्तावेज़ में शीर्षक और टैग किए गए पैराग्राफ जैसे टेक्स्ट ब्लॉक संरचना तत्वों को जोड़ने के लिए .NET के लिए Aspose.PDF का उपयोग करना सीखें। | | [पीडीएफ फाइल में पाठ संरचना तत्व](./text-structure-elements/) .NET के लिए Aspose.PDF के साथ PDF में टेक्स्ट संरचना तत्वों में हेरफेर करना सीखें। यह चरण-दर-चरण मार्गदर्शिका संरचित PDF बनाने के लिए आवश्यक सभी चीज़ों को कवर करती है। | | [पीडीएफ फाइल को मान्य करें](./validate-pdf/) | .NET के लिए Aspose.PDF के साथ PDF फ़ाइल को सत्यापित करना सीखें। मानकों के साथ इसके अनुपालन की जाँच करें और एक सत्यापन रिपोर्ट तैयार करें। | -| [C# में टैग्ड PDF बनाएं – पूर्ण चरण-दर-चरण गाइड](./create-tagged-pdf-in-c-complete-step-by-step-guide/) | C# के लिए Aspose.PDF का उपयोग करके टैग्ड PDF बनाने की पूरी चरण-दर-चरण मार्गदर्शिका। | +| [C# में टैग्ड PDF बनाएं – पूर्ण चरण-दर-चरण गाइड](./create-tagged-pdf-in-c-complete-step-by-step-guide/) | C# के लिए Aspose.PDF का उपयोग करके टैग्ड PDF बनाने की पूरी चरण-दर-चरण मार्गदर्शिका। | +| [C# में टैग्ड PDF बनाएं – चरण‑दर‑चरण गाइड](./create-tagged-pdf-in-c-step-by-step-guide/) | C# के लिए Aspose.PDF का उपयोग करके टैग्ड PDF बनाने की विस्तृत चरण‑दर‑चरण मार्गदर्शिका। | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/hindi/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/hindi/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..d6242ddbb --- /dev/null +++ b/pdf/hindi/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-03-06 +description: Aspose.Pdf के साथ C# में टैग्ड PDF बनाएं। जानें कि PDF में इमेज कैसे + जोड़ें, फ़िगर की स्थिति कैसे सेट करें, और एक्सेसिबिलिटी के लिए PDF को टैग करें। +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: hi +og_description: Aspose.Pdf के साथ टैग्ड PDF बनाएं। यह गाइड दिखाता है कि PDF में इमेज + कैसे जोड़ें, फ़िगर की स्थिति कैसे सेट करें, और एक्सेसिबिलिटी के लिए PDF को टैग करें। +og_title: C# में टैग्ड PDF बनाएं – पूर्ण ट्यूटोरियल +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: C# में टैग्ड PDF बनाएं – चरण-दर-चरण गाइड +url: /hi/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# में टैग्ड PDF बनाएं – पूर्ण ट्यूटोरियल + +क्या आपको कभी C# में **create tagged PDF** बनाने की ज़रूरत पड़ी लेकिन शुरू करने का तरीका नहीं पता था? आप अकेले नहीं हैं; आजकल एक्सेसिबिलिटी अनिवार्य है, और एक टैग्ड PDF एक अनुपालन दस्तावेज़ की रीढ़ है। इस ट्यूटोरियल में हम एक वास्तविक‑दुनिया का उदाहरण देखेंगे जो **adds image to PDF** करता है, फ़िगर की स्थिति सेट करता है, और Aspose.Pdf का उपयोग करके **how to tag PDF** दिखाता है। अंत तक आपके पास एक पूरी तरह से टैग्ड PDF होगा जिसे आप किसी को भी भेज सकते हैं। + +हम सब कुछ कवर करेंगे, मौजूदा फ़ाइल को लोड करने से लेकर अंतिम आउटपुट को सेव करने तक, ताकि आपको कहीं और “how to add image” खोजने की ज़रूरत न पड़े। कोई फालतू बातें नहीं—सिर्फ एक स्पष्ट, चलाने योग्य समाधान जो Aspose.Pdf 23.8 (लेखन के समय नवीनतम) के साथ काम करता है। अपना IDE पकड़ें, और चलिए शुरू करते हैं। + +--- + +## आपको क्या चाहिए + +- **Aspose.Pdf for .NET** (NuGet पैकेज `Aspose.Pdf`). +- .NET 6+ (या .NET Framework 4.7.2+). +- एक इनपुट PDF जिसमें पहले से ही लॉजिकल स्ट्रक्चर है (अर्थात यह पहले से टैग्ड है) – यदि नहीं, तो आप टैगिंग को `pdfDocument.TaggedContent = true` के माध्यम से सक्षम कर सकते हैं। +- एक इमेज फ़ाइल (`image.png`) जिसे आप एम्बेड करना चाहते हैं। + +बस इतना ही। कोई अतिरिक्त लाइब्रेरी नहीं, कोई अस्पष्ट कॉन्फ़िगरेशन फ़ाइलें नहीं। + +--- + +## चरण 1: मौजूदा PDF दस्तावेज़ लोड करें (Create Tagged PDF Base) + +पहला काम हम वह PDF खोलना है जिसे हम सुधारना चाहते हैं। फ़ाइल को लोड करने से हमें उसकी लॉजिकल स्ट्रक्चर तक पहुंच मिलती है, जो **create tagged pdf** वर्कफ़्लो के लिए आवश्यक है। + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*क्यों यह महत्वपूर्ण है:* बिना टैग ट्री के PDF स्क्रीन रीडर्स को संरचनात्मक जानकारी नहीं दे पाएगा। टैगिंग को सक्षम करने से यह सुनिश्चित होता है कि हम जो भी नए एलिमेंट जोड़ें (जैसे फ़िगर) उचित पदानुक्रम विरासत में ले। + +--- + +## चरण 2: लॉजिकल स्ट्रक्चर रूट तक पहुंचें (How to Tag PDF) + +अब हम PDF की लॉजिकल स्ट्रक्चर में प्रवेश करते हैं। रूट एलिमेंट सभी टैग्स का कंटेनर है—इसे दस्तावेज़ की रूपरेखा के रूप में सोचें। + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*व्याख्या:* `logicalRoot` हमें `
` या `
` जैसे नए टैग जोड़ने देता है। यह **how to tag PDF** को प्रोग्रामेटिकली करने का मूल है। + +--- + +## चरण 3: एक Figure टैग बनाएं और उसकी स्थिति सेट करें (Set Figure Position) + +एक *Figure* टैग दृश्य सामग्री को वैकल्पिक कैप्शन के साथ समूहित करता है। हम एक बनाएंगे, उसकी स्थिति निर्धारित करेंगे, और उसे रूट से जोड़ेंगे। + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*हम स्थिति क्यों सेट करते हैं:* **set figure position** चरण निर्धारित करता है कि दृश्य तत्व पृष्ठ पर कहाँ स्थित होगा। यदि आप इसे छोड़ देते हैं, तो फ़िगर अप्रत्याशित स्थान पर दिखाई दे सकता है या सहायक तकनीक के लिए अदृश्य रह सकता है। + +--- + +## चरण 4: एक दृश्य प्रतिनिधित्व जोड़ें – इमेज डालें (Add Image to PDF) + +टैग स्थापित होने के बाद, हमें एक वास्तविक इमेज चाहिए। यही वह भाग है जो **add image to pdf** का उत्तर देता है। + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*मुख्य बिंदु:* आयत के निर्देशांक को पहले परिभाषित `figureTag.Position` से मेल खाना चाहिए; अन्यथा फ़िगर और उसकी दृश्य सामग्री असंगत हो जाएगी, जिससे एक्सेसिबिलिटी टूट जाएगी। + +--- + +## चरण 5: अपडेटेड PDF को सेव करें (Finish Creating Tagged PDF) + +अंत में, हम बदलावों को एक नई फ़ाइल में सहेजते हैं। मूल फ़ाइल को अपरिवर्तित रखना एक अच्छी प्रथा है। + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +इस चरण पर आपके पास एक **create tagged pdf** फ़ाइल है जिसमें एक सही ढंग से स्थित इमेज `
` टैग में लिपटी हुई है। `output.pdf` को Adobe Acrobat में खोलें और *Tags* पैनल देखें – आपको रूट के तहत एक `Figure` नोड दिखना चाहिए। + +--- + +## पूर्ण, तैयार‑चलाने योग्य उदाहरण + +नीचे पूरा प्रोग्राम दिया गया है जिसे आप कॉपी‑पेस्ट करके एक कंसोल ऐप में उपयोग कर सकते हैं। सभी चरण पहले से सही क्रम में हैं। + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### अपेक्षित परिणाम + +- `output.pdf` खुलता है जिसमें इमेज (100, 150) पॉइंट्स पर दिखती है, आकार 300 × 200 पॉइंट्स। +- *Tags* पैन में एक `Figure` एलिमेंट दिखता है जो इमेज को घेरता है। +- स्क्रीन‑रीडर टूल्स चित्र का वर्णन करने से पहले “Figure” की घोषणा करते हैं, जिससे बुनियादी एक्सेसिबिलिटी मानक पूरे होते हैं। + +--- + +## सामान्य प्रश्न और किनारे के मामलों + +### यदि स्रोत PDF पहले से टैग्ड नहीं है तो क्या करें? + +Aspose.Pdf आपको टैगिंग को `pdfDocument.TaggedContent.IsTagged = true;` सेट करके चालू करने देता है। लाइब्रेरी एक डिफ़ॉल्ट टैग ट्री उत्पन्न करेगी, जिसके बाद आप दिखाए अनुसार कस्टम टैग जोड़ सकते हैं। + +### क्या मैं फ़िगर में कैप्शन जोड़ सकता हूँ? + +हाँ। `figureTag` बनाने के बाद, आप एक `Paragraph` को `TextFragment` के साथ जोड़ सकते हैं और उसका `Tag` `Caption` सेट कर सकते हैं। उदाहरण: + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### फ़िगर को अलग पृष्ठ पर कैसे रखें? + +`var firstPage = pdfDocument.Pages[1];` को इच्छित पेज इंडेक्स से बदलें, जैसे `pdfDocument.Pages[3]`। यदि पेज का आकार अलग है तो `Position` निर्देशांक को समायोजित करना याद रखें। + +### यदि मुझे कई इमेज टैग करनी हों तो क्या करें? + +प्रत्येक इमेज के लिए एक नया `Figure` बनाएं, प्रत्येक को एक अनूठा `Position` दें, और संबंधित `Image` ऑब्जेक्ट को उपयुक्त पेज पर जोड़ें। इमेजों के संग्रह पर लूप करना अच्छी तरह काम करता है। + +### क्या यह PDF/A अनुपालन के साथ काम करता है? + +Aspose.Pdf PDF/A‑1b, PDF/A‑2b, और PDF/A‑3b को सपोर्ट करता है। जब PDF/A दस्तावेज़ बनाते हैं, तो सेव करने से पहले कंप्लायंस मोड सेट करना सुनिश्चित करें: + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +टैगिंग लॉजिक वही रहता है। + +--- + +## प्रो टिप्स और pitfalls + +- **Pro tip:** हमेशा एब्सोल्यूट पाथ्स या `Path.Combine` का उपयोग करें ताकि रनटाइम फ़ाइल‑नॉट‑फ़ाउंड त्रुटियों से बचा जा सके। +- **Watch out for:** `Figure` टैग और `Image` आयत के बीच असंगत निर्देशांक—सहायक तकनीकें इस संरेखण पर निर्भर करती हैं। +- **Performance note:** यदि आप कई पेज प्रोसेस कर रहे हैं, तो इमेज स्ट्रीम को `using` ब्लॉक में रैप करें ताकि संसाधन तुरंत मुक्त हो सकें। +- **Version check:** दिखाया गया API Aspose.Pdf 23.8+ के साथ काम करता है। पुराने संस्करणों में क्लास नाम थोड़ा अलग हो सकते हैं (जैसे `FigureElement` के बजाय `LogicalStructureElement`)। + +--- + +## निष्कर्ष + +हमने अभी-अभी **create tagged pdf** को शुरू से अंत तक किया, **add image to pdf** दिखाया, और **set figure position** बताया जबकि **how to tag pdf** और **how to add image** के प्रश्नों का उत्तर एक ही सुसंगत उदाहरण में दिया। कोड चलाने के लिए तैयार है, व्याख्याएँ प्रत्येक चरण के “क्यों” को कवर करती हैं, और अब आपके पास C# में एक्सेसिबल PDFs बनाने की एक ठोस नींव है। + +अगली चुनौती के लिए तैयार हैं? `
` टैग के साथ टेबल जोड़ने की कोशिश करें, या अभिलेखीय उद्देश्यों के लिए PDF/A‑2b अनुपालन लेयर एम्बेड करें। वही पैटर्न—लोड करें, लॉजिकल स्ट्रक्चर तक पहुंचें, टैग बनाएं, दृश्य सामग्री जोड़ें, सेव करें—अधिकांश PDF एक्सेसिबिलिटी कार्यों पर लागू होता है। + +यदि आपको कोई समस्या आती है या कोई उपयोग‑केस यहाँ कवर नहीं हुआ है, तो नीचे टिप्पणी छोड़ें। टैगिंग का आनंद लें, और ऐसे PDFs बनाने का मज़ा लें जिन्हें हर कोई पढ़ सके! + +![Diagram showing a PDF with a Figure tag and image – illustrates how to create tagged pdf](placeholder-image.png "create tagged pdf example") + +{{< /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/digital-signatures/_index.md b/pdf/hongkong/net/digital-signatures/_index.md index 782b755dd..ada81074a 100644 --- a/pdf/hongkong/net/digital-signatures/_index.md +++ b/pdf/hongkong/net/digital-signatures/_index.md @@ -53,6 +53,8 @@ Aspose.PDF Net 程式碼教學 ### [在 C# 中驗證 PDF 簽章 – 完整指南驗證 PDF 數位簽名](./verify-pdf-signature-in-c-complete-guide-to-validate-digital/) 了解如何在 C# 中使用 Aspose.PDF 驗證 PDF 檔案的數位簽章,提供完整步驟與範例程式碼。 +### [如何使用 C# 讀取 PDF 簽章 – 逐步指南](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +了解如何使用 C# 讀取 PDF 中的數位簽章,提供完整步驟與範例程式碼。 ## 其他資源 diff --git a/pdf/hongkong/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/hongkong/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..cc5270a9d --- /dev/null +++ b/pdf/hongkong/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,230 @@ +--- +category: general +date: 2026-03-06 +description: 如何使用 C# 讀取 PDF 中的簽署。學習載入 PDF 文件(C#)、列出 PDF 簽署,並快速可靠地取得 PDF 數位簽署。 +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: zh-hant +og_description: 如何使用 C# 讀取 PDF 中的簽名。本指南示範如何載入 PDF 文件、列出 PDF 簽名,並在幾個簡單步驟中取得數位簽名。 +og_title: 如何使用 C# 讀取 PDF 中的簽名 – 完整指南 +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: 如何使用 C# 讀取 PDF 簽名 – 逐步指南 +url: /zh-hant/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 PDF 中使用 C# 讀取簽名 – 完整指南 + +有沒有想過 **如何讀取** 已嵌入 PDF 檔案中的簽名?也許你正在建立合規儀表板,或只是需要在簽署的合約進入資料庫前進行稽核。好消息是,只要幾行 C# 程式碼加上 Aspose.Pdf 函式庫,就能直接從檔案中取得簽名名稱——不需要手動檢查。 + +在本教學中,我們將示範如何在 C# 中載入 PDF 文件、列出 PDF 簽名,並取得數位簽名的相關資訊。完成後,你將擁有一個可直接執行的主控台應用程式,會印出所有找到的簽名名稱,並提供處理密碼保護檔案等邊緣情況的技巧。 + +## 前置條件 + +- .NET 6.0 或更新版本(此程式碼亦相容 .NET Framework 4.6 以上) +- Aspose.Pdf for .NET(可從 Aspose 官方網站取得免費暫時授權) +- 已包含一個或多個數位簽名的 PDF(範例 `MultiSigned.pdf` 已隨儲存庫提供) + +> **專業提示:** 若使用 Visual Studio,請啟用 *Nullable Reference Types* 以提前捕捉與 null 相關的錯誤。 + +## 步驟 1:在 C# 中載入 PDF 文件 + +首先,我們需要一個 `Document` 物件來代表磁碟上的 PDF 檔案。Aspose.Pdf 的 `Document` 類別能處理從簡單文字擷取到複雜表單處理的所有工作。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**為什麼重要:** 載入 PDF 會驗證檔案是否存在且可讀取。如果檔案損毀或路徑錯誤,我們會提前退出,避免在稍後列舉簽名時遭遇難以理解的錯誤。 + +## 步驟 2:建立 `PdfFileSignature` 輔助器 + +Aspose 將一般 PDF 處理(`Document`)與簽名專屬操作(`PdfFileSignature`)分離。實例化此輔助器即可使用 `GetSignatureNames()` 等方法。 + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**為什麼重要:** `PdfFileSignature` 類別知道如何解析 PDF 中的 `/Sig` 字典項目,這正是數位簽名所在之處。使用它可確保我們以原始方式讀取簽名,保留所有加密元資料。 + +## 步驟 3:取得所有簽名名稱 + +現在進入 **如何讀取簽名** 的核心:呼叫 `GetSignatureNames()`。此方法會回傳一個字串陣列,內容為每個簽名的 *欄位名稱*。 + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**你會看到的結果:** 若 `MultiSigned.pdf` 包含三個名稱分別為 `Signature1`、`Signature2`、`Signature3` 的簽名,主控台輸出將會是: + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## 步驟 4:(可選)驗證每個簽名的有效性 + +僅取得名稱通常已足夠,但許多專案還需要知道每個簽名是否仍然有效。Aspose 允許你依欄位名稱驗證簽名: + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **邊緣情況:** 若 PDF 受密碼保護,必須在呼叫 `VerifySignature` 前提供密碼。載入文件後立即使用 `pdfDocument.Encrypt.Password = "yourPassword";` 設定。 + +## 完整範例程式 + +以下是可直接貼到新主控台專案(`dotnet new console`)的完整程式碼,包含所有步驟、錯誤處理與可選驗證。 + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**預期輸出**(假設有三個有效簽名): + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## 處理常見變化 + +| 情境 | 需要變更的地方 | 為什麼 | +|-----------|----------------|-----| +| **受密碼保護的 PDF** | 在建立 `PdfFileSignature` 前設定 `pdfDocument.Encrypt.Password = "yourPwd";` | 若未提供密碼,簽名字典會被加密,`GetSignatureNames()` 會回傳空陣列。 | +| **大型 PDF(> 100 MB)** | 使用 `pdfSigner.GetSignatureNames(0, 10)` 分頁取得結果(第一個參數為起始索引) | 一次載入全部簽名列表可能佔用過多記憶體。 | +| **完全沒有簽名** | 程式已會印出友善的警告訊息。建議將此情況記錄為稽核事件。 | 協助下游流程決定是拒絕檔案還是要求使用者提供已簽署版本。 | +| **自訂簽名欄位名稱** | 方法會回傳簽署時使用的欄位名稱,例如 `EmployeeApproval`,不需額外處理。 | 讓你能將簽名對應回業務角色。 | + +## 最佳實踐與技巧 + +- **釋放物件**:使用 `using var pdfSigner` 模式可確保本機資源即時釋放。 +- **提前授權**:在 `Main` 開頭呼叫 `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` 以避免評估水印。 +- **執行緒安全**:若平行處理大量 PDF,請為每條執行緒建立獨立的 `PdfFileSignature` 實例,該類別本身不具執行緒安全性。 +- **日誌記錄**:正式環境建議將 `Console.WriteLine` 換成結構化日誌(Serilog、NLog),以便捕捉精確的簽名名稱作為稽核軌跡。 +- **版本檢查**:此程式碼相容於 Aspose.Pdf for .NET 23.10 及更新版本。較舊版本可能需要改用 `PdfSignature` 取代 `PdfFileSignature`。 + +## 結論 + +我們已說明 **如何在 PDF 中使用 C# 讀取簽名**。透過載入 PDF 文件、建立 `PdfFileSignature` 輔助器,並呼叫 `GetSignatureNames()`,即可列出檔案中所有嵌入的數位簽名。若需要,可額外執行驗證以提升信任度,範例程式碼也示範了如何將此功能整合到實務的主控台應用程式中。 + +準備好進一步嗎?試著結合 Aspose 的 `DigitalSignatureUtil` 取得簽署者憑證,或將簽名清單輸入合規儀表板,以標示未簽署的合約。可能性無限——只要記得 **load PDF document C#**、**list PDF signatures**、**get digital signatures PDF**,即可快速完成稽核。 + +祝程式開發順利,願你的 PDF 永遠安全簽署! + +{{< /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-conversion/_index.md b/pdf/hongkong/net/document-conversion/_index.md index 2e3b91f7b..fb1970f5d 100644 --- a/pdf/hongkong/net/document-conversion/_index.md +++ b/pdf/hongkong/net/document-conversion/_index.md @@ -58,6 +58,7 @@ | [XML 轉 PDFSet 影像路徑](./xml-to-pdfset-image-path/) |了解如何使用 Aspose.PDF for .NET 輕鬆地將 XML 轉換為 PDF。本詳細指南將逐步引導您完成整個過程,從設定到完成。 | | [XPS 轉 PDF](./xps-to-pdf/) |透過本逐步教學了解如何使用 Aspose.PDF for .NET 將 XPS 檔案轉換為 PDF。非常適合開發人員和文檔愛好者。 | | [在 C# 中將 PDF 轉換為 PDF/X‑4 – ASP.NET PDF 分步教學](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) |透過本逐步指南了解如何使用 Aspose.PDF for .NET 在 C# 中將 PDF 轉換為 PDF/X‑4 格式。 | +| [Aspose PDF 教學:在 C# 中將 PDF 轉換為 PDF/X‑4](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) |透過本逐步指南了解如何使用 Aspose.PDF for .NET 在 C# 中將 PDF 轉換為 PDF/X‑4 格式。 | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/hongkong/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/hongkong/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..96dce5bd9 --- /dev/null +++ b/pdf/hongkong/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,224 @@ +--- +category: general +date: 2026-03-06 +description: Aspose PDF 教學示範如何在 C# 中使用 Aspose 載入 PDF 文件,將 PDF 轉換為 PDF/X‑4,並高效地儲存轉換後的 + PDF。 +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: zh-hant +og_description: Aspose PDF 教學說明如何在 C# 中載入 PDF 文件,將其轉換為 PDF/X‑4 格式,並使用清晰的程式碼範例儲存轉換後的 + PDF。 +og_title: Aspose PDF 教學:在 C# 中將 PDF 轉換為 PDF/X‑4 +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: Aspose PDF 教學:在 C# 中將 PDF 轉換為 PDF/X‑4 +url: /zh-hant/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose PDF 教學:在 C# 中將 PDF 轉換為 PDF/X‑4 + +有沒有想過如何使用 Aspose 把普通 PDF 轉換成 PDF/X‑4 檔案,且毫不費力?你並非唯一有此需求的人——開發人員常常需要一種可靠的方式,以 **load PDF document C#** 風格載入 PDF、進行轉換,然後 **save the converted PDF** 以供後續工作流程使用。在本指南中,我們將示範一個完整且可執行的範例,正是使用最新的 Aspose.Pdf for .NET 完成此操作。 + +我們將涵蓋從安裝函式庫、載入來源 PDF、轉換為 PDF/X‑4 標準,到最終將結果寫入磁碟的全部步驟。完成後,你將對 **how to use Aspose** 在此常見轉換情境中的使用有深入了解,並獲得處理邊緣案例的技巧。 + +## 前置條件 + +- .NET 6.0 或更新版本(此程式碼亦可在 .NET Framework 上執行,但建議使用 .NET 6 以上)。 +- 有效的 Aspose.Pdf for .NET 授權檔(或可在評估模式下快速測試)。 +- Visual Studio 2022 或任何相容 C# 的 IDE。 +- 位於 `YOUR_DIRECTORY/input.pdf` 的輸入 PDF 檔案。 + +不需要除 `Aspose.Pdf` 之外的其他 NuGet 套件。 + +## 透過 NuGet 安裝 Aspose.Pdf + +在終端機或套件管理員主控台中執行以下指令: + +```bash +dotnet add package Aspose.Pdf +``` + +此指令會取得最新的穩定版本(截至 2026 年 3 月,版本 23.12)。如果你偏好使用介面,請在 NuGet 套件管理員中搜尋 *Aspose.Pdf* 並安裝。 + +## 步驟 1:使用 Aspose 在 C# 中載入 PDF 文件 + +首先需要將來源 PDF 載入記憶體。Aspose 的 `Document` 類別即為入口點。 + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**Why this matters:** 載入檔案會驗證路徑是否存在以及 PDF 是否未損毀。`try/catch` 區塊提供了優雅的錯誤顯示方式——當檔案來自使用者上傳時相當方便。 + +## 步驟 2:將 PDF 轉換為 PDF/X‑4 格式 + +PDF/X‑4 是為可靠列印與保存而設計的 PDF 子集。轉換可確保所有字型皆已嵌入,且檔案符合業界標準。 + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**Why choose `ConvertErrorAction.Delete`?** 某些舊版 PDF 可能包含會導致轉換失敗的元素(例如不支援的註解)。刪除它們可讓流程順暢,但若需要保留這些元素,請檢查輸出結果。 + +### 可選:驗證轉換是否成功 + +如果想更確定,可在轉換後檢查文件的 `PdfFormat`: + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## 步驟 3:儲存已轉換的 PDF 檔案 + +現在文件已符合 PDF/X‑4 格式,將其寫回磁碟。 + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**Result you’ll see:** 會在 `YOUR_DIRECTORY` 中產生名為 `Converted_PDFX4.pdf` 的新檔案。使用任何支援 PDF/X‑4 的 PDF 檢視器(如 Adobe Acrobat、Foxit 等)開啟,即可看到所有字型皆已嵌入,且文件符合 PDF/X‑4 規範。 + +![aspose pdf 教學 - 將 PDF 轉換為 PDF/X‑4](/images/aspose-pdf-conversion.png "aspose pdf 教學顯示 PDF/X‑4 轉換結果") + +*圖片的 alt 文字包含主要關鍵字,符合 SEO 要求。* + +## 完整端對端範例 + +將上述步驟整合起來,以下是一個可自行複製貼上至新 C# 專案的完整主控台應用程式: + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +執行程式後,你應該會看到在主控台上顯示的每一步確認訊息。若發生錯誤,錯誤訊息會指向具體的階段。 + +## 常見問題與邊緣案例 + +### 如果需要保留註解該怎麼辦? + +`ConvertErrorAction.Delete` 會移除不支援的物件,包括某些註解。若必須保留,請改用 `ConvertErrorAction.Keep`,但仍需測試輸出——某些註解仍可能導致合規性警告。 + +### 如何處理大型 PDF(數百 MB)? + +Aspose.Pdf 會以串流方式處理檔案,因而記憶體使用量保持在適度範圍。但對於極大型檔案,你可能需要提升 `System.GC` 的門檻,或將文件分段處理(例如逐頁轉換)。 + +### 能否批次轉換多個檔案? + +當然可以。將載入、轉換、儲存的邏輯包在 `foreach` 迴圈中,遍歷 PDF 目錄。務必針對每個檔案處理例外,避免單一損壞的 PDF 中斷整批處理。 + +### 這在 Linux 上的 .NET Core 可行嗎? + +可以。Aspose.Pdf 為跨平台套件。只要確保已參考 `Aspose.Pdf` NuGet 套件,且在 Linux 主機上安裝了相應的字型檔案(若需要文字渲染),即可正常運作。 + +## 現場專業小技巧 + +- **Set a license early**: `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` – 這會移除評估水印並提升效能。 +- **Validate the output**: 使用 Aspose 的 `PdfFormatValidator` 以程式方式在交付檔案前確認 PDF/X‑4 合規性。 +- **Log conversion time**: 大量批次處理時,透過計時每次轉換 (`Stopwatch`) 可偵測效能退化。 +- **Avoid hard‑coded paths**: 建議使用設定檔或環境變數來設定 `inputPath` 與 `outputPath`,以提升應用程式的可移植性。 + +## 結論 + +在本 **Aspose PDF Tutorial** 中,我們示範了一個完整、端對端的工作流程,說明 **how to use Aspose** 以 **load PDF document C#**,將其轉換為 **PDF/X‑4** 標準,並 **save the converted PDF**。此程式碼片段可直接執行,解釋了每一步的 *why*,並指出在實務專案中可能遇到的陷阱。 + +現在你已掌握基礎,便可擴充此解決方案——批次處理數十個檔案、嵌入自訂中繼資料,或將轉換整合至 Web API。可能性相當廣闊,且 Aspose.Pdf 為你提供快速達成的工具。 + +對於使用 Aspose 處理 PDF 還有其他問題嗎?歡迎留言、參考官方 Aspose 文件,或自行試玩上述程式碼。祝轉換順利! + +{{< /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-creation/_index.md b/pdf/hongkong/net/document-creation/_index.md index f295d7f98..3f5efa78b 100644 --- a/pdf/hongkong/net/document-creation/_index.md +++ b/pdf/hongkong/net/document-creation/_index.md @@ -77,6 +77,12 @@ Aspose.PDF Net 程式碼教學 ### [使用 Aspose.PDF 建立 PDF 文件 – 新增頁面、形狀與儲存](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) 了解如何使用 Aspose.PDF 在 PDF 中新增頁面與形狀,並將文件儲存。 +### [使用 Aspose.PDF 建立 PDF 文件:逐步指南](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +了解如何使用 Aspose.PDF 逐步建立 PDF 文件,涵蓋設定、內容加入與儲存等關鍵步驟。 + +### [使用 Aspose.PDF 建立 PDF 文件 – 完整 C# 指南](./create-pdf-document-with-aspose-pdf-full-c-guide/) +了解如何使用 Aspose.PDF 於 C# 完整建立 PDF 文件,涵蓋設定、內容加入與儲存等步驟。 + ## 其他資源 - [Aspose.PDF 用於網頁文檔](https://docs.aspose.com/pdf/net/) diff --git a/pdf/hongkong/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/hongkong/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..20f400f2c --- /dev/null +++ b/pdf/hongkong/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-03-06 +description: 使用 Aspose.PDF 在 C# 中建立 PDF 文件 ─ 快速學習如何新增空白頁、文字方塊、元件,並儲存 PDF。 +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: zh-hant +og_description: 使用 C# 及 Aspose.PDF 建立 PDF 文件。本指南示範如何新增空白頁、文字方塊、小工具,以及如何儲存 PDF。 +og_title: 使用 Aspose.PDF 建立 PDF 文件 – 完整 C# 教程 +tags: +- pdf +- csharp +- aspose +- forms +title: 使用 Aspose.PDF 建立 PDF 文件 – 完整 C# 指南 +url: /zh-hant/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 建立 PDF 文件使用 Aspose.PDF – 完整 C# 指南 + +有沒有曾經需要在 .NET 專案中 **建立 PDF 文件**,卻不知道從哪裡開始?你並不孤單;許多開發者在第一個需求寫著「產生一個可填寫的 PDF,且同一個文字方塊出現在三頁」時,常會卡在起點。好消息是:只要使用 Aspose.PDF,你只需幾行程式碼就能產出外觀專業的 PDF。 + +在本教學中,我們會一步步說明整個流程:從初始化 PDF、**新增空白頁**、插入 **文字方塊**、以 **widget** 註解複製它,最後 **將 PDF 儲存** 到磁碟。完成後,你會得到一個名為 *MultiWidgetField.pdf* 的可直接使用檔案,並清楚了解每個步驟的意義。 + +## 本指南涵蓋內容 + +- 開始撰寫程式碼前的前置作業。 +- 使用 Aspose.PDF for .NET 逐步建立 PDF 文件。 +- 如何新增空白頁、文字方塊表單欄位,以及額外的 widget 實例。 +- 處理常見陷阱的技巧(例如頁碼索引、欄位命名衝突)。 +- 完整、可直接複製貼上的 C# 程式碼,今天就能執行。 + +不會提供外部文件連結,也不會說「請參考 API 文件」——所有需要的資訊都在這裡。 + +## 前置作業 + +在開始之前,請確保你已具備以下條件: + +1. **.NET 6.0**(或更新版本)已安裝於你的機器。 +2. 有效的 **Aspose.PDF for .NET** 授權或暫時的評估金鑰。 +3. 如 **Visual Studio 2022** 或 **VS Code**(安裝 C# 擴充)等開發環境。 + +就這些——不需要其他額外條件。 + +## 步驟 1:初始化 PDF 文件並新增空白頁 + +在程式化 **建立 PDF 文件** 時,第一件事就是實例化 `Document` 物件。把它想成打開一本全新的筆記本。接著加入所需的頁面;本例中我們需要三頁空白頁。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**為什麼這很重要:** Aspose.PDF 在內部將頁面視為零基集合,但公開 API 為 1 基,因此 `Pages[1]` 代表剛加入的第一頁。提前加入頁面可為之後放置表單欄位提供畫布,且比在文件已增長後再插入頁面更省資源。 + +> **專業小技巧:** 若只需要單一頁面,可省略迴圈,直接呼叫 `pdfDocument.Pages.Add()` 一次。使用迴圈一次加入多頁,可讓程式更具可擴充性。 + +## 步驟 2:在第一頁定義文字方塊表單欄位 + +現在我們已有三張空白紙,接著在第一頁放置一個 **文字方塊**。`TextBoxField` 是一種表單元素,使用者在 Acrobat Reader 或任何支援表單的 PDF 檢視器開啟時,可直接輸入文字。 + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**為什麼要設定矩形座標?** Aspose.PDF 使用點 (1/72 英吋) 為單位。矩形 `(100, 700, 300, 730)` 會將文字方塊放在頁面大約中間,寬 200 pt、高 30 pt。依需求自行調整這些數值即可符合版面配置。 + +> **常見問題:** *需要設定 `Value` 屬性嗎?* +> 不需要,這是可選的。留空會顯示空白欄位;若設定預設值,可提供使用者提示。 + +## 步驟 3:為第 2、3 頁新增相同欄位的 Widget 註解 + +**Widget** 是表單欄位在特定頁面的視覺呈現。預設情況下,欄位只會出現在建立它的那一頁。若要在其他頁面重複使用同一文字方塊,需要將額外的 `WidgetAnnotation` 物件加入欄位的 `Widgets` 集合。 + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**為什麼需要 widget?** 若不加入 widget,使用者只能在第 1 頁看到文字方塊,即使底層欄位已存在。Widget 讓同一個邏輯欄位可以跨多頁顯示,確保使用者在任一頁輸入的文字都會同步顯示。 + +> **邊緣案例:** 若每頁的文字方塊座標不同,只需為每個 widget 更改 `Rectangle` 的值即可。 + +## 步驟 4:將欄位註冊至文件的 Form 集合 + +Aspose.PDF 會維護所有表單欄位的中心登錄。將欄位加入 `Form` 集合,即成為 PDF 互動表單結構的一部份。 + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +第二個參數 (`"Comment"`) 為欄位的 **完整限定名稱**。此名稱必須在整份文件中唯一;否則 Aspose 會拋出例外。 + +## 步驟 5:儲存產生的 PDF – 如何儲存 PDF + +最後,我們把記憶體中的文件寫入磁碟。這就是本教學的 **如何儲存 PDF** 部分。 + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**為什麼要使用絕對路徑?** 絕對路徑可避免執行程式時工作目錄不明的情況,特別是從 Visual Studio 除錯器執行時。如果你偏好相對路徑,只要確保資料夾已存在再呼叫 `Save` 即可。 + +### 預期結果 + +在 Adobe Acrobat Reader 開啟 *MultiWidgetField.pdf*。你會看到第 1、2、3 頁都有相同的文字方塊。無論在任一頁輸入文字,其他頁的文字方塊會即時同步,因為它們共享同一個底層表單欄位。 + +![建立 PDF 文件範例,顯示三頁上的文字方塊](https://example.com/placeholder-image.png "建立 PDF 文件範例,顯示三頁上的文字方塊") + +*圖片替代文字:建立 PDF 文件範例,顯示三頁上的文字方塊。* + +## 完整、可直接執行的範例 + +以下程式碼即為完整範例,可直接貼到新建的主控台專案 (`dotnet new console`) 中執行。所有步驟已依序排列,且程式碼內含說明註解,方便理解。 + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +執行程式後,前往 `C:\Temp\`,開啟產生的 PDF。你會看到三個相同的文字方塊,已可供使用者輸入。 + +## 常見變化與邊緣案例 + +| 情境 | 需要變更的地方 | 原因 | +|----------|----------------|-----| +| **每頁文字方塊尺寸不同** | 為每個 `WidgetAnnotation` 調整 `Rectangle` 值。 | 讓欄位能適應不同版面配置。 | +| **唯讀欄位** | 設定 `commentField.ReadOnly = true;`。 | 防止使用者在首次填寫後再修改內容。 | +| **多行文字方塊** | 設定 `commentField.Multiline = true;` 並增加矩形高度。 | 允許輸入較長的評論,無需捲動。 | +| **新增第二個欄位** | 建立另一個 `TextBoxField`(或任意 `FormField`),並以新名稱重複步驟 2‑4。 | 在同一 PDF 中收集多筆資訊。 | + +## 專業提示與常見陷阱 + +- **頁碼索引:** 記得 `pdfDocument.Pages[1]` 才是第一頁,而非 `[0]`。混用 0 基與 1 基索引會導致「索引超出範圍」例外。 +- **欄位命名衝突:** 兩個欄位不能使用相同的完整限定名稱。若收到重複名稱錯誤,請檢查傳給 `Form.Add` 的字串。 +- **授權 vs. 評估版:** 評估版會在每頁加上浮水印。上線前請部署正式授權以移除浮水印。 +- **效能考量:** 在迴圈中加入數百頁通常沒問題,但若需產生上千頁的大型 PDF,建議改用 + +{{< /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-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/hongkong/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..79d0b8590 --- /dev/null +++ b/pdf/hongkong/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,237 @@ +--- +category: general +date: 2026-03-06 +description: 使用 C# 及 Aspose.PDF 建立 PDF 文件。學習如何新增 PDF 頁面、繪製 PDF 矩形、加入 PDF 形狀,以及控制矩形邊框粗細——一次完整教學。 +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: zh-hant +og_description: 使用 C# 與 Aspose.PDF 建立 PDF 文件。本教學示範如何新增 PDF 頁面、繪製 PDF 矩形、加入 PDF 形狀,以及設定矩形邊框粗細。 +og_title: 使用 Aspose.PDF 建立 PDF 文件 – 完整指南 +tags: +- Aspose.PDF +- C# +- PDF generation +title: 使用 Aspose.PDF 建立 PDF 文件 – 步驟教學 +url: /zh-hant/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< 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 您只需幾行程式碼即可完成,同時還能學會如何 **add page PDF**、**draw rectangle PDF**、**add shape PDF**,以及調整 **rectangle border thickness**。現在就讓我們開始吧。 + +## 您將建立的內容 + +完成本指南後,您將擁有一個完整功能的 C# 主控台應用程式,能夠: + +1. **Creates a PDF document** 從頭開始建立。 +2. **Adds a page PDF** 加入文件中。 +3. **Draws a rectangle PDF** 在該頁面上繪製。 +4. **Validates** 確認矩形保持在頁面範圍內(**add shape PDF** 步驟)。 +5. 設定自訂的 **rectangle border thickness**。 +6. 將結果儲存為 `ShapeValidated.pdf`。 + +不需要外部服務,也不需神祕的設定——只要純粹的 C# 與 Aspose.PDF 即可。 + +### 前置條件 + +- .NET 6.0 或更新版本(此程式碼亦相容於 .NET Framework 4.6+)。 +- `Aspose.Pdf` NuGet 套件的參考。您可以透過以下方式加入: + +```bash +dotnet add package Aspose.Pdf +``` + +- 文字編輯器或 IDE——Visual Studio、VS Code、Rider,或您偏好的其他工具。 + +> **Pro tip:** 若您使用公司電腦,請確認 NuGet feed 未被封鎖;否則會出現 “Package not found” 錯誤。 + +--- + +## 建立 PDF 文件 – 初始化 Document + +第一步是建立一個 `Document` 物件。可將其視為所有頁面與圖形的空白畫布。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +為什麼需要這個物件?它在記憶體中代表整個 PDF 檔案,讓我們可以存取 `Pages` 集合、metadata 與安全設定。取得 Document 後,即可開始堆疊頁面、文字、影像與向量圖形。 + +--- + +## 為 PDF 新增頁面 (add page pdf) + +沒有頁面的 PDF 基本上就是空檔——毫無意義。新增頁面相當簡單,且可自行調整尺寸。此處我們使用預設的 A4 大小。 + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +`Add()` 方法會回傳一個全新的 `Page` 實例,已自動加入 `Pages` 集合,您即可立即在其上繪圖。在實務上,您可能會對資料集迴圈,新增數十頁;同樣的單行呼叫即可於每次迭代使用。 + +--- + +## 繪製矩形圖形 (draw rectangle pdf) + +現在進入視覺部分:繪製帶有可見邊框的矩形。這正是 **draw rectangle pdf** 發揮作用的地方。 + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +需要注意的幾點: + +- `Rect` 使用點 (1 pt ≈ 1/72 英吋)。座標定義左下角與右上角,可精確控制寬度與高度。 +- `BorderInfo` 允許指定哪些邊要畫線以及線條粗細。此處我們對 **all** 邊套用 2 點的線寬,使矩形呈現乾淨且一致的外觀。 + +--- + +## 驗證圖形位置 (add shape pdf) + +在將矩形寫入頁面之前,先確認它位於頁面的可列印區域內是明智的做法。Aspose.PDF 提供了便利的輔助方法來完成此檢查。 + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +為什麼要這樣做?若不小心將圖形部分放在畫面外,PDF 閱讀器可能會裁切,造成使用者困惑。此 **add shape pdf** 防護條件確保僅加入完整可見的內容。 + +--- + +## 儲存 PDF (add page pdf) + +最後,我們將記憶體中的文件寫入磁碟。您可以選擇任何具有寫入權限的路徑。 + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +執行程式後,開啟 `ShapeValidated.pdf`——您應該會看到單一頁面,中央大致置中的矩形擁有整齊的邊框。 + +--- + +## 預期結果 + +當您開啟產生的 PDF 時,會看到: + +- 一頁 A4 大小的頁面。 +- 一個矩形,其左下角座標為 (50 pt, 50 pt),右上角座標為 (600 pt, 800 pt)。 +- 一條 **2‑point thick** 的邊框圍繞矩形。 + +若主控台顯示 “PDF created successfully!” 訊息,即代表程式碼順利執行且未觸發邊界檢查。 + +![說明如何使用 Aspose.PDF 建立 PDF 文件的圖示](https://example.com/diagram-create-pdf.png "建立 PDF 文件 – 視覺概覽") + +*圖片的 alt 文字包含主要關鍵字,以符合 SEO 要求。* + +--- + +## 常見問題與邊緣情況 + +### 如果需要不同的頁面尺寸? + +將預設頁面替換為自訂尺寸: + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### 如何變更邊框顏色? + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### 可以在同一頁面上加入多個圖形嗎? + +當然可以。只要使用新的 `RectangleShape`(或其他 `Shape` 子類別)重複 **add shape pdf** 區塊,並相應調整 `Rect` 座標即可。 + +### 如果矩形超出頁面範圍會怎樣? + +`IsShapeWithinBounds` 呼叫會回傳 `false`。在正式環境的程式碼中,您可能想自動調整圖形大小: + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +--- + +## 重點回顧 + +我們已完整說明使用 Aspose.PDF **creating a PDF document** 的全流程: + +1. 初始化 `Document`。 +2. **Add a page PDF** 使用 `Pages.Add()`。 +3. **Draw a rectangle PDF** 透過 `RectangleShape`。 +4. **Add shape PDF** 僅在確認圖形位於頁面內部後執行。 +5. 使用 `BorderInfo` 控制 **rectangle border thickness**。 +6. 儲存檔案。 + +整個工作流程不到 60 行程式碼即可完成。 + +--- + +## 接下來可以做什麼? + +- **Add text**:使用 `TextFragment` 在矩形內放置標題或標籤。 +- **Insert images**:`Image` 類別可嵌入商標或圖表。 +- **Create tables**:適用於發票或資料報告。 +- **Apply security**:若 PDF 含有機密資料,可設定密碼保護。 + +上述主題皆以本章所述基礎為出發點,讓您能順利探索更進階的 PDF 產生情境。 + +--- + +### 持續實驗 + +不要只停留在單一矩形——嘗試不同的圖形、顏色與線條樣式。Aspose.PDF API 功能豐富,您玩得越多就會越得心應手。若遇到問題,官方 Aspose 文件是可靠的參考,但請記得上方的程式碼已完整、可直接複製貼上執行。 + +祝開發順利,願您的 PDF 總是如您所想完美呈現! + +{{< /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 a58dce748..3c4bf1a2d 100644 --- a/pdf/hongkong/net/document-manipulation/_index.md +++ b/pdf/hongkong/net/document-manipulation/_index.md @@ -17,7 +17,7 @@ ## 可用教程 -### [使用 Aspose.PDF for .NET 為 PDF 新增日期和時間戳](./aspose-pdf-net-date-time-stamps-annotations/) +### [使用 Aspose.PDF for .NET 為 PDF 新增日期和時間戳記註解](./aspose-pdf-net-date-time-stamps-annotations/) 了解如何使用 Aspose.PDF for .NET 有效率地將日期和時間戳記或註解新增至 PDF 文件中。透過這些簡單易行的步驟來增強文件管理。 ### [使用 Aspose.PDF for .NET 為 PDF 新增頁尾](./add-footer-pdf-aspose-dotnet/) @@ -309,7 +309,9 @@ Aspose.PDF Net 程式碼教學 了解如何使用 Aspose.PDF for .NET 分割多頁 PDF 並建立新的 PDF 檔案。遵循本指南並提供程式碼範例。 ### [使用 Aspose.PDF .NET 進行 PDF 操作的終極指南:高效能載入、儲存和取代文本](./master-pdf-manipulation-aspose-pdf-net/) -了解如何使用 Aspose.PDF for .NET 掌握 PDF 操作。本指南涵蓋了 PDF 中的文字載入、保存和替換,非常適合追求效率的開發人員。 + +### [如何在 C# 中使用 Aspose PDF 進行 PDF 敏感資訊遮蔽 – 完整指南](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) +了解如何使用 Aspose.PDF for .NET 在 C# 中對 PDF 文件執行敏感資訊遮蔽,保護隱私並符合合規要求。 ## 其他資源 diff --git a/pdf/hongkong/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/hongkong/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..1c5a07ae4 --- /dev/null +++ b/pdf/hongkong/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-03-06 +description: 學習如何在 C# 中使用 Aspose PDF 進行 PDF 敏感資訊遮蔽。此一步一步的教學示範如何載入 PDF 文件、存取第一頁,並從 + PDF 中移除圖片。 +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: zh-hant +og_description: 如何使用 Aspose PDF 在 C# 中快速遮蔽 PDF。載入 PDF 文件、存取第一頁,僅需幾行程式碼即可從 PDF 中移除圖片。 +og_title: 如何在 C# 中對 PDF 進行遮蔽 – Aspose PDF 教程 +tags: +- Aspose PDF +- C# +- PDF Redaction +title: 如何在 C# 中使用 Aspose PDF 進行 PDF 敏感資訊遮蔽 – 完整指南 +url: /zh-hant/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 C# 使用 Aspose PDF 進行 PDF 遮蔽 – 完整指南 + +有沒有想過 **如何遮蔽 PDF** 檔案而不費吹灰之力?也許你收到的合約隱藏了機密標誌,或是報告中仍顯示需要抹除的佔位圖像。在這種情況下,你會想要一個可靠且程式化的方式來移除該內容——不需要手動使用 Acrobat 的魔法。 + +在本教學中,我們將逐步說明一個簡潔、端到端的解決方案,**載入 PDF 文件 C#**、**存取第一頁 PDF**,然後使用功能強大的 **Aspose PDF** 函式庫 **移除 PDF 中的圖像**。完成後,你將擁有一個可供發佈的完整遮蔽 PDF,並了解每行程式碼的意義。 + +> **小技巧:** Aspose PDF 支援 .NET Framework 4.6+ 以及 .NET Core 3.1+,無論你使用 Windows、Linux 或 macOS,都能順利運作。 + +![how to redact pdf example](redact-pdf-before-after.png){alt="如何遮蔽 PDF 範例"} + +## 需要的工具 + +- **Aspose.PDF for .NET**(最新的 NuGet 套件) +- **C# 開發環境**(Visual Studio、Rider 或 VS Code) +- 包含你想抹除之圖像資源的範例 PDF(我們稱之為 `Sensitive.pdf`) + +不需要額外的第三方工具、也不需要 OCR,僅靠純程式碼即可。 + +## 步驟 1:載入 PDF 文件 C# – 首先的動作 + +在你能遮蔽任何內容之前,必須先將檔案載入記憶體。`Document` 類別是每個 Aspose PDF 操作的入口點。 + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**為什麼這很重要:** +`Document` 會解析整個 PDF 結構,建立一個物件模型,讓你能操作頁面、資源與註解。如果檔案無法載入(路徑錯誤、PDF 損毀),會立即拋出例外——讓你及早發現問題。 + +### 常見陷阱 + +> *「即使檔案存在,我仍收到 `FileNotFoundException`。」* +> 請確認路徑為絕對路徑,或確保專案的工作目錄與 `Sensitive.pdf` 的位置相同。使用 `Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")` 可以避免相對路徑的困擾。 + +## 步驟 2:存取第一頁 PDF – 圖像所在位置 + +圖像以每頁資源的方式儲存。在許多簡單的 PDF 中,第一頁往往是問題所在,所以我們先取得它。 + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**為什麼這很重要:** +Aspose PDF 使用 1 起始的頁碼索引,這與大多數 .NET 集合不同。存取錯誤的頁面可能導致遮蔽錯誤內容,甚至留下機密圖像未被處理。 + +### 邊緣案例考量 + +如果文件沒有頁面(空的 PDF),執行 `pdfDocument.Pages[1]` 會拋出 `IndexOutOfRangeException`。加入簡單的防護可以避免此問題: + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +## 步驟 3:從 PDF 中移除圖像 – 遮蔽資源 + +Aspose PDF 允許依名稱刪除資源。大多數圖像的名稱為 `Im1`、`Im2` 等,但你可以檢查 `firstPage.Resources.Images` 以確認。 + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**為什麼這很重要:** +`RedactResource` 會同時移除圖像以及頁面上對它的所有參照,確保空白區域不會變成斷裂的連結。這是符合 PDF 標準的乾淨擦除方式。 + +### 如何找出正確的圖像名稱 + +如果你不確定圖像名稱是否為 `"Im1"`: + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +執行此程式碼片段,檢查主控台輸出,並將 `"Im1"` 替換為實際顯示的鍵名。 + +## 步驟 4:儲存遮蔽後的 PDF – 完成工作 + +現在不需要的圖像已被移除,將變更寫回磁碟。 + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**為什麼這很重要:** +儲存為 **新** 檔案可保留原始檔不被修改——若需回復時有備援。如果必須覆寫,只要將 `Save` 方法指向原始路徑即可,但請注意此操作無法復原。 + +### 驗證結果 + +在任何 PDF 檢視器中開啟 `Redacted.pdf`。圖像位置應顯示為空白,且文件其餘部分應與原始檔相同。若頁面布局出現偏移,請再次確認只移除了預期的資源,而非共享的 XObject。 + +## 完整範例程式 + +將上述步驟整合起來,以下是完整可直接執行的程式: + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**預期輸出**(於主控台): + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +當你開啟 `Redacted.pdf` 時,原本為 `Im1` 的圖像將不復存在,留下乾淨的頁面。 + +## 常見問答 + +### 這能處理加密的 PDF 嗎? + +如果來源 PDF 受密碼保護,請在 `Document` 建構子中傳入密碼: + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### 如果圖像出現在多個頁面上怎麼辦? + +遍歷每一頁,對相同的圖像名稱呼叫 `RedactResource`(或在每頁中自行找出名稱)。範例: + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### 我可以用同樣方式遮蔽文字嗎? + +可以——使用 `page.Contents.RedactText("confidential")` 或使用 `Redactor` 類別處理更進階的模式。這本身就是一篇完整的教學,但原理與我們對圖像的做法相同。 + +## 小結 – 我們完成了什麼 + +我們已透過程式方式回答了 **如何遮蔽 PDF** 檔案的問題,步驟如下: + +1. 使用 Aspose PDF **載入 PDF 文件 C#**。 +2. **存取第一頁 PDF** 以定位目標資源。 +3. 透過 `RedactResource` **從 PDF 中移除圖像**。 +4. **儲存** 已清理的版本,確保安全。 + +此方法快速、可重複執行,且適用於批次作業——非常適合合規流程或自動化報告產生。 + +如果你想更進一步,建議探索: + +- **批次遮蔽** 整個資料夾內的 PDF。 +- 使用 `Redactor` 以正規表達式 **遮蔽文字**。 +- 在遮蔽後 **嵌入浮水印**,以標示「已清理」狀態。 + +試著執行看看,並依你的檔案調整圖像名稱的判斷邏輯, + +{{< /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/performance-optimization/_index.md b/pdf/hongkong/net/performance-optimization/_index.md index 52e1916c0..9bc949313 100644 --- a/pdf/hongkong/net/performance-optimization/_index.md +++ b/pdf/hongkong/net/performance-optimization/_index.md @@ -50,6 +50,9 @@ ### [使用 Aspose.PDF for .NET 在 PDF 中取消嵌入字體:減少檔案大小並提高效能](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) 了解如何使用 Aspose.PDF for .NET 從 PDF 檔案中取消嵌入字型。透過本逐步指南優化 PDF 效能、減小檔案大小並縮短載入時間。 +### [如何使用 Aspose.Pdf 壓縮 PDF – 快速指南](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) +了解如何使用 Aspose.Pdf 快速壓縮 PDF 文件,提高儲存效率並減少檔案大小。 + ## 其他資源 - [Aspose.PDF 用於網頁文檔](https://docs.aspose.com/pdf/net/) diff --git a/pdf/hongkong/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/hongkong/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..b1afd6eb0 --- /dev/null +++ b/pdf/hongkong/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,200 @@ +--- +category: general +date: 2026-03-06 +description: 學習如何使用 Aspose.Pdf 即時壓縮 PDF。本指南展示如何透過無損壓縮來減少 PDF 檔案大小。 +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: zh-hant +og_description: 如何使用 Aspose.Pdf 壓縮 PDF?請跟隨本步驟教學,減少 PDF 檔案大小,實現無損 PDF 壓縮,並儲存優化的 PDF + 檔案。 +og_title: 如何使用 Aspose.Pdf 壓縮 PDF – 快速指南 +tags: +- pdf +- aspnet +- csharp +title: 如何使用 Aspose.Pdf 壓縮 PDF – 快速指南 +url: /zh-hant/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何使用 Aspose.Pdf 壓縮 PDF – 快速指南 + +有沒有想過 **如何壓縮 pdf** 檔案而不會變成模糊的爛摊子?你並不孤單。大多數開發人員在需要 **減少 pdf 檔案大小** 以便發送電郵附件、上傳至網站或受限於儲存空間時,常會卡住,且擔心影像品質會受損。 + +在本教學中,我們將逐步示範一個完整、可直接執行的範例,向您展示如何使用 Aspose.Pdf 內建的 optimizer 來 **壓縮 pdf**。完成後,您將了解如何 **縮小 pdf 檔案大小**、使用 **無損 pdf 壓縮** 保持影像清晰,並最終 **儲存最佳化的 pdf**,讓任何檢視器都能順利開啟。 + +## 您將學到 + +- 載入一個大型 PDF(例如,內含高解析度影像的檔案)至記憶體。 +- 使用 Aspose.Pdf 的 optimizer,採用其預設的無損設定。 +- 將結果保存為新的、更小的檔案。 +- 若需要更高壓縮率,提供調整壓縮的技巧。 + +不需要外部工具,也不需要神祕的指令列技巧——只要乾淨的 C# 程式碼與清晰的說明。 + +## 前置條件 + +| Requirement | 為何重要 | +|-------------|----------| +| .NET 6.0 or later (or .NET Framework 4.6+) | Aspose.Pdf 同時支援兩者;較新的執行環境可提供更佳效能。 | +| Aspose.Pdf for .NET NuGet package (`Aspose.Pdf`) | `Document` 類別即位於此套件中。 | +| A PDF with large images (e.g., `HeavyImages.pdf`) | 為您提供可實際縮減的目標檔案。 | +| Visual Studio, Rider, or any C# editor you prefer | 舒適最重要——選擇您最習慣的開發工具。 | + +> **Pro tip:** 如果您在 CI/CD 流程中,請在 `.csproj` 中加入 NuGet 參考,確保建置永不遺漏。 + +```xml + + + +``` + +## 步驟 1:載入要壓縮的 PDF + +首先,我們需要一個指向來源檔案的 `Document` 物件。可以把它想像成在編輯章節前先打開一本書。 + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*為何重要:* 載入檔案讓 Aspose.Pdf 有機會讀取所有嵌入的資源(影像、字型等)。若省略此步驟,就無法 **縮小 pdf 檔案大小**。 + +## 步驟 2:套用無損 PDF 壓縮 + +Aspose.Pdf 內建 `Optimize` 方法,預設會執行 **無損 pdf 壓縮** 程序。它會剔除冗餘物件、以相同視覺品質重新壓縮影像,並移除未使用的字型。 + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*為何重要:* 預設的 optimizer 旨在 **縮小 pdf 檔案大小**,同時保留每一個像素。若之後您願意接受微小的品質下降,已註解掉的 `OptimizationOptions` 可讓您以少量額外的 KB 換取更快的速度。 + +## 步驟 3:儲存最佳化的 PDF + +現在文件已變得更精簡,我們將其寫入新檔案。保留原始檔不變是一個好習慣,特別是在測試不同設定時。 + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +儲存後,比較檔案大小: + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +您應該會看到明顯的下降——通常 **30‑70 %**,取決於來源檔中高解析度影像的數量。 + +![如何壓縮 pdf 示意圖](image.png "如何壓縮 pdf") + +*圖片替代文字:* 如何壓縮 pdf – 前後最佳化比較 + +## 進階:針對特定情境微調壓縮 + +雖然預設的 optimizer 已能滿足大多數情況,但有時仍需要進一步 **縮小 pdf 檔案大小**: + +| 情境 | 調整設定 | 效果 | +|----------|-------------------|--------| +| 含有大量點陣圖影像的 PDF | `CompressImages = true` + lower `ImageQuality` (e.g., 70) | 減少影像位元組數,會有輕微視覺損失。 | +| 包含重複字型的 PDF | `RemoveUnusedObjects = true` | 剔除未被引用的字型。 | +| 含有大量中繼資料的 PDF | `RemoveMetadata = true` | 移除隱藏的 XML/中繼資料區塊。 | + +您可以將這些設定組合於 `OptimizationOptions` 物件,並傳遞給 `pdfDoc.Optimize(options)`。 + +## 常見問題與特殊情況 + +**如果 PDF 已經最佳化了怎麼辦?** +Aspose.Pdf 仍會掃描文件,但尺寸變化會非常有限。對已經精簡的檔案執行 optimizer 是安全的,不會損壞任何內容。 + +**我可以壓縮加密的 PDF 嗎?** +可以,但必須在呼叫 `Optimize` 前提供密碼。範例: + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**含有向量圖形的 PDF 呢?** +向量物件本身已相當輕量,optimizer 會著重於點陣圖與中繼資料。對純向量檔案只能期待有限的效益。 + +## 完整、可執行範例 + +以下是一個獨立的 Console 應用程式範例,您可以直接貼到新的 `.csproj` 中。它示範了從載入到驗證的全部步驟。 + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +執行程式後,於任意檢視器開啟 `Optimized.pdf`,您會看到相同的頁面版面、相同清晰的影像,但檔案更小。這就是 **無損 pdf 壓縮** 的魔力。 + +## 結論 + +我們已說明如何使用 Aspose.Pdf 內建的 optimizer 來 **壓縮 pdf** 檔案,示範了實用的 **縮減 pdf 檔案大小** 工作流程,並解釋了每一步背後的原理。遵循「載入 → 最佳化 → 儲存」的三步驟,您即可即時 **縮小 pdf 檔案大小**,以 **無損 pdf 壓縮** 保持影像完整,並自信地 **儲存最佳化的 pdf** 供後續使用。 + +準備好迎接下一個挑戰了嗎?試著將此 optimizer 與批次腳本結合,以處理整個資料夾,或是嘗試可選的 `OptimizationOptions` 以擠出最後的幾個 KB。無論您是在開發桌面工具、Web API,或是伺服器端批次工作,皆可套用相同原則。 + +對 PDF 處理、Aspose.Pdf 的細節或 .NET 檔案 I/O 有更多疑問嗎?在下方留下評論,讓我們持續交流。祝壓縮順利! + +{{< /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/programming-with-security-and-signatures/_index.md b/pdf/hongkong/net/programming-with-security-and-signatures/_index.md index aec2ca253..757146fdc 100644 --- a/pdf/hongkong/net/programming-with-security-and-signatures/_index.md +++ b/pdf/hongkong/net/programming-with-security-and-signatures/_index.md @@ -34,6 +34,8 @@ | [使用 PDF 檔案簽名透過智慧卡進行簽名](./sign-with-smart-card-using-pdf-file-signature/) |了解如何使用 Aspose.PDF for .NET 的智慧卡簽署 PDF 檔案。請按照本逐步指南取得安全的數位簽章。 | | [使用簽名字段透過智慧卡簽名](./sign-with-smart-card-using-signature-field/) |了解如何使用 Aspose.PDF for .NET 的智慧卡安全地簽署 PDF。按照我們的逐步指南即可輕鬆實施。 | | [在 C# 中檢查 PDF 簽章 – 如何讀取已簽署的 PDF 檔案](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) |了解如何使用 Aspose.PDF for .NET 在 C# 中讀取並驗證 PDF 簽章的步驟與技巧。 | +| [如何在 PDF 中使用 C# 驗證簽章 – 完整 Aspose 指南](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) |了解如何使用 Aspose.PDF for .NET 在 C# 中驗證 PDF 簽章的完整步驟與技巧。 | +| [在 C# 中新增 PDF 數位簽章 – 完整步驟指南](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) |了解如何使用 Aspose.PDF for .NET 在 C# 中為 PDF 新增數位簽章,提供完整的逐步指南。 | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/hongkong/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/hongkong/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..bf1c27b1a --- /dev/null +++ b/pdf/hongkong/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-03-06 +description: 使用 Aspose.PDF 為 PDF 加入數位簽章。學習如何建立 PKCS7 分離簽名,並使用 PFX 及自訂回調函式為 PDF 簽名。 +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: zh-hant +og_description: 快速為 PDF 加上數位簽名。本指南說明如何在 C# 中使用 PFX 建立 PKCS7 分離簽章並為 PDF 簽名。 +og_title: 在 C# 中加入 PDF 數碼簽署 – 完整程式教學 +tags: +- Aspose.PDF +- C# +- Digital Signature +title: 在 C# 中加入 PDF 數位簽名 – 完整逐步指南 +url: /zh-hant/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 新增數位簽署 PDF – 完整步驟指南 + +曾經需要 **add digital signature pdf** 檔案卻不知從何下手嗎?你並不孤單;許多開發者在文件需要具法律效力的簽名,而程式碼只能產生普通 PDF 時,都會卡在同一個問題上。 + +在本教學中,我們將手把手示範如何使用 Aspose.PDF for .NET **add digital signature pdf** 文件、建立 PKCS#7 分離簽章,並以 PFX 憑證在純 C# 中完成簽署。完成後,你將擁有可直接執行的程式碼片段、了解每個呼叫背後的「為什麼」,以及如何因應各種特殊情況。 + +## 你將學會 + +- 如何載入未簽署的 PDF 並為簽署做準備。 +- **create pkcs7 detached signature** 的運作原理,以及為何會偏好分離式而非嵌入式簽章。 +- 使用自訂回呼 **sign pdf using pfx** 的完整步驟,讓你全程掌控加密流程。 +- 常見問題的除錯技巧(憑證遺失、雜湊演算法錯誤等)。 + +### 前置條件 + +| Requirement | Reason | +|-------------|--------| +| .NET 6.0 或更新版本 | 提供現代語言功能與更佳的記憶體管理。 | +| Aspose.PDF for .NET(NuGet 套件) | 提供 `PdfFileSignature`、`PKCS7Detached` 等 PDF 工具。 | +| 有效的 PFX 檔案(`.pfx`)且含私鑰 | **sign pdf using pfx** 步驟所必需。 | +| 基本的 C# 知識 | 程式碼相當直觀,但了解 `using` 陳述式會更有幫助。 | + +> **Pro tip:** 將 PFX 密碼從原始碼中抽離——在正式環境使用環境變數或 Azure Key Vault。 + +--- + +## 使用 Aspose.PDF 為 PDF 加入數位簽章的完整流程 + +以下我們將整個流程拆解為五個易於理解的步驟。每一步都附有程式碼片段、說明其重要性,並提供快速驗證方式。 + +![已簽署 PDF 的螢幕截圖,顯示可見的簽章欄位](/images/add-digital-signature-pdf.png "add digital signature pdf example") + +### 步驟 1 – 載入未簽署的 PDF 文件 + +首先,我們需要一個 `Document` 物件來代表要簽署的 PDF。使用 `using var` 可確保檔案句柄自動釋放。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**為什麼要這樣做?** +Aspose 會將 PDF 視為物件圖;載入後即可存取頁面、註解,以及稍後用於簽章的內部位元串流。 + +### 步驟 2 – 初始化 PdfFileSignature 輔助類別 + +`PdfFileSignature` 才是真正負責套用加密封裝的類別,會與 `PKCS7Detached` 緊密合作。 + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**為什麼要分開?** +將簽署器與文件分離,可讓你在最終簽署前,先對同一個 `Document` 進行其他操作(例如加入浮水印)。 + +### 步驟 3 – 建立 PKCS#7 分離簽章(Create PKCS7 Detached Signature) + +**PKCS#7 分離簽章** 只儲存 PDF 的雜湊值,而不包含 PDF 本身。對於大型文件或需保持原始檔不變的情況特別適合。 + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**為什麼需要自訂回呼?** +有時簽署金鑰存放於 HSM 或 Azure Key Vault,無法直接取出私鑰。透過 `CustomSignHash`,你只需把雜湊值交給持有金鑰的服務,即可保持私鑰的安全性。 + +**如果不需要自訂回呼該怎麼辦?** +直接省略 `CustomSignHash`,Aspose 會自動使用 PFX 內的私鑰。但自訂方式更具彈性,也較符合合規需求。 + +### 步驟 4 – 將簽章套用至特定頁面(Sign PDF Using PFX) + +現在我們在頁面上放置可見的簽章欄位。矩形 (rectangle) 定義了位置與大小(以點為單位)。 + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**為什麼要指定矩形?** +可見的簽章讓最終使用者能直觀看到文件已簽署。若將 `isVisible` 設為 `false`,簽章仍然有效,只是隱形,較難被發現。 + +**邊緣案例:** 若 PDF 沒有任何頁面(空檔),此呼叫會拋出 `ArgumentOutOfRangeException`。簽署前務必先確認 `pdfDocument.Pages.Count > 0`。 + +### 步驟 5 – 儲存已簽署的 PDF + +最後,將簽署後的文件寫回磁碟。也可以直接串流至 ASP.NET Core 的回應。 + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**驗證小技巧:** 用 Adobe Acrobat Reader 開啟產生的檔案,簽章面板應顯示綠色勾勾(前提是機器已信任該憑證)。 + +--- + +## 完整可執行範例 + +把前面的步驟全部組合起來,以下是一個可直接複製貼上、執行的 Console 程式(請自行調整路徑與密碼)。 + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**預期輸出:** 主控台會印出「✅ PDF signed successfully!」,且同目錄下會產生 `CustomSigned.pdf`。開啟後,你會看到座標為 (100,100)‑(300,200) 的簽章小工具。 + +--- + +## 常見問題與邊緣案例 + +### 我的 PFX 被智慧卡保護,該怎麼辦? + +使用 `CustomSignHash` 委派將雜湊值傳給智慧卡驅動程式,由驅動程式回傳簽章位元組,Aspose 再把它嵌入 PDF,私鑰永不外洩。 + +### 能一次簽署多個頁面嗎? + +可以。將 `pdfSigner.Sign` 放在迴圈中,依序調整 `pageNumber` 以及(必要時)矩形位置。每次呼叫都會產生獨立的簽章物件;部分檢視器會分別列出它們。 + +### 如何變更雜湊演算法? + +`PKCS7Detached` 預設使用 SHA‑256,你可以設定 `HashAlgorithm` 屬性: + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +請確認你的簽署提供者支援所選的演算法。 + +### 若客戶端機器上憑證鏈未被信任該怎麼處理? + +將完整的憑證鏈包含在 PFX 中,或將根憑證分發至使用者的信任儲存區。否則 Acrobat 會顯示「Signature is unknown」。 + +### 分離簽章能否符合 PDF/A‑3 標準? + +PDF/A‑3 需要嵌入式簽章,分離的 PKCS#7 可能不符合規範。此情況下請移除 `CustomSignHash`,讓 Aspose 內部自行完成簽署,產生嵌入式簽章。 + +--- + +## 產品環境最佳實踐 + +1. **絕不要硬編碼密碼。** 從環境變數或祕密管理服務取得。 +2. **簽署前先驗證 PDF。** 損毀的檔案會拋出 `PdfFileSignatureException`。 +3. **記錄雜湊演算法與憑證指紋**,以便稽核。 +4. **在多種 PDF 檢視器上測試**(Adobe Reader、Foxit、Chrome),確保簽章顯示正確。 +5. **考慮加入時間戳記**,透過 TSA(Time‑Stamp Authority)請求提升簽章的法律效力。 + +--- + +## 結語 + +我們已示範如何使用 Aspose.PDF **add digital signature pdf**、建立 **PKCS#7 detached signature**,以及透過自訂回呼 **sign pdf using pfx** 完成簽署。完整範例即開即用,說明則讓你有信心針對 HSM、時間戳記服務或 PDF/A 相容性進行客製化調整。 + +接下來,你可以探索 **批次簽署多份文件**、整合 **Azure Key Vault** 以安全保存金鑰,或為簽章外觀加入 **視覺客製化**。上述主題皆直接建立在本教學的基礎上。 + +若你已依照步驟操作,現在手上就有一套可供團隊共享、甚至在 AI 助手回覆中引用的可靠解決方案。祝簽署順利,若有任何不清楚的地方,歡迎在下方留言討論! + +{{< /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/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/hongkong/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..dd6096b69 --- /dev/null +++ b/pdf/hongkong/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,194 @@ +--- +category: general +date: 2026-03-06 +description: 學習如何在 C# 中使用 Aspose PDF 驗證 PDF 簽署。逐步執行 PDF 簽署驗證、驗證 PDF 簽署的有效性,並處理受損的簽署。 +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: zh-hant +og_description: 如何使用 Aspose PDF 驗證 PDF 中的簽名。請參考本指南執行 PDF 簽名驗證、驗證 PDF 簽名並偵測 C# 中受損的簽名。 +og_title: 使用 C# 驗證 PDF 簽名 – 完整 Aspose 指南 +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: 使用 C# 驗證 PDF 簽名 – 完整 Aspose 指南 +url: /zh-hant/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 PDF 中使用 C# 驗證簽章 – 完整 Aspose 指南 + +有沒有想過在 PDF 中**如何驗證簽章**而不讓自己抓狂?你並不孤單。許多開發人員在需要進行**pdf 簽章驗證**以符合合規或稽核需求時,常會卡住,而單純「只要相信函式庫」的做法往往會適得其反。 + +在本教學中,我們將一步步示範一個實用的端對端解決方案,不僅**驗證 pdf 簽章**,還會告訴你簽章是否被竄改過。我們會使用 **Aspose PDF** 函式庫,這意味著程式碼可在 .NET 6+、.NET Framework 4.6+ 以及 .NET Core 上執行。完成後,你將擁有一段可直接放入任何 C# 專案的即用程式碼片段。 + +## 您需要的條件 + +- **Aspose.Pdf** NuGet 套件(撰寫時的最新版本 – 23.12)。 +- .NET 開發環境(Visual Studio、Rider 或 VS Code)。 +- 已簽署的 PDF 檔案(我們稱之為 `Signed.pdf`)。 +- 基本的 C# 知識 – 不需特殊技巧,只要一般的 `using` 陳述式與 `Console` 輸入輸出即可。 + +就這樣。沒有額外服務,沒有晦澀的設定檔。準備好了嗎?讓我們開始吧。 + +![驗證簽章流程圖](image.png "驗證簽章") + +## 步驟 1:設定 PDF 簽章驗證專案 + +在呼叫任何 Aspose API 之前,你必須先參考該函式庫。打開終端機或套件管理員主控台,執行: + +```bash +dotnet add package Aspose.Pdf +``` + +或者,如果你偏好使用 UI,請在 NuGet 套件管理員中搜尋 **Aspose.Pdf** 並安裝。此步驟相當重要,因為若沒有 **aspose pdf signature** 組件,稍後就無法存取 `PdfFileSignature` 類別。 + +> **專業提示:** 目標設定為 .NET 6 或更高版本,以獲得最佳效能並避免舊版相容性警告。 + +## 步驟 2:載入 PDF 文件 + +現在套件已安裝,我們可以載入要檢查的 PDF。`Document` 類別代表整個檔案於記憶體中的表示。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**為什麼這很重要:** 載入文件後,我們才能存取其內部結構,包括簽章欄位。若檔案遺失或損毀,`Document` 會拋出例外,你可以捕捉它以提供更友善的使用者體驗。 + +## 步驟 3:建立 Aspose PdfFileSignature 物件 + +手上有文件後,接下來要實例化 `PdfFileSignature`。這個外觀類別知道如何讀取、驗證與操作嵌入於 PDF 中的數位簽章。 + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**說明:** `PdfFileSignature` 建構子接受已載入的 `Document`。內部會解析簽章字典,並提供 `VerifySignature` 與 `IsSignatureCompromised` 等方法。 + +## 步驟 4:驗證簽章完整性 + +**pdf 簽章驗證** 的核心是 `VerifySignature` 方法。若加密雜湊值與儲存的值相符且憑證鏈受信任(此處省略信任管理員的設定),它會回傳 `true`。 + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +如果有多個簽章,只需變更索引 (`0`、`1`、…) 即可。此方法一次檢查完整性與信任度,因而成為大多數情境的首選。 + +## 步驟 5:偵測受損的簽章 + +即使是「有效」的簽章,若文件在簽署後被更改,也可能已受損。Aspose 提供 `IsSignatureCompromised` 以偵測這種微妙情況。 + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**何時使用:** 假設 PDF 已簽署,之後使用者加入註解或變更頁面。雜湊會不同,`IsSignatureCompromised` 會回傳 `true`,而 `VerifySignature` 仍可能為 `true`(若憑證本身沒問題)。同時檢查兩個旗標即可得到完整圖景。 + +## 步驟 6:解讀結果 + +現在我們有兩個布林值:`isSignatureValid` 與 `isSignatureCompromised`。讓我們把它們轉換成友善的主控台輸出。 + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### 預期輸出 + +| 情境 | 主控台輸出 | +|--------------------------------------|--------------------------------| +| 有效且未受損 | `Signature OK` | +| 有效但受損(文件已變更) | `Signature compromised!` | +| 無效(憑證未受信任,雜湊不匹配) | `Signature verification failed` | + +## 完整可執行範例 + +將所有步驟整合起來,以下是完整、即可執行的程式: + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +複製、貼上、調整 `pdfPath` 後執行。若環境設定正確,你會看到上表中的三種訊息之一。 + +## 常見問題與 PDF 簽章驗證技巧 + +| 問題 | 發生原因 | 解決方法 / 避免方式 | +|--------------------------------------|------------------------------------------|--------------------------------------------------------------------------------------| +| **缺少 Aspose 授權** | 免費評估版會加上浮水印,且可能限制某些 API 呼叫。 | 註冊授權 (`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`)。 | +| **多個簽章但索引錯誤** | 可能檢查到錯誤的簽章,導致偽陰性。 | 使用 `signatureVerifier.GetSignatureCount()` 迴圈,逐一檢查每個簽章。 | +| **憑證鏈未受信任** | `VerifySignature` 會失敗,若根憑證不在受信任的儲存區。 | 將簽署的 CA 加入 Windows 受信任根憑證儲存區,或設定自訂的 `CertificateValidator`。 | +| **檔案被其他程序鎖定** | 若 PDF 正在其他地方開啟,會拋出 `IOException`。 | 使用 `FileStream` 並設定 `FileShare.ReadWrite`,或先複製到暫存檔案。 | +| **PDF 路徑不正確** | 簡單的拼寫錯誤會導致 `FileNotFoundException`。 | 在載入前使用 `File.Exists(pdfPath)` 來驗證路徑。 | + +### 您可能遇到的邊緣案例 + +- **分離式簽章**:部分 PDF 會將簽章儲存在外部。Aspose 的 `PdfFileSignature` 目前僅支援嵌入式簽章。 +- **時間戳記簽章**:若需驗證時間戳記授權機構(TSA),必須以自訂的 `VerificationOptions` 物件呼叫 `VerifySignature`——超出本快速指南範圍,但在合規性要求高的專案中值得留意。 + +## 下一步 – 擴充驗證邏輯 + +現在你已掌握 **如何驗證簽章** 的基礎,或許想要: + +1. **根據受信任憑證清單(例如公司 PKI)驗證 PDF 簽章**。 +2. 使用 `GetSignatureInfo` **匯出簽章詳細資訊**(簽署者名稱、簽署時間、憑證指紋)。 +3. 在資料夾中 **批次處理多個 PDF**,並將結果記錄至 CSV 以供稽核。 + +上述所有操作都是剛才程式碼的直接延伸,且仍屬於同一 **aspose pdf signature** 生態系。 + +--- + +**總而言之**,你現在已清楚知道如何使用 C# 與 Aspose 在 PDF 中**驗證簽章**、偵測受損簽章,以及驗證失敗時的處理方式。此方法穩健、支援多重簽章,且可整合至更大的文件處理流程中。 + +對此情境有其他變化嗎?或許你需要簽署 PDF 而非驗證,亦或是處理加密的 PDF。留下評論,我們一起探討。祝開發愉快! + +{{< /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/programming-with-stamps-and-watermarks/_index.md b/pdf/hongkong/net/programming-with-stamps-and-watermarks/_index.md index 15ada31c5..26c6d9ef0 100644 --- a/pdf/hongkong/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/hongkong/net/programming-with-stamps-and-watermarks/_index.md @@ -39,6 +39,7 @@ Aspose.PDF 的「使用圖章和浮水印進行程式設計」.NET 教學課程 | [頁首頁尾部分中的表格](./table-in-header-footer-section/) |了解如何使用 Aspose.PDF for .NET 輕鬆地將文字新增至 PDF 檔案的頁尾。包含逐步指南,可實現無縫整合。 | | [PDF 檔案頁尾中的文字](./text-in-footer/) |了解如何使用 Aspose.PDF for .NET 在 PDF 檔案的頁尾中新增文字。 | | [PDF 檔案標題中的文本](./text-in-header/) |透過本逐步教學學習如何使用 Aspose.PDF for .NET 在 PDF 中新增文字標題。有效率且有效地增強您的文件。 | +| [使用 C# 建立帶 Bates 編號的 PDF 文件(完整指南)](./create-pdf-document-with-bates-numbering-in-c-full-guide/) |透過本完整指南,學習在 C# 中使用 Aspose.PDF for .NET 為 PDF 文件添加 Bates 編號,提升文件管理與追蹤效率。 | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/hongkong/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/hongkong/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..9a04837f9 --- /dev/null +++ b/pdf/hongkong/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,180 @@ +--- +category: general +date: 2026-03-06 +description: 在 C# 中建立 PDF 文件,輕鬆加入 Bates 編號。學習如何在 PDF 中新增空白頁、在頁面上放置印章,並實作 Bates 編號。 +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: zh-hant +og_description: 在 C# 中建立 PDF 文件並加入 Bates 編號。本指南說明如何新增空白頁 PDF、在頁面上放置印章,以及套用 Bates 編號。 +og_title: 使用 Bates 編號建立 PDF 文件 – C# 教學 +tags: +- Aspose.Pdf +- C# +- PDF automation +title: 使用 C# 建立帶有 Bates 編號的 PDF 文件 – 完整指南 +url: /zh-hant/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 使用 C# 建立帶 Bates 編號的 PDF 文件 + +有沒有過想 **在 C# 中建立 PDF 文件**,卻不知道如何加入 Bates 編號,結果抓狂的時候?你並不孤單——律師事務所、法院,甚至一些企業合規團隊每天都會碰到這個難題。好消息是,只要寫幾行 Aspose.Pdf 程式碼,就能快速產生全新 PDF、加上一頁空白頁,並在同一流程中蓋上正確的 Bates 編號。 + +在本教學中,我們會一步步說明整個過程:從專案設定、加入空白頁 PDF、了解 **如何加入 Bates 編號**,最後 **在頁面上放置印章** 並儲存結果。完成後,你會得到一段可直接放入任何 .NET 應用程式的完整範例程式碼。沒有模糊的參考,只有完整、可執行的範例。 + +## 你需要的環境 + +- **.NET 6+**(或 .NET Framework 4.6+ – Aspose.Pdf 兩者皆支援) +- **Aspose.Pdf for .NET** NuGet 套件(`Install-Package Aspose.Pdf`) +- 一個好用的 IDE(Visual Studio、Rider,或是安裝 C# 擴充功能的 VS Code) + +就這樣。無需額外 DLL,亦不需要外部服務。現在就開始吧。 + +## 步驟 1:建立 PDF 文件 – 初始設定 + +首先,我們需要一個全新的 `Document` 物件。把它想像成所有內容將要寫入的空白畫布。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **為什麼這很重要:** `Document` 類別是每個 Aspose 操作的入口點。建立它後,你就能存取 `Pages` 集合、metadata 與安全設定——所有打造專業 PDF 的基礎元件。 + +## 步驟 2:加入空白頁 PDF + +沒有頁面的 PDF 就像一本沒有頁面的書——毫無用處。加入空白頁相當簡單,且提供了可供蓋上 Bates 編號的表面。 + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **小技巧:** 若需要多頁,只要在迴圈中呼叫 `pdfDocument.Pages.Add()`。每次呼叫都會回傳一個全新的 `Page` 物件,讓你可以獨立客製化。 + +## 步驟 3:如何加入 Bates 編號 – 建立 TextStamp + +接下來就是重點:**Bates 編號**。在 Aspose.Pdf 中,它只是一個帶有特殊 artifact 標記的 `TextStamp`。 + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **為什麼要設定 `Artifact`:** 某些 PDF 閱讀器會把 Bates 編號當作可搜尋的 metadata。將印章標記為 `BatesNumbering` artifact,可確保下游工具自動辨識。 + +## 步驟 4:在頁面上放置印章 + +印章準備好後,我們現在 **在頁面上放置印章**。這一步會讓視覺上的編號真的出現在 PDF 中。 + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **邊緣情況:** 若需要每頁的編號自動遞增,可在遍歷 `pdfDocument.Pages` 時,先更新 `batesStamp.Value`,再呼叫 `AddStamp`。此範例僅示範使用固定的 “Bates‑001”。 + +## 步驟 5:儲存並驗證結果 + +最後,我們把 PDF 寫入磁碟。請選擇一個你有寫入權限的資料夾,否則會拋出 `UnauthorizedAccessException`。 + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +當你在任何檢視器中開啟 `BatesStamped.pdf`,應該會看到左下角(右下角)有一個小小的 “Bates‑001”。 + +> **預期輸出:** +> ![PDF with Bates number stamp](image-placeholder.png "PDF with Bates number stamp") +> *Alt text: PDF with Bates number stamp on the bottom‑right corner.* + +如果編號沒有顯示,請再次檢查 margin 設定,並確認頁面尺寸不是太小(預設 A4 正常)。同時也要確保 `Artifact` 標記沒有在後續處理工具中被剝除。 + +## 完整可執行範例 + +以下是完整、可直接複製貼上的程式碼。它包含所有 `using` 指示與說明註解,方便你快速上手。 + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +執行程式、打開 PDF,你會看到 Bates 編號正好出現在我們指定的位置。 🎉 + +## 常見變化與注意事項 + +| 情境 | 需要變更的地方 | 原因 | +|----------|----------------|-----| +| **多頁且編號遞增** | 在 `pdfDocument.Pages` 迴圈中,於 `AddStamp` 前設定 `batesStamp.Value = $"Bates-{i:D3}"` | 為每頁提供唯一識別碼,符合法律文件的常見需求 | +| **不同位置(左上)** | 將 `HorizontalAlignment = HorizontalAlignment.Left` 與 `VerticalAlignment = VerticalAlignment.Top` | 某些組織偏好將編號放在頁首而非頁腳 | +| **自訂字型或顏色** | 設定 `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` | 提升可讀性或符合品牌指引 | +| **將既有 PDF 作為背景** | 使用 `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` | 需要在預先產生的表單上蓋章時非常實用 | + +## 小結 + +我們剛剛示範了如何 **建立 PDF 文件**、**加入空白頁 PDF**,以及 **加入 Bates 編號**,再 **在頁面上放置印章** 並儲存檔案。程式碼刻意寫得精簡,方便你在更大的工作流程中自行調整——無論是一次處理數十個檔案,或是整合到 Web 服務中。 + +如果想更進一步,可以考慮: + +- 為大量案件檔案自動化遞增邏輯。 +- 將 PDF 產生流程嵌入 ASP.NET Core API。 +- 使用 `pdfDocument.Encrypt(...)` 加入密碼保護等安全機制。 + +盡情實驗、勇於嘗試,並在留言區提出問題。祝開發順利,願你的 PDF 永遠都能完美蓋章! + +{{< /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/programming-with-tagged-pdf/_index.md b/pdf/hongkong/net/programming-with-tagged-pdf/_index.md index 490cce634..7368d2a17 100644 --- a/pdf/hongkong/net/programming-with-tagged-pdf/_index.md +++ b/pdf/hongkong/net/programming-with-tagged-pdf/_index.md @@ -45,6 +45,7 @@ Aspose.PDF for .NET 的「使用標記 PDF 進行程式設計」教學課程將 | [PDF檔案中的文字結構元素](./text-structure-elements/) |學習使用 Aspose.PDF for .NET 操作 PDF 中的文字結構元素。本逐步指南涵蓋了創建結構化 PDF 所需的所有內容。 | | [驗證 PDF 文件](./validate-pdf/) |了解如何使用 Aspose.PDF for .NET 驗證 PDF 檔案。檢查其是否符合標準並產生驗證報告。 | | [在 C# 中建立標記 PDF – 完整步驟指南](./create-tagged-pdf-in-c-complete-step-by-step-guide/) |透過完整步驟指南,使用 C# 建立標記 PDF,提升文件可存取性與結構。 | +| [在 C# 中建立標記 PDF – 步驟指南](./create-tagged-pdf-in-c-step-by-step-guide/) |透過步驟指南,使用 C# 建立標記 PDF,提升文件可存取性與結構。 | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/hongkong/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/hongkong/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..9d7a0df86 --- /dev/null +++ b/pdf/hongkong/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-03-06 +description: 使用 C# 的 Aspose.Pdf 建立標記 PDF。了解如何將圖像加入 PDF、設定圖形位置,並為可及性標記 PDF。 +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: zh-hant +og_description: 使用 Aspose.Pdf 建立標記 PDF。本指南說明如何將圖像加入 PDF、設定圖形位置,以及為可及性標記 PDF。 +og_title: 在 C# 中建立標籤 PDF – 完整教學 +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: 在 C# 中建立標記 PDF – 步驟說明指南 +url: /zh-hant/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 C# 中建立標記 PDF – 完整教學 + +曾經需要在 C# 中 **create tagged PDF**,卻不知從何下手嗎?你並不孤單;如今無障礙是必須,而標記 PDF 是符合規範文件的基礎。在本教學中,我們將示範一個真實案例,說明如何 **adds image to PDF**、設定圖形位置,並展示使用 Aspose.Pdf **how to tag PDF**。完成後,你將擁有一個完整標記的 PDF,隨時可以發送給任何人。 + +我們會從載入既有檔案一直講到儲存最終輸出,讓你不必再四處搜尋「how to add image」的解法。內容精簡、可直接執行,適用於 Aspose.Pdf 23.8(撰寫時的最新版本)。打開你的 IDE,讓我們開始吧。 + +--- + +## 需要的環境 + +- **Aspose.Pdf for .NET**(NuGet 套件 `Aspose.Pdf`)。 +- .NET 6+(或 .NET Framework 4.7.2+)。 +- 一個已具備邏輯結構(即已標記)的輸入 PDF——若尚未標記,可透過 `pdfDocument.TaggedContent = true` 來啟用。 +- 你想嵌入的圖像檔案(`image.png`)。 + +就這些。無需額外函式庫,亦不需複雜的設定檔。 + +--- + +## 步驟 1:載入既有 PDF 文件(建立標記 PDF 基礎) + +首先,我們打開要進行增強的 PDF。載入檔案後即可取得其邏輯結構,這對 **create tagged pdf** 流程至關重要。 + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*為什麼重要:* 若沒有標記樹,PDF 無法向螢幕閱讀器傳遞結構資訊。啟用標記可確保我們新增的任何元素(例如圖形)都會繼承正確的階層。 + +--- + +## 步驟 2:存取邏輯結構根節點(How to Tag PDF) + +接著,我們深入 PDF 的邏輯結構。根元素是所有標記的容器——可視為文件的大綱。 + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*說明:* `logicalRoot` 讓我們可以附加新標記,如 `
` 或 `
`。這就是 **how to tag PDF** 程式化操作的核心。 + +--- + +## 步驟 3:建立 Figure 標記並設定位置(Set Figure Position) + +*Figure* 標記會將視覺內容與可選的說明文字結合。我們將建立此標記、設定位置,並將其附加到根節點。 + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*為什麼要設定位置:* **set figure position** 步驟決定視覺元素在頁面上的落點。若省略此步,圖形可能出現在意外位置,或對輔助技術不可見。 + +--- + +## 步驟 4:加入視覺呈現 – 插入圖像(Add Image to PDF) + +標記已就緒,接下來需要實際的圖像。這正是回應 **add image to pdf** 的部分。 + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*重點:* 矩形座標必須與先前定義的 `figureTag.Position` 相符;否則圖形與其視覺內容會不同步,破壞無障礙性。 + +--- + +## 步驟 5:儲存更新後的 PDF(Finish Creating Tagged PDF) + +最後,我們將變更寫入新檔案。保留原始檔案不變是良好做法。 + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +此時,你已擁有一個 **create tagged pdf** 檔案,內含正確定位且被 `
` 標記包裹的圖像。於 Adobe Acrobat 開啟 `output.pdf`,檢查 *Tags* 面板——應可在根節點下看到 `Figure` 節點。 + +--- + +## 完整、可直接執行的範例 + +以下程式碼可直接貼到 Console 應用程式中。所有步驟已依正確順序排列。 + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### 預期結果 + +- `output.pdf` 會在 (100, 150) 點的位置顯示圖像,尺寸為 300 × 200 點。 +- *Tags* 面板會顯示一個包住圖像的 `Figure` 元素。 +- 螢幕閱讀器會在描述圖片前先朗讀「Figure」,滿足基本的無障礙標準。 + +--- + +## 常見問題與特殊情況 + +### 若來源 PDF 尚未標記該怎麼辦? + +Aspose.Pdf 允許透過設定 `pdfDocument.TaggedContent.IsTagged = true;` 來開啟標記。函式庫會產生預設的標記樹,之後即可如前所示加入自訂標記。 + +### 可以為 Figure 加上說明文字嗎? + +可以。建立 `figureTag` 後,你可以附加一個 `Paragraph`,內含 `TextFragment`,並將其 `Tag` 設為 `Caption`。範例: + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### 要如何把圖形放到其他頁面? + +將 `var firstPage = pdfDocument.Pages[1];` 替換為目標頁面的索引,例如 `pdfDocument.Pages[3]`。若頁面尺寸不同,請同時調整 `Position` 座標。 + +### 若需要標記多張圖像該怎麼做? + +為每張圖像建立新的 `Figure`,給予唯一的 `Position`,並將相對應的 `Image` 物件加入對應頁面。使用迴圈處理圖像集合相當方便。 + +### 這樣做能符合 PDF/A 標準嗎? + +Aspose.Pdf 支援 PDF/A‑1b、PDF/A‑2b 與 PDF/A‑3b。若要產生 PDF/A 文件,請在儲存前設定相容模式: + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +標記邏輯保持不變。 + +--- + +## 專業技巧與常見陷阱 + +- **專業技巧:** 永遠使用絕對路徑或 `Path.Combine`,避免執行時找不到檔案的錯誤。 +- **注意事項:** `Figure` 標記與 `Image` 矩形的座標必須一致——輔助技術依賴此對齊。 +- **效能提醒:** 若處理大量頁面,請將圖像串流包在 `using` 區塊中,以即時釋放資源。 +- **版本檢查:** 此 API 於 Aspose.Pdf 23.8+ 可正常運作。較舊版本的類別名稱可能略有不同(例如 `LogicalStructureElement` 取代 `FigureElement`)。 + +--- + +## 結論 + +我們已從頭到尾 **create tagged pdf**,示範了 **add image to pdf**,並說明了 **set figure position**,同時回答了 **how to tag pdf** 與 **how to add image** 的需求。程式碼已可直接執行,說明涵蓋每一步的「為什麼」,讓你在 C# 中建立可存取的 PDF 有了堅實基礎。 + +想挑戰下一步嗎?試著加入 `
` 標記,或為存檔加入 PDF/A‑2b 相容層以作長期保存。相同的流程——載入、存取邏輯結構、建立標記、附加視覺內容、儲存——適用於大多數 PDF 無障礙任務。 + +如果遇到問題或有未涵蓋的使用情境,歡迎在下方留言。祝標記順利,打造每個人都能閱讀的 PDF! + +![Diagram showing a PDF with a Figure tag and image – illustrates how to create tagged pdf](placeholder-image.png "create tagged pdf example") + +{{< /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/digital-signatures/_index.md b/pdf/hungarian/net/digital-signatures/_index.md index a8f891a70..b1956bcc0 100644 --- a/pdf/hungarian/net/digital-signatures/_index.md +++ b/pdf/hungarian/net/digital-signatures/_index.md @@ -53,6 +53,8 @@ Ismerje meg, hogyan ellenőrizheti a digitális aláírásokat PDF fájlokban az ### [PDF aláírás ellenőrzése C#-ban – Teljes útmutató a digitális aláírás ellenőrzéséhez PDF-ben](./verify-pdf-signature-in-c-complete-guide-to-validate-digital/) Ismerje meg, hogyan ellenőrizheti a PDF digitális aláírását C#-ban az Aspose.PDF for .NET segítségével, lépésről lépésre útmutatóval. +### [Hogyan olvassuk ki az aláírásokat PDF-ben C#-ban – Lépésről lépésre útmutató](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +Ismerje meg, hogyan olvashatja ki a digitális aláírásokat PDF-fájlokból C#-ban az Aspose.PDF for .NET segítségével. ## További források diff --git a/pdf/hungarian/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/hungarian/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..ee5530fc7 --- /dev/null +++ b/pdf/hungarian/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-06 +description: Hogyan olvassuk ki az aláírásokat egy PDF-ben C#-ban. Tanulja meg, hogyan + töltsön be PDF-dokumentumot C#-ban, listázza a PDF-aláírásokat, és szerezze meg + a digitális aláírásokat PDF-ben gyorsan és megbízhatóan. +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: hu +og_description: Hogyan olvassuk ki az aláírásokat egy PDF-ben C#-vel. Ez az útmutató + megmutatja, hogyan töltsünk be PDF-dokumentumot C#-ban, listázzuk a PDF-aláírásokat, + és szerezzük meg a digitális aláírásokat néhány egyszerű lépésben. +og_title: Hogyan olvassuk a PDF aláírásait C#-ban – Teljes útmutató +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: Hogyan olvassuk a PDF aláírásait C#‑ban – Lépésről lépésre útmutató +url: /hu/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan olvassuk ki az aláírásokat PDF-ben C#‑vel – Teljes útmutató + +Gondolkodtál már azon, **hogyan olvassuk ki az aláírásokat**, amelyek már be vannak ágyazva egy PDF‑fájlba? Lehet, hogy egy megfelelőségi irányítópultot építesz, vagy egyszerűen csak auditálni szeretnéd a aláírt szerződéseket, mielőtt azok az adatbázisodba kerülnének. A jó hír, hogy néhány C#‑sor és az Aspose.Pdf könyvtár segítségével közvetlenül kiolvashatod az aláírások nevét a fájlból – manuális ellenőrzés nélkül. + +Ebben az útmutatóban végigvezetünk a PDF‑dokumentum betöltésén C#‑ben, a PDF‑aláírások listázásán és a digitális aláírások PDF‑információinak lekérésén. A végére egy kész, futtatható konzolalkalmazást kapsz, amely kiírja az összes megtalált aláírás nevét, valamint tippeket a speciális esetek, például a jelszóval védett fájlok kezeléséhez. + +## Előfeltételek + +- .NET 6.0 vagy újabb (a kód .NET Framework 4.6+‑al is működik) +- Aspose.Pdf for .NET (a Aspose weboldaláról ingyenes, ideiglenes licencet szerezhetsz) +- Olyan PDF, amely már tartalmaz egy vagy több digitális aláírást (a `MultiSigned.pdf` mintafájl a repóban megtalálható) + +> **Pro tipp:** Ha Visual Studio‑t használsz, engedélyezd a *Nullable Reference Types* funkciót, hogy a null‑kapcsolódó hibákat már a fejlesztés korai szakaszában elkapd. + +## 1. lépés: PDF‑dokumentum betöltése C#‑ben + +Az első dolog, amire szükségünk van, egy `Document` objektum, amely a lemezen lévő PDF‑fájlt képviseli. Az Aspose.Pdf `Document` osztálya mindent kezel a egyszerű szövegkinyeréstől a komplex űrlapfeldolgozásig. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**Miért fontos:** A PDF betöltése ellenőrzi, hogy a fájl létezik és olvasható. Ha a fájl sérült vagy az elérési út hibás, a program korán kilép, ahelyett, hogy később rejtélyes hibákkal szembesülne az aláírások enumerálása során. + +## 2. lépés: `PdfFileSignature` segéd létrehozása + +Az Aspose szétválasztja az általános PDF‑kezelést (`Document`) a aláírás‑specifikus műveletektől (`PdfFileSignature`). Ennek a segédnek a példányosítása hozzáférést biztosít olyan metódusokhoz, mint a `GetSignatureNames()`. + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**Miért fontos:** A `PdfFileSignature` osztály tudja értelmezni a PDF `/Sig` szótárbejegyzéseit, ahol a digitális aláírások találhatók. Ennek használata biztosítja, hogy pontosan úgy olvassuk ki az aláírásokat, ahogy azok hozzá lettek adva, megőrizve minden kriptográfiai metaadatot. + +## 3. lépés: Az összes aláírás nevének lekérése + +Most jön a **hogyan olvassuk ki az aláírásokat** lényege: hívd meg a `GetSignatureNames()` metódust. Ez a metódus egy karakterlánc‑tömböt ad vissza, amely az egyes aláírások *mezőneveit* tartalmazza. + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**Mit fogsz látni:** Ha a `MultiSigned.pdf` három aláírást tartalmaz `Signature1`, `Signature2` és `Signature3` nevekkel, a konzol kimenete a következő lesz: + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## 4. lépés: (Opcionális) Az egyes aláírások érvényességének ellenőrzése + +A nevek kiolvasása gyakran elegendő, de sok projektnek szüksége van arra is, hogy megtudja, az egyes aláírások még érvényesek‑e. Az Aspose lehetővé teszi egy aláírás mezőneve alapján történő validálását: + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **Speciális eset:** Ha a PDF jelszóval védett, a `VerifySignature` meghívása előtt meg kell adni a jelszót. Használd a `pdfDocument.Encrypt.Password = "yourPassword";` sort a dokumentum betöltése után. + +## Teljes működő példa + +Az alábbi programot egyszerűen másold be egy új konzolprojektbe (`dotnet new console`). Tartalmazza az összes lépést, a hibakezelést és az opcionális ellenőrzést. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**Várható kimenet** (ha három érvényes aláírás van): + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## Gyakori variációk kezelése + +| Szituáció | Mit kell módosítani | Miért | +|-----------|---------------------|------| +| **Jelszóval védett PDF** | `pdfDocument.Encrypt.Password = "yourPwd";` beállítása a `PdfFileSignature` létrehozása előtt. | Jelszó nélkül a aláírás‑szótárak titkosítva vannak, és a `GetSignatureNames()` üres tömböt ad vissza. | +| **Nagy PDF‑ek ( > 100 MB )** | `pdfSigner.GetSignatureNames(0, 10)` használata az eredmények lapozásához (első paraméter = kezdő index). | Az összes aláírás egyidejű betöltése sok memóriát fogyaszthat. | +| **Egyáltalán nincs aláírás** | A kód már kiír egy barátságos figyelmeztetést. Érdemes ezt audit‑eseményként naplózni. | Segít a downstream folyamatoknak eldönteni, hogy elutasítsák‑e a fájlt, vagy kérjenek aláírt változatot. | +| **Egyedi aláírás mezőnevek** | A metódus visszaadja a aláíráskor használt mezőnevet, pl. `EmployeeApproval`. Nincs további munka szükséges. | Lehetővé teszi, hogy az aláírásokat visszakapcsold az üzleti szerepkörökhöz. | + +## Legjobb gyakorlatok és tippek + +- **Objektumok felszabadítása**: A `using var pdfSigner` minta garantálja, hogy a natív erőforrások időben felszabadulnak. +- **Licenc korai beállítása**: Hívd meg a `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` sort a `Main` elején, hogy elkerüld a kiértékelési vízjelet. +- **Szálbiztonság**: Ha sok PDF‑et dolgozol fel párhuzamosan, minden szálnak hozz létre külön `PdfFileSignature` példányt. Az osztály nem szálbiztos. +- **Naplózás**: Éles környezetben cseréld le a `Console.WriteLine`‑t egy strukturált naplózóval (Serilog, NLog), hogy pontos aláírásneveket rögzíts audit‑naplóban. +- **Verzióellenőrzés**: A kód az Aspose.Pdf for .NET 23.10‑es és újabb verzióival működik. Régebbi verziók esetén a `PdfSignature` osztályra lehet szükség a `PdfFileSignature` helyett. + +## Összegzés + +Áttekintettük, **hogyan olvassuk ki az aláírásokat** egy PDF‑ből C#‑vel. A PDF dokumentum betöltésével, egy `PdfFileSignature` segéd létrehozásával és a `GetSignatureNames()` meghívásával felsorolhatod a fájlban beágyazott minden digitális aláírást. Az opcionális ellenőrzés további bizalmi réteget ad, a mintakód pedig pontosan megmutatja, hogyan integráld ezt egy valós konzolalkalmazásba. + +Készen állsz a következő lépésre? Próbáld meg kombinálni ezt az Aspose `DigitalSignatureUtil`‑jával, hogy kinyerd a aláíró tanúsítványokat, vagy add át az aláíráslistát egy megfelelőségi irányítópulthoz, amely jelzi a nem aláírt szerződéseket. A lehetőségek végtelenek – csak ne feledd, **PDF betöltése C#‑ben**, **PDF aláírások listázása** és **digitális aláírások PDF‑információinak lekérése** minden gyors audit esetén. + +Boldog kódolást, és legyenek a PDF‑jeid mindig biztonságosan aláírva! + +{{< /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-conversion/_index.md b/pdf/hungarian/net/document-conversion/_index.md index 32b41d9e1..940ba53db 100644 --- a/pdf/hungarian/net/document-conversion/_index.md +++ b/pdf/hungarian/net/document-conversion/_index.md @@ -57,6 +57,7 @@ Megtanulod, hogyan adhatsz meg konvertálási beállításokat, hogyan kinyerhet | [XML PDF-beállításaKépútvonal beállítása](./xml-to-pdfset-image-path/) | Ismerje meg, hogyan konvertálhat könnyedén XML-t PDF-be az Aspose.PDF for .NET segítségével. Ez a részletes útmutató lépésről lépésre végigvezeti Önt a folyamaton, a beállítástól a befejezésig. | | [XPS-ből PDF-be](./xps-to-pdf/) Tanulja meg, hogyan konvertálhat XPS fájlokat PDF-be az Aspose.PDF for .NET segítségével ezzel a lépésről lépésre szóló útmutatóval. Tökéletes fejlesztők és dokumentumrajongók számára. | | [PDF konvertálása PDF/X‑4-re C#‑ban – Lépésről‑lépésre ASP.NET PDF oktatóanyag](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | Tanulja meg, hogyan konvertálhat PDF-fájlokat PDF/X‑4 formátumba C#‑ban az Aspose.PDF for .NET segítségével lépésről‑lépésre. | +| [Aspose PDF oktatóanyag: PDF konvertálása PDF/X‑4-re C#-ban](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) | Tanulja meg, hogyan konvertálhat PDF-fájlokat PDF/X‑4 formátumba C#‑ban az Aspose.PDF for .NET segítségével. | | [PDF PNG oktatóanyag – PDF oldalak PNG-be konvertálása C#-ban](./pdf-to-png-tutorial-convert-pdf-pages-to-png-in-c/) | Tanulja meg, hogyan konvertálhat PDF oldalakat PNG képekké C#-ban az Aspose.PDF for .NET használatával. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/hungarian/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/hungarian/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..ae4479395 --- /dev/null +++ b/pdf/hungarian/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-03-06 +description: Az Aspose PDF útmutató bemutatja, hogyan lehet az Aspose-t használni + PDF dokumentum C#-ban történő betöltésére, a PDF PDF/X‑4 formátumba konvertálására, + és a konvertált PDF hatékony mentésére. +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: hu +og_description: Az Aspose PDF útmutató bemutatja, hogyan töltsünk be egy PDF-dokumentumot + C#-ban, hogyan konvertáljuk PDF/X‑4 formátumba, és hogyan mentsük el a konvertált + PDF-et világos kódrészletekkel. +og_title: 'Aspose PDF útmutató: PDF konvertálása PDF/X‑4 formátumba C#‑ban' +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: 'Aspose PDF útmutató: PDF konvertálása PDF/X‑4-re C#‑ban' +url: /hu/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose PDF Tutorial: PDF konvertálása PDF/X‑4-re C#-ban + +Gondolkodtál már azon, hogyan használhatod az Aspose‑t, hogy egy hagyományos PDF‑et PDF/X‑4 fájlra alakítsd át gond nélkül? Nem vagy egyedül – a fejlesztők gyakran megbízható módra van szükségük a **PDF dokumentum betöltésére C#‑ban**, annak konvertálására, majd a **konvertált PDF mentésére** a további munkafolyamatokhoz. Ebben az útmutatóban egy teljes, futtatható példán keresztül mutatjuk be, hogyan lehet ezt megtenni a legújabb Aspose.Pdf for .NET segítségével. + +Kitérünk a könyvtár telepítésére, a forrás‑PDF betöltésére, a PDF/X‑4 szabványra való konvertálásra, és végül az eredmény lemezre mentésére. A végére alaposan megérted, **hogyan kell használni az Aspose‑t** ebben a gyakori konverziós helyzetben, valamint tippeket kapsz a szélsőséges esetek kezeléséhez. + +## Előfeltételek + +- .NET 6.0 vagy újabb (a kód .NET Framework‑ön is működik, de a .NET 6+ ajánlott). +- Érvényes Aspose.Pdf for .NET licencfájl (vagy gyors teszteléshez használhatod a kiértékelési módot). +- Visual Studio 2022 vagy bármely C#‑kompatibilis IDE. +- Egy bemeneti PDF fájl, amely a `YOUR_DIRECTORY/input.pdf` helyen található. + +A `Aspose.Pdf`‑n kívül nincs szükség további NuGet csomagokra. + +## Aspose.Pdf telepítése NuGet-en keresztül + +Nyisd meg a terminált vagy a Package Manager Console‑t, és futtasd: + +```bash +dotnet add package Aspose.Pdf +``` + +Ez letölti a legújabb stabil verziót (2026. március állapotában a 23.12‑es verziót). Ha inkább a felhasználói felületet használod, keresd meg a *Aspose.Pdf*‑t a NuGet Package Manager‑ben, és telepítsd. + +## 1. lépés: PDF dokumentum betöltése C#‑ban az Aspose‑szal + +Az első teendő, hogy a forrás‑PDF‑et betöltsd a memóriába. Az Aspose `Document` osztálya a belépési pont. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**Miért fontos:** A fájl betöltése ellenőrzi, hogy az útvonal létezik, és a PDF nem sérült. A `try/catch` blokk elegáns módot biztosít a hibák megjelenítésére – hasznos, ha a fájl felhasználói feltöltésből származik. + +## 2. lépés: PDF konvertálása PDF/X‑4 formátumba + +A PDF/X‑4 a PDF egy részhalmaza, amely megbízható nyomtatásra és archiválásra lett tervezve. A konvertálás biztosítja, hogy minden betűtípus be legyen ágyazva, és a fájl megfeleljen az ipari szabványoknak. + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**Miért válaszd a `ConvertErrorAction.Delete`‑t?** Egyes régi PDF‑ek olyan elemeket tartalmaznak (például nem támogatott annotációkat), amelyek egyébként megállítanák a konvertálást. Ezek törlése gördülékenyebbé teszi a folyamatot, de ha meg kell őrizned ezeket az elemeket, akkor ellenőrizd a kimenetet. + +### Opcionális: A konvertálás sikerességének ellenőrzése + +Ha különösen biztosra akarsz menni, a konvertálás után ellenőrizheted a dokumentum `PdfFormat` értékét: + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## 3. lépés: A konvertált PDF fájl mentése + +Miután a dokumentum PDF/X‑4 formátumban van, írd vissza a lemezre. + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**Az eredmény, amit látsz:** Egy új `Converted_PDFX4.pdf` nevű fájl jelenik meg a `YOUR_DIRECTORY` könyvtárban. Nyisd meg bármely PDF‑megtekintővel, amely támogatja a PDF/X‑4‑et (Adobe Acrobat, Foxit stb.), és észreveheted, hogy minden betűtípus be van ágyazva, valamint a dokumentum megfelel a PDF/X‑4 specifikációnak. + +![aspose pdf tutorial - PDF konvertálása PDF/X‑4-re](/images/aspose-pdf-conversion.png "aspose pdf tutorial, amely a PDF/X‑4 konverzió eredményét mutatja") + +*A kép alt szövege tartalmazza a fő kulcsszót, ezzel megfelelve az SEO követelményeknek.* + +## Teljes, vég‑től‑végig példakód + +Összegezve, itt egy önálló konzolalkalmazás, amelyet egyszerűen beilleszthetsz egy új C# projektbe: + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +Futtasd a programot, és a konzolon látható üzenetek megerősítik az egyes lépéseket. Ha valami hiba történik, a hibaüzenetek a pontos szakaszra mutatnak. + +## Gyakori kérdések és szélsőséges esetek + +### Mi van, ha meg kell őriznem az annotációkat? + +`ConvertErrorAction.Delete` eltávolítja a nem támogatott objektumokat, beleértve néhány annotációt is. Ha a megőrzésük kritikus, válts `ConvertErrorAction.Keep`‑re, de teszteld a kimenetet – egyes annotációk továbbra is megfelelőségi figyelmeztetéseket okozhatnak. + +### Hogyan kezeljem a nagy PDF‑eket (százak MB)? + +Az Aspose.Pdf folyamatosan olvassa a fájlt, így a memóriahasználat mérsékelt marad. Azonban nagyon nagy fájlok esetén érdemes lehet növelni a `System.GC` küszöböket, vagy a dokumentumot darabokra bontva (például oldalanként) feldolgozni. + +### Konvertálhatok több fájlt egyszerre (batch‑ben)? + +Természetesen. A betöltés‑konvertálás‑mentés logikát helyezd egy `foreach` ciklusba, amely egy PDF‑könyvtáron iterál. Ne felejtsd el a kivételeket fájlonként kezelni, hogy egy hibás PDF ne szakítsa meg az egész batch‑et. + +### Működik ez .NET Core‑on Linux alatt? + +Igen. Az Aspose.Pdf platformfüggetlen. Csak győződj meg róla, hogy a `Aspose.Pdf` NuGet csomag hivatkozva van, és a Linux gépen a megfelelő betűtípus‑fájlok telepítve vannak, ha szövegmegjelenítésre van szükség. + +## Profi tippek a gyakorlatból + +- **Állítsd be a licencet korán**: `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` – ez eltávolítja a kiértékelési vízjelet és növeli a teljesítményt. +- **Ellenőrizd a kimenetet**: Használd az Aspose `PdfFormatValidator`‑t, hogy programozottan megerősítsd a PDF/X‑4 megfelelőséget a fájl kiadás előtt. +- **Logold a konvertálási időt**: Nagy batch‑ek esetén hasznos minden egyes konvertálás időtartamát (`Stopwatch`) mérni, hogy észrevegyük a teljesítményromlásokat. +- **Kerüld a keménykódolt útvonalakat**: Inkább konfigurációs fájlok vagy környezeti változók használata az `inputPath` és `outputPath` számára – ez hordozhatóvá teszi az alkalmazást. + +## Összegzés + +Ebben a **Aspose PDF Tutorial**‑ban bemutattuk a tiszta, vég‑től‑végig munkafolyamatot arra, **hogyan kell használni az Aspose‑t** a **PDF dokumentum betöltéséhez C#‑ban**, annak **PDF/X‑4** szabványra konvertálásához, és a **konvertált PDF mentéséhez**. A kódrészlet teljesen futtatható, elmagyarázza az egyes lépések *miért* mögötti okokat, és kiemeli azokat a csapdákat, amelyek a valós projektekben felmerülhetnek. + +Most, hogy az alapokat elsajátítottad, kibővítheted a megoldást – tömegesen feldolgozhatsz tucatnyi fájlt, beágyazhatsz egyedi metaadatokat, vagy integrálhatod a konvertálást egy web‑API‑ba. A lehetőségek széles skáláját kínálja, és az Aspose.Pdf gyorsan biztosítja a szükséges eszközöket. + +További kérdéseid vannak a PDF‑feldolgozással kapcsolatban az Aspose‑szal? Hagyj megjegyzést, böngészd a hivatalos Aspose dokumentációt, vagy kísérletezz a fenti kóddal. Jó konvertálást! + +{{< /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-creation/_index.md b/pdf/hungarian/net/document-creation/_index.md index 4bbd207db..6b8eb9c83 100644 --- a/pdf/hungarian/net/document-creation/_index.md +++ b/pdf/hungarian/net/document-creation/_index.md @@ -77,6 +77,12 @@ Kód oktatóanyag az Aspose.PDF Nethez ### [PDF dokumentum létrehozása Aspose.PDF segítségével – Oldal, alakzat hozzáadása és mentés](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) Tanulja meg, hogyan hozhat létre PDF dokumentumot, adhat hozzá oldalt, alakzatot, majd mentheti azt az Aspose.PDF .NET használatával. +### [PDF dokumentum létrehozása Aspose.PDF segítségével – Lépésről‑lépésre útmutató](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +Tanulja meg, hogyan hozhat létre PDF dokumentumot az Aspose.PDF használatával lépésről‑lépésre útmutatóval. + +### [PDF dokumentum létrehozása Aspose.PDF – Teljes C# útmutató](./create-pdf-document-with-aspose-pdf-full-c-guide/) +Tanulja meg, hogyan hozhat létre PDF dokumentumot teljes körű C# példakóddal az Aspose.PDF használatával. + ## További források - [Aspose.PDF a hálózati dokumentációhoz](https://docs.aspose.com/pdf/net/) diff --git a/pdf/hungarian/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/hungarian/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..b3b435503 --- /dev/null +++ b/pdf/hungarian/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,237 @@ +--- +category: general +date: 2026-03-06 +description: PDF dokumentum létrehozása C#-ban az Aspose.PDF segítségével – tanulja + meg, hogyan adjon hozzá üres oldalakat, szövegmezőt, widgetet a PDF-hez, és hogyan + mentse el gyorsan a PDF-et. +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: hu +og_description: PDF dokumentum létrehozása C#-ban az Aspose.PDF segítségével. Ez az + útmutató bemutatja, hogyan adhatunk hozzá üres oldalakat a PDF-hez, szövegdobozt, + widgetet, és hogyan menthetjük a PDF-et. +og_title: PDF dokumentum létrehozása az Aspose.PDF segítségével – Teljes C# útmutató +tags: +- pdf +- csharp +- aspose +- forms +title: PDF-dokumentum létrehozása az Aspose.PDF segítségével – Teljes C# útmutató +url: /hu/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF dokumentum létrehozása Aspose.PDF‑vel – Teljes C# útmutató + +Valaha szükséged volt már **pdf dokumentum** létrehozására a semmiből egy .NET projektben, és azon tűnődtél, hol kezdj? Nem vagy egyedül; sok fejlesztő ütközik ugyanabba a falba, amikor az első követelmény azt mondja, hogy „hozzon létre kitölthető PDF‑et ugyanazzal a szövegmezővel három oldalon”. A jó hír? Az Aspose.PDF‑vel csak néhány sorral készíthetsz professzionális kinézetű PDF‑et. + +Ebben az útmutatóban végigvezetünk a teljes folyamaton: egy új PDF inicializálásától, **üres oldalak pdf‑hez** hozzáadásán, egy **szövegmező** beszúrásán, annak **widget** annotációkkal való megkettőzésén, egészen a **PDF mentéséig** a lemezre. A végére egy használatra kész *MultiWidgetField.pdf* fájlt kapsz, és alapos megértést arról, hogy miért fontos minden egyes lépés. + +## Mit fed le ez az útmutató + +- A kód egyetlen sorának megírása előtt szükséges előfeltételek. +- Lépésről lépésre PDF dokumentum létrehozása Aspose.PDF for .NET használatával. +- Üres oldalak, egy szövegmező űrlapelem és további widget példányok hozzáadása. +- Tippek a gyakori buktatók kezeléséhez (pl. oldal indexelés, mezőnév-ütközések). +- Egy teljes, másolás‑beillesztésre kész C# program, amelyet már ma futtathatsz. + +Nincsenek külső dokumentációs hivatkozások, nincs „lásd az API dokumentációt” rövidítés – minden, amire szükséged van, itt található. + +## Előfeltételek + +Mielőtt belemerülnél, győződj meg róla, hogy rendelkezel: + +1. **.NET 6.0** (vagy bármely újabb verzió) telepítve a gépeden. +2. Aktív **Aspose.PDF for .NET** licenccel vagy ideiglenes értékelő kulccsal. +3. Fejlesztői környezettel, például **Visual Studio 2022** vagy **VS Code** C# kiegészítővel. + +Ennyi – nincs más követelmény. + +## 1. lépés: PDF dokumentum inicializálása és üres oldalak hozzáadása + +Az első dolog, amit megteszel, amikor programozottan **pdf dokumentumot** hozol létre, az egy `Document` objektum példányosítása. Gondolj rá úgy, mint egy vadonúj jegyzetfüzet megnyitására. Ezután hozzáadod a szükséges oldalakat; ebben az esetben három üres oldalt. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**Miért fontos ez:** Az Aspose.PDF belsőleg nulláral indexelt gyűjteményként kezeli az oldalakat, de a nyilvános API 1‑es alapú, így a `Pages[1]` az első oldal, amit épp hozzáadtál. Az oldalak előzetes hozzáadása egy vásznat biztosít a űrlapelemek későbbi elhelyezéséhez, és sokkal olcsóbb, mint a dokumentum növekedése után oldalak dinamikus beszúrása. + +> **Pro tipp:** Ha csak egy oldalra van szükséged, kihagyhatod a ciklust, és egyszer meghívhatod a `pdfDocument.Pages.Add()`‑t. Több oldal hozzáadása egy ciklusban a kód skálázhatóságát biztosítja. + +## 2. lépés: Szövegmező űrlapelem definiálása az első oldalon + +Most, hogy három üres lapunk van, helyezzünk egy **textbox**‑ot az elsőre. A `TextBoxField` egy űrlapelem, amelybe a végfelhasználók beírhatnak, amikor a PDF‑et Acrobat Reader‑ben vagy bármely űrlapokat támogató PDF‑nézőben megnyitják. + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**Miért a téglalap koordinátái?** Az Aspose.PDF pontokat (1/72 hüvelyk) használ. A `(100, 700, 300, 730)` téglalap a szövegmezőt körülbelül az oldal felénél helyezi el, 200 pt széles és 30 pt magas. Igazítsd ezeket a számokat a saját elrendezésedhez. + +> **Gyakori kérdés:** *Szükséges beállítani a `Value` tulajdonságot?* +> Nem, ez opcionális. Ha üresen hagyod, egy üres mező jelenik meg; alapértelmezett érték beállítása segítheti a felhasználót. + +## 3. lépés: Widget annotációk hozzáadása ugyanarra a mezőre a 2. és 3. oldalon + +A **widget** egy űrlapelem vizuális megjelenítése egy adott oldalon. Alapértelmezés szerint egy mező csak azon az oldalon jelenik meg, ahol létrehozták. Ahhoz, hogy ugyanazt a szövegmezőt más oldalakon is használjuk, további `WidgetAnnotation` objektumokat csatolunk a mező `Widgets` gyűjteményéhez. + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**Miért widgetek?** Nélkülük a felhasználó csak az 1. oldalon látná a szövegmezőt, még akkor is, ha a háttérben létező mező már létezik. A widgetek lehetővé teszik egyetlen logikai mező megosztását több oldalon, biztosítva, hogy a beírt szöveg minden megjelenített mezőnél megjelenjen. + +> **Szélsőséges eset:** Ha a szövegmezőt minden oldalon más koordinátákra szeretnéd, egyszerűen módosítsd a `Rectangle` értékeket az egyes widgeteknél. + +## 4. lépés: A mező regisztrálása a dokumentum űrlapgyűjteményébe + +Az Aspose.PDF központi nyilvántartást vezet az összes űrlapmezőről. A mező `Form` gyűjteményhez való hozzáadása a PDF interaktív űrlapstruktúrájának részévé teszi. + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +A második argumentum (`"Comment"`) a mező **teljesen kvalifikált neve**. Egyedinek kell lennie a dokumentumban; ellenkező esetben az Aspose kivételt dob. + +## 5. lépés: A létrehozott PDF mentése – Hogyan mentünk PDF‑et + +Végül a memóriában lévő dokumentumot lemezre mentjük. Ez a **hogyan mentünk pdf‑et** része az útmutatónak. + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**Miért kell abszolút útvonalat megadni?** Az abszolút útvonal használata elkerüli a munkakönyvtárral kapcsolatos félreértéseket, különösen a program Visual Studio‑beli hibakeresőből való futtatásakor. Ha relatív útvonalat szeretnél, csak győződj meg róla, hogy a mappa létezik a `Save` hívása előtt. + +### Várt eredmény + +Nyisd meg a *MultiWidgetField.pdf* fájlt az Adobe Acrobat Reader‑ben. Ugyanazt a szövegmezőt fogod látni az 1., 2. és 3. oldalon. Írj valamit a mezőbe bármelyik oldalon – a szöveg azonnal megjelenik a többi oldalon is, mivel ugyanazt a háttér‑űrlapmezőt osztják meg. + +![PDF dokumentum létrehozása példa, három oldalon megjelenő szövegmező](https://example.com/placeholder-image.png "PDF dokumentum létrehozása példa") + +*Kép alt szöveg: PDF dokumentum létrehozása példa, három oldalon megjelenő szövegmező.* + +## Teljes, azonnal futtatható példa + +Az alábbiakban a teljes program található, amelyet egy új konzolos projektbe (`dotnet new console`) másolhatsz, és futtathatsz. Minden lépés már a megfelelő sorrendben van, a kód pedig megjegyzéseket tartalmaz a tisztaság kedvéért. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +Futtasd a programot, navigálj a `C:\Temp\` könyvtárba, és nyisd meg a generált PDF‑et. Látni fogod a három azonos szövegmezőt, amelyek készen állnak a felhasználói bevitelre. + +## Gyakori variációk és szélsőséges esetek + +| Scenario | What to Change | Why | +|----------|----------------|-----| +| **Különböző szövegmező méret minden oldalon** | Módosítsd a `Rectangle` értékeket minden `WidgetAnnotation`‑nél. | Lehetővé teszi, hogy a mezőt különböző elrendezésekhez igazítsd. | +| **Csak‑olvasásra szánt mező** | Állítsd be `commentField.ReadOnly = true;`‑t. | Megakadályozza, hogy a felhasználók a kezdeti kitöltés után szerkesszék a tartalmat. | +| **Többsoros szövegmező** | Állítsd be `commentField.Multiline = true;`‑t, és növeld a téglalap magasságát. | Lehetővé teszi a hosszabb megjegyzéseket görgetés nélkül. | +| **Második mező hozzáadása** | Hozz létre egy új `TextBoxField`‑et (vagy bármilyen `FormField`‑et), és ismételd meg a 2‑4. lépéseket egy új névvel. | Több információt is gyűjthetsz ugyanabban a PDF‑ben. | + +## Pro tippek és elkerülendő buktatók + +- **Oldal indexelés:** Ne feledd, hogy a `pdfDocument.Pages[1]` az első oldal, nem a `[0]`. A 0‑alapú és 1‑alapú indexek keverése “Index out of range” kivételt eredményez. +- **Mezőnév-ütközések:** Két mező nem oszthatja meg ugyanazt a teljesen kvalifikált nevet. Ha duplikált névre vonatkozó hibát kapsz, ellenőrizd újra a `Form.Add`‑nek átadott karakterláncot. +- **Licenc vs. értékelő:** Az értékelő verzió minden oldalra vízjelet helyez. Éles környezetben egy érvényes licenc telepítésével távolítható el. +- **Teljesítmény:** Több száz oldal hozzáadása egy ciklusban rendben van, de ha hatalmas PDF‑eket (ezrek oldalakat) kell generálnod, fontold meg a használatát + +{{< /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-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/hungarian/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..4245f82ce --- /dev/null +++ b/pdf/hungarian/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-03-06 +description: PDF dokumentum létrehozása Aspose.PDF használatával C#-ban. Tanulja meg, + hogyan adjon hozzá oldalt a PDF-hez, hogyan rajzoljon téglalapot a PDF-ben, hogyan + adjon hozzá alakzatot a PDF-hez, és hogyan szabályozza a téglalap keretének vastagságát + – mindezt egyetlen oktatóanyagon belül. +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: hu +og_description: PDF dokumentum létrehozása C#-ban az Aspose.PDF használatával. Ez + az útmutató bemutatja, hogyan lehet PDF oldalt hozzáadni, PDF téglalapot rajzolni, + PDF alakzatot hozzáadni, és beállítani a téglalap keretének vastagságát. +og_title: PDF dokumentum létrehozása az Aspose.PDF segítségével – Teljes útmutató +tags: +- Aspose.PDF +- C# +- PDF generation +title: PDF dokumentum létrehozása az Aspose.PDF segítségével – Lépésről lépésre útmutató +url: /hu/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF dokumentum létrehozása Aspose.PDF‑vel – Lépésről‑lépésre útmutató + +Valaha is szükséged volt **PDF dokumentum** programozott létrehozására, és nem tudtad, hol kezdj? Nem vagy egyedül – sok fejlesztő ütközik ugyanabba a problémába, amikor alkalmazásaiknak gyorsan kell számlákat, jelentéseket vagy tanúsítványokat kiadniuk. + +A jó hír, hogy az Aspose.PDF for .NET‑vel mindezt néhány sor kóddal megteheted, és közben megtanulod, hogyan **adj hozzá oldalt PDF‑hez**, **rajzolj téglalapot PDF‑ben**, **adj hozzá alakzatot PDF‑hez**, valamint hogyan állítsd be a **téglalap keretének vastagságát**. Merüljünk el benne. + +## Mit fogsz építeni + +A végére egy teljesen működő C# konzolalkalmazásod lesz, amely: + +1. **Létrehozza a PDF dokumentumot** a semmiből. +2. **Oldalt ad hozzá** a PDF‑hez. +3. **Téglalapot rajzol** azon az oldalon. +4. **Érvényesíti**, hogy a téglalap a lap határain belül marad (**alakzat hozzáadása PDF‑hez** lépés). +5. Egyedi **téglalap keretvastagságot** állít be. +6. Elmenti az eredményt `ShapeValidated.pdf` néven. + +Nincs külső szolgáltatás, nincs titokzatos konfiguráció – csak tiszta C# és Aspose.PDF. + +### Előfeltételek + +- .NET 6.0 vagy újabb (a kód .NET Framework 4.6+‑al is működik). +- Hivatkozás a `Aspose.Pdf` NuGet csomagra. Hozzáadhatod a következővel: + +```bash +dotnet add package Aspose.Pdf +``` + +- Szövegszerkesztő vagy IDE – Visual Studio, VS Code, Rider, bármi, amit kedvelsz. + +> **Pro tipp:** Ha vállalati gépen dolgozol, ellenőrizd, hogy a NuGet forrás nincs‑e blokkolva; különben „Package not found” hibát kapsz. + +--- + +## PDF dokumentum létrehozása – A dokumentum inicializálása + +Az első lépés egy `Document` objektum felállítása. Tekintsd úgy, mint egy üres vászonra, amelyre minden oldal és alakzat rákerül. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +Miért van szükségünk erre az objektumra? A teljes PDF fájlt a memóriában képviseli, hozzáférést biztosít a `Pages` gyűjteményhez, a metaadatokhoz és a biztonsági beállításokhoz. Miután megvan a dokumentum, elkezdheted rétegezni az oldalakat, szöveget, képeket és vektorgrafikákat. + +--- + +## Oldal hozzáadása a PDF‑hez (add page pdf) + +Egy PDF oldal nélkül lényegében egy üres fájl – értelmetlen. Az oldal hozzáadása egyszerű, és ha szeretnéd, testre szabhatod a méretét is. Itt az alapértelmezett A4 mérettel dolgozunk. + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +Az `Add()` metódus egy friss `Page` példányt ad vissza, amely már része a `Pages` gyűjteménynek, így azonnal elkezdhetsz rajzolni rajta. Valós környezetben egy adatkészleten iterálva akár tucatnyi oldalt is hozzáadhatsz; ugyanaz a egy‑soros hívás minden iterációra működik. + +--- + +## Téglalap alakzat rajzolása (draw rectangle pdf) + +Most jön a vizuális rész: egy téglalap látható kerettel. Itt lép be a **draw rectangle pdf**. + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +Néhány megjegyzés: + +- A `Rect` pontokat (1 pt ≈ 1/72 inch) használ. A koordináták a bal‑alsó és jobb‑felső sarkot határozzák meg, így a szélességet és magasságot pontosan szabályozhatod. +- A `BorderInfo` lehetővé teszi, hogy meghatározd, melyik oldal kap vonalat és milyen vastag legyen. Itt egy 2‑pontos vonalat alkalmazunk **minden** oldalra, így a téglalap tiszta, egységes megjelenést kap. + +--- + +## Alakzat elhelyezésének ellenőrzése (add shape pdf) + +Mielőtt a téglalapot az oldalra helyeznénk, érdemes ellenőrizni, hogy a nyomtatható területen belül van‑e. Az Aspose.PDF egy kényelmes segédfüggvényt biztosít ehhez. + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +Miért fontos? Ha véletlenül egy alakzatot részben a képernyőn kívül helyezel el, a PDF‑néző levághatja, ami zavaró felhasználói élményt eredményez. Ez a **add shape pdf** védelmi feltétel biztosítja, hogy csak teljesen látható tartalmat adj hozzá. + +--- + +## PDF mentése (add page pdf) + +Végül a memóriában lévő dokumentumot lemezre írjuk. Bármelyik olyan helyet választhatod, ahol írási jogosultságod van. + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +A program futtatása után nyisd meg a `ShapeValidated.pdf`‑t – egyetlen oldalt kell látnod, amelyen egy szép kerettel ellátott téglalap körülbelül a közepén helyezkedik el. + +--- + +## Várt eredmény + +A generált PDF megnyitásakor a következőt látod: + +- Egy A4‑méretű oldal. +- Egy téglalap, amelynek bal‑alsó sarka (50 pt, 50 pt), jobb‑felső sarka pedig (600 pt, 800 pt). +- **2‑pontos vastagságú** keret körülöleli a téglalapot. + +Ha a konzol kiírta, hogy „PDF created successfully!”, akkor a kód hibamentesen lefutott, és a határellenőrzés sem akadályozott. + +![Diagram showing how to create PDF document with Aspose.PDF](https://example.com/diagram-create-pdf.png "Create PDF Document – visual overview") + +*Az alt szöveg tartalmazza a fő kulcsszót a SEO‑követelményeknek megfelelően.* + +--- + +## Gyakori kérdések és széljegyek + +### Mi van, ha másik oldalméretre van szükségem? + +Cseréld le az alapértelmezett oldalt egy egyedi méretre: + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### Hogyan változtathatom meg a keret színét? + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### Hozzáadhatok több alakzatot ugyanarra az oldalra? + +Természetesen. Csak ismételd meg a **add shape pdf** blokkot új `RectangleShape`‑nel (vagy más `Shape` alosztállyal), és állítsd be a `Rect` koordinátákat ennek megfelelően. + +### Mi a teendő, ha a téglalap túllépi az oldal határait? + +Az `IsShapeWithinBounds` hívás `false`‑t ad vissza. Éles környezetben automatikusan átméretezheted az alakzatot: + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +--- + +## Összefoglalás + +Áttekintettük a **PDF dokumentum létrehozásának** teljes életciklusát az Aspose.PDF‑vel: + +1. Inicializáld a `Document`‑et. +2. **Oldalt adj hozzá PDF‑hez** a `Pages.Add()`‑el. +3. **Téglalapot rajzolj PDF‑ben** a `RectangleShape`‑el. +4. **Alakzat hozzáadása PDF‑hez** csak a határokon belüli ellenőrzés után. +5. A **téglalap keretvastagságát** a `BorderInfo`‑val szabályozd. +6. Mentsd el a fájlt. + +Ez a teljes munkafolyamat kevesebb, mint 60 sor kódban. + +--- + +## Mi következik? + +- **Szöveg hozzáadása**: Használd a `TextFragment`‑et címek vagy címkék elhelyezéséhez a téglalapon belül. +- **Képek beillesztése**: Az `Image` osztály lehetővé teszi logók vagy diagramok beágyazását. +- **Táblázatok létrehozása**: Ideális számlák vagy adatjelentések számára. +- **Biztonság alkalmazása**: Jelszóval védheted a PDF‑et, ha érzékeny adatot tartalmaz. + +Ezek a témák mind a jelen cikkben lefektetett alapokra épülnek, így készen állsz a fejlettebb PDF‑generálási forgatókönyvek felfedezésére. + +--- + +### Kísérletezz tovább + +Ne állj meg egyetlen téglalapnál – próbálj ki különböző alakzatokat, színeket és vonalstílusokat. Az Aspose.PDF API gazdag, és minél többet kísérletezel, annál magabiztosabb leszel. Ha elakadsz, az hivatalos Aspose dokumentáció jó társ, de ne feledd, hogy a fenti kód egy teljes, másol‑beilleszt‑kész megoldás, amelyet már ma futtathatsz. + +Boldog kódolást, és legyenek a PDF‑jeid mindig úgy megjelenítve, ahogy elképzelted! + +{{< /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 00006f12f..fae7f7821 100644 --- a/pdf/hungarian/net/document-manipulation/_index.md +++ b/pdf/hungarian/net/document-manipulation/_index.md @@ -240,7 +240,7 @@ Ismerje meg, hogyan kezelheti programozottan a PDF-eket .NET-ben az Aspose.PDF h Ismerje meg, hogyan automatizálhatja a PDF-feladatokat az Aspose.PDF for .NET használatával, beleértve a fájlok összefűzését, oldalak hozzáadását, szövegbélyegzők beszúrását és hivatkozások létrehozását. ### [PDF-manipuláció mestere az Aspose.PDF .NET segítségével: Dokumentumok egyszerű betöltése és módosítása](./mastering-pdf-manipulation-aspose-dotnet/) -Tanuld meg, hogyan töltheted be, navigálhatsz és módosíthatod a PDF dokumentumokat a hatékony Aspose.PDF .NET könyvtár segítségével. Fejleszd alkalmazásaid még ma! +Tanuld meg, hogyan töltheted be, navigálhatsz és módosíthatsz a PDF dokumentumokat a hatékony Aspose.PDF .NET könyvtár segítségével. Fejleszd alkalmazásaid még ma! ### [PDF-manipuláció mestere az Aspose.PDF .NET segítségével: Betöltési, keresési és jegyzetelési útmutató](./aspose-pdf-dotnet-mastering-pdfs-manipulation-guide/) Tanuld meg elsajátítani a PDF-manipulációt az Aspose.PDF for .NET segítségével. Ez az útmutató a dokumentumok betöltését, a szövegkeresést és az olyan megjegyzések alkalmazását ismerteti, mint az áthúzás. @@ -309,7 +309,9 @@ Tanuld meg, hogyan oszthatod fel a PDF oldalakat különálló fájlokra az Aspo Tanuld meg, hogyan oszthatsz fel többoldalas PDF fájlokat és hogyan hozhatsz létre új PDF fájlokat az Aspose.PDF for .NET segítségével. Kövesd ezt az átfogó útmutatót kódpéldákkal. ### [Végső útmutató a PDF-manipulációhoz az Aspose.PDF .NET segítségével: Szöveg hatékony betöltése, mentése és cseréje](./master-pdf-manipulation-aspose-pdf-net/) -Tanuld meg, hogyan mesterien manipulálhatod a PDF-eket az Aspose.PDF for .NET segítségével. Ez az útmutató a PDF-ekben lévő szöveg betöltését, mentését és cseréjét ismerteti, ideális a hatékonyságra törekvő fejlesztők számára. + +### [PDF kitakarása C#-ban az Aspose PDF segítségével – Teljes útmutató](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) +Ismerje meg, hogyan távolíthatja el vagy takarhatja el a PDF dokumentumok érzékeny részeit C#-ban az Aspose PDF használatával. ## További források diff --git a/pdf/hungarian/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/hungarian/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..b9412bfe0 --- /dev/null +++ b/pdf/hungarian/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,236 @@ +--- +category: general +date: 2026-03-06 +description: Tudja meg, hogyan lehet PDF-et kitakarni az Aspose PDF segítségével C#-ban. + Ez a lépésről‑lépésre útmutató bemutatja, hogyan töltsön be PDF-dokumentumot C#-ban, + hogyan érje el az első PDF‑oldalt, és hogyan távolítson el egy képet a PDF‑ből. +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: hu +og_description: Hogyan lehet gyorsan kitakarni egy PDF-et az Aspose PDF segítségével + C#-ban. Töltsd be a PDF dokumentumot, érj el az első PDF oldalt, és néhány sor kóddal + távolíts el egy képet a PDF-ből. +og_title: PDF kitakarítása C#-ban – Aspose PDF útmutató +tags: +- Aspose PDF +- C# +- PDF Redaction +title: Hogyan cenzúrázzunk PDF-et C#-ban az Aspose PDF segítségével – Teljes útmutató +url: /hu/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan redigáljunk PDF-et C#-ban az Aspose PDF használatával – Teljes útmutató + +Gondolkodtál már azon, **hogyan redigáljunk PDF** fájlokat anélkül, hogy izzadnál? Lehet, hogy egy szerződést kaptál, amely egy bizalmas logót rejt, vagy egy jelentést, amely még mindig egy helyőrző képet mutat, amit törölni kell. Ilyenkor egy megbízható, programozott módra van szükséged, hogy eltávolítsd azt a tartalmat – manuális Acrobat varázslat nélkül. + +Ebben az útmutatóban egy tömör, vég‑től‑végig megoldáson vezetünk végig, amely **betölti a PDF dokumentumot C#-ban**, **eléri az első PDF oldalt**, majd **eltávolítja a képet a PDF-ből** a hatékony **Aspose PDF** könyvtár használatával. A végére egy teljesen redigált PDF-et kapsz, amely készen áll a terjesztésre, és megérted, miért fontos minden egyes kódsor. + +> **Pro tipp:** Az Aspose PDF a .NET Framework 4.6+ és a .NET Core 3.1+ verziókkal működik, így függetlenül attól, hogy Windows, Linux vagy macOS alatt dolgozol, lefedett vagy. + +--- + +![how to redact pdf example](redact-pdf-before-after.png){alt="hogyan redigáljunk pdf példát"} + +## Amire szükséged lesz + +- **Aspose.PDF for .NET** (legújabb NuGet csomag) +- **C# fejlesztői környezet** (Visual Studio, Rider vagy VS Code) +- Egy minta PDF, amely tartalmaz egy törölni kívánt képernyöforrást (ezt `Sensitive.pdf`-nek hívjuk) + +Nincs szükség további harmadik fél eszközökre, OCR-re, csak tiszta kód. + +## 1. lépés: PDF dokumentum betöltése C#‑ban – Az első lépés + +Mielőtt bármit redigálnál, be kell töltened a fájlt a memóriába. A `Document` osztály minden Aspose PDF művelet kiindulópontja. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**Miért fontos:** +A `Document` beolvassa a teljes PDF struktúrát, egy objektummodellt épít, amely lehetővé teszi az oldalak, erőforrások és annotációk manipulálását. Ha a fájl nem tölthető be (rossz útvonal, sérült PDF), azonnal kivétel keletkezik – így korán tudod, hogy valami nem stimmel. + +### Gyakori buktató + +> *„`FileNotFoundException`-t kapok, pedig a fájl létezik.”* +> Győződj meg arról, hogy az útvonal abszolút, vagy hogy a projekt munkakönyvtára megegyezik a `Sensitive.pdf` helyével. A `Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")` használata segíthet elkerülni a relatív útvonalak okozta fejfájást. + +## 2. lépés: Az első PDF oldal elérése – Ahol a kép található + +A képek oldalanként erőforrásként tárolódnak. Sok egyszerű PDF-ben az első oldal a felelős, ezért vegyük azt. + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**Miért fontos:** +Az Aspose PDF az oldalakat 1‑től kezdődő indexszel kezeli, ami a legtöbb .NET gyűjteménynél szokatlan. A rossz oldal elérése azt jelentheti, hogy a helytelen tartalmat redigálod – vagy még rosszabb, hogy a bizalmas kép érintetlen marad. + +### Szélsőséges eset figyelembevétele + +Ha a dokumentumnak nincsenek oldalai (üres PDF), a `pdfDocument.Pages[1]` hívás `IndexOutOfRangeException`-t dob. Egy gyors ellenőrzés megmenthet: + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +## 3. lépés: Kép eltávolítása a PDF-ből – Erőforrás redigálása + +Az Aspose PDF lehetővé teszi egy erőforrás nevével történő törlését. A legtöbb kép `Im1`, `Im2` stb. néven szerepel, de ellenőrizheted a `firstPage.Resources.Images`-t a megerősítéshez. + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**Miért fontos:** +A `RedactResource` eltávolítja a képet *és* minden hivatkozást rá az oldalon, biztosítva, hogy a vizuális rés egy üres területtel legyen kitöltve, nem pedig törött hivatkozással. Ez egy tiszta, PDF‑szabványos módja a tartalom törlésének. + +### Hogyan találjuk meg a helyes képnevet + +Ha nem vagy biztos benne, hogy a kép neve `"Im1"`: + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +Futtasd ezt a kódrészletet, ellenőrizd a konzol kimenetet, és cseréld le a `"Im1"`-et a látható tényleges kulcsra. + +## 4. lépés: Redigált PDF mentése – A munka befejezése + +Most, hogy a nem kívánt kép eltűnt, írd vissza a változtatásokat a lemezre. + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**Miért fontos:** +Egy **új** fájlba mentés megőrzi az eredetit érintetlenül – biztonsági háló, ha vissza kell állítanod. Ha felül kell írni, csak a `Save` metódust irányítsd az eredeti útvonalra, de tudd, hogy a művelet visszafordíthatatlan. + +### Az eredmény ellenőrzése + +Nyisd meg a `Redacted.pdf`-et bármely PDF nézőben. A kép helye üresnek kell látszania, a dokumentum többi része pedig az eredetihez hasonlóan kell kinéznie. Ha az oldal elrendezése eltolódottnak tűnik, ellenőrizd, hogy csak a kívánt erőforrást távolítottad-e el, és nem egy megosztott XObject-et. + +## Teljes működő példa + +Összegezve, itt a teljes, azonnal futtatható program: + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**Várható kimenet** (a konzolon): + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +Amikor megnyitod a `Redacted.pdf`-et, a korábban `Im1` nevű kép eltűnik, és egy tiszta oldal marad. + +## Gyakran Ismételt Kérdések + +### Működik ez titkosított PDF-ekkel? + +Ha a forrás PDF jelszóval védett, add át a jelszót a `Document` konstruktorának: + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### Mi van, ha a kép több oldalon is megjelenik? + +Iterálj végig minden oldalon, és hívd meg a `RedactResource`-t ugyanazzal a képnévvel (vagy oldalonként derítsd fel a nevet). Példa: + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### Redigálhatok szöveget is ugyanígy? + +Igen – használd a `page.Contents.RedactText("confidential")`-t vagy a `Redactor` osztályt összetettebb mintákhoz. Ez egy külön tutorial, de az elv ugyanaz, mint a képeknél. + +## Összegzés – Amit elértünk + +Megválaszoltuk, **hogyan redigáljunk PDF** fájlokat programozott módon, a következőkkel: + +1. **PDF dokumentum betöltése C#-ban** az Aspose PDF segítségével. +2. **Az első PDF oldal elérése** a cél erőforrás megtalálásához. +3. **Kép eltávolítása a PDF-ből** a `RedactResource` használatával. +4. **Mentés** a megtisztított verzió biztonságos tárolásához. + +Ez a megközelítés gyors, ismételhető, és kötegelt feladatokban is működik – tökéletes megfelelőségi folyamatokhoz vagy automatizált jelentéskészítéshez. + +Ha készen állsz a továbblépésre, fontold meg a következők felfedezését: + +- **Kötegelt redigálás** egy teljes PDF mappán. +- **Szöveg redigálása** regex mintákkal a `Redactor` használatával. +- **Vízjel beágyazása** a redigálás után, hogy jelezze a „tisztított” állapotot. + +Próbáld ki, finomítsd a képnevek logikáját a saját fájljaidhoz, + +{{< /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/performance-optimization/_index.md b/pdf/hungarian/net/performance-optimization/_index.md index a092d6af9..d7ec85d07 100644 --- a/pdf/hungarian/net/performance-optimization/_index.md +++ b/pdf/hungarian/net/performance-optimization/_index.md @@ -50,6 +50,9 @@ Sajátítsa el az SVG fájlok PDF-be konvertálásának művészetét precíz é ### [Betűtípusok beágyazásának eltávolítása PDF-ekből az Aspose.PDF for .NET használatával: Fájlméret csökkentése és teljesítmény javítása](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) Ismerje meg, hogyan távolíthatja el a betűtípusok beágyazását PDF-fájljaiból az Aspose.PDF for .NET segítségével. Optimalizálja a PDF-teljesítményt, csökkentse a fájlméretet és javítsa a betöltési időket ezzel a lépésről lépésre szóló útmutatóval. +### [Hogyan tömörítsük a PDF-et az Aspose.PDF segítségével – gyors útmutató](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) +Ismerje meg, hogyan lehet gyorsan és hatékonyan tömöríteni PDF-fájlokat 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/) diff --git a/pdf/hungarian/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/hungarian/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..5dae96c10 --- /dev/null +++ b/pdf/hungarian/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,205 @@ +--- +category: general +date: 2026-03-06 +description: Tanulja meg, hogyan tömörítheti a PDF-et azonnal az Aspose.Pdf segítségével. + Ez az útmutató bemutatja, hogyan csökkenthető a PDF fájl mérete veszteségmentes + PDF tömörítéssel. +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: hu +og_description: Hogyan tömörítsük a PDF-et az Aspose.Pdf segítségével? Kövesse ezt + a lépésről‑lépésre útmutatót a PDF fájlméret csökkentéséhez, veszteségmentes PDF + tömörítés eléréséhez, és optimalizált PDF fájlok mentéséhez. +og_title: PDF tömörítése az Aspose.Pdf segítségével – gyors útmutató +tags: +- pdf +- aspnet +- csharp +title: Hogyan tömörítsünk PDF-et az Aspose.Pdf segítségével – gyors útmutató +url: /hu/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# hogyan tömörítsünk pdf-et az Aspose.Pdf‑vel – gyors útmutató + +Gondolkodtál már azon, **hogyan tömörítsünk pdf** fájlokat anélkül, hogy azok elmosódott káoszzá válnának? Nem vagy egyedül. A legtöbb fejlesztő szembe ütközik a problémával, amikor **pdf fájlméret csökkentésére** van szükség e‑mail mellékletekhez, webes feltöltésekhez vagy tárolási korlátokhoz, miközben attól fél, hogy a képminőség romlik. + +Ebben a tutorialban egy teljes, azonnal futtatható példán keresztül mutatjuk be, hogyan **tömörítsünk pdf**‑et az Aspose.Pdf beépített optimalizálójával. A végére megtanulod, hogyan **csökkentsd a pdf fájlméretet**, miközben a képek **veszteségmentes pdf tömörítéssel** maradnak élesek, és végül **optimalizált pdf** fájlokat **ments el**, amelyek minden megjelenítővel kompatibilisek. + +## Mit fogsz megtanulni + +- Egy nehéz PDF (például sok nagy felbontású képet tartalmazó) betöltése memóriába. +- Az Aspose.Pdf optimalizálójának alkalmazása az alapértelmezett veszteségmentes beállításokkal. +- Az eredmény mentése egy új, kisebb fájlba. +- Tippek a tömörítés finomhangolásához, ha még szorosabbra van szükség. + +Nincsenek külső eszközök, nincsenek titokzatos parancssori trükkök — csak tiszta C# kód és érthető magyarázatok. + +## Előfeltételek + +Mielőtt belevágnánk, győződj meg róla, hogy a következőkkel rendelkezel: + +| Követelmény | Miért fontos | +|-------------|--------------| +| .NET 6.0 vagy újabb (vagy .NET Framework 4.6+) | Az Aspose.Pdf mindkettőt támogatja; az újabb futtatókörnyezet jobb teljesítményt nyújt. | +| Aspose.Pdf for .NET NuGet csomag (`Aspose.Pdf`) | Itt található a `Document` osztály. | +| Egy nagy képeket tartalmazó PDF (pl. `HeavyImages.pdf`) | Valódi anyagot ad a tömörítéshez. | +| Visual Studio, Rider vagy bármelyik kedvenc C# szerkesztőd | A kényelem kulcsfontosságú — válaszd azt, ami a legtermészetesebb. | + +> **Pro tipp:** Ha CI/CD pipeline‑t használsz, add hozzá a NuGet hivatkozást a `.csproj` fájlodhoz, hogy a build soha ne felejtse el. + +```xml + + + +``` + +## 1. lépés: A tömöríteni kívánt PDF betöltése + +Először egy `Document` objektumra van szükség, amely a forrásfájlra mutat. Olyan, mintha egy könyvet nyitnánk meg, mielőtt a fejezeteket szerkesztenénk. + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*Miért fontos:* A fájl betöltése lehetővé teszi az Aspose.Pdf számára, hogy beolvassa az összes beágyazott erőforrást (képek, betűkészletek stb.). Enélkül nincs mit **csökkenteni a pdf fájlméretben**. + +## 2. lépés: Veszteségmentes PDF tömörítés alkalmazása + +Az Aspose.Pdf egy `Optimize` metódust biztosít, amely alapértelmezés szerint egy **veszteségmentes pdf tömörítés** eljárást futtat. Eltávolítja a felesleges objektumokat, újrakompresszálja a képeket ugyanazzal a vizuális hűséggel, és megszünteti a nem használt betűkészleteket. + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*Miért fontos:* Az alapértelmezett optimalizáló úgy van tervezve, hogy **csökkentse a pdf fájlméretet**, miközben minden pixelt megőriz. Ha később úgy döntesz, hogy tolerálsz egy apró minőségcsökkenést, a kikommentezett `OptimizationOptions` lehetővé teszi, hogy néhány kilobájtot feláldozz a sebességért. + +## 3. lépés: Az optimalizált PDF mentése + +Most, hogy a dokumentum soványabb, kiírjuk egy új fájlba. Az eredeti érintetlenül hagyása jó szokás, különösen, ha különböző beállításokat tesztelsz. + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +A mentés után hasonlítsd össze a fájlméreteket: + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +Látnod kell egy jelentős csökkenést — gyakran **30‑70 %** a forrásban lévő nagy felbontású képek számától függően. + +![how to compress pdf illustration](image.png "how to compress pdf") + +*Image alt text:* how to compress pdf – before and after optimization + +## Haladó: A tömörítés finomhangolása specifikus helyzetekhez + +Bár az alapértelmezett optimalizáló a legtöbb esetben megfelelő, néha még tovább kell **csökkenteni a pdf fájlméretet**: + +| Szenárió | Módosítandó beállítás | Hatás | +|----------|-----------------------|-------| +| Sok raszteres képet tartalmazó PDF | `CompressImages = true` + alacsonyabb `ImageQuality` (pl. 70) | Csökkenti a képek bájt számát, enyhe vizuális veszteséggel. | +| Duplikált betűkészleteket tartalmazó PDF | `RemoveUnusedObjects = true` | Eltávolítja a nem hivatkozott betűkészleteket. | +| Nagy metaadatokkal rendelkező PDF | `RemoveMetadata = true` | Kiveszi a rejtett XML/metaadat blokkokat. | + +Ezeket kombinálhatod egy `OptimizationOptions` objektumban, majd átadhatod a `pdfDoc.Optimize(options)` hívásnak. + +## Gyakori kérdések és széljegyek + +**Mi van, ha a PDF már optimalizált?** +Az Aspose.Pdf továbbra is átvizsgálja a dokumentumot, de a méretváltozás minimális lesz. Egy már sovány fájlon való optimalizálás biztonságos; semmi nem sérül meg. + +**Tömöríthetek titkosított PDF‑eket?** +Igen, de a `Optimize` hívása előtt meg kell adnod a jelszót. Példa: + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**Mi a helyzet a vektorgrafikát tartalmazó PDF‑ekkel?** +A vektorobjektumok már eleve könnyűek, ezért az optimalizáló a raszteres képekre és a metaadatokra koncentrál. Tiszta vektoros fájlok esetén csak mérsékelt nyereség várható. + +## Teljes, futtatható példa + +Az alábbi önálló konzolalkalmazás beilleszthető egy új `.csproj`‑ba. Bemutatja a teljes folyamatot — a betöltéstől a verifikációig. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +Futtasd a programot, nyisd meg az `Optimized.pdf`‑et bármelyik megjelenítőben, és ugyanazt az oldalelrendezést, ugyanazokat a tiszta képeket fogod látni, csak egy vékonyabb fájlt. Ez a **veszteségmentes pdf tömörítés** varázsa. + +## Összegzés + +Áttekintettük, **hogyan tömörítsünk pdf** fájlokat az Aspose.Pdf beépített optimalizálójával, bemutattuk a gyakorlati **pdf fájlméret csökkentés** munkafolyamatot, és elmagyaráztuk az egyes lépések mögötti okokat. A háromlépéses mintát — betöltés, optimalizálás, mentés — követve **csökkentheted a pdf fájlméretet** futás közben, megőrizheted a képeket **veszteségmentes pdf tömörítéssel**, és magabiztosan **menthetsz optimalizált pdf** fájlokat a további felhasználáshoz. + +Készen állsz a következő kihívásra? Próbáld meg összekapcsolni ezt az optimalizálót egy batch script‑tel, hogy egy egész mappát feldolgozz, vagy kísérletezz a opcionális `OptimizationOptions`‑szel, hogy kihozd az utolsó néhány kilobájtot. Ugyanazok az elvek érvényesek, akár asztali eszközön, web API‑n vagy szerver‑oldali batch feladaton dolgozol. + +Van még kérdésed a PDF‑kezeléssel, az Aspose.Pdf‑vel vagy a .NET fájl‑I/O‑val kapcsolatban? Hagyj egy megjegyzést alább, és folytassuk a beszélgetést. Boldog tömörítést! + +{{< /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/programming-with-security-and-signatures/_index.md b/pdf/hungarian/net/programming-with-security-and-signatures/_index.md index 6fafb3356..c76a490c9 100644 --- a/pdf/hungarian/net/programming-with-security-and-signatures/_index.md +++ b/pdf/hungarian/net/programming-with-security-and-signatures/_index.md @@ -31,9 +31,11 @@ Az oktatóanyag részletes áttekintést nyújt a PDF-fájlok titkosságának é | [Aláírási információk kinyerése](./extract-signature-info/) | Ismerje meg, hogyan kinyerhet digitális aláírásokat és tanúsítványinformációkat PDF dokumentumokból az Aspose.PDF for .NET segítségével. Teljes körű, lépésről lépésre útmutató C# fejlesztőknek. | | [Jelszóval védett](./is-password-protected/) Ebben az átfogó, lépésről lépésre szóló útmutatóban megtudhatja, hogyan ellenőrizheti, hogy egy PDF jelszóval védett-e az Aspose.PDF for .NET segítségével. | | [Jogosultságok beállítása PDF fájlban](./set-privileges/) | Tanulja meg, hogyan állíthat be PDF-jogosultságokat az Aspose.PDF for .NET használatával ezzel a lépésről lépésre szóló útmutatóval. Biztosítsa dokumentumai hatékony védelmét. | -| [Aláírás intelligens kártyával PDF fájl aláírásával](./sign-with-smart-card-using-pdf-file-signature/) | Ismerje meg, hogyan írhat alá PDF-fájlokat intelligens kártyával az Aspose.PDF for .NET segítségével. Kövesse ezt a lépésről lépésre szóló útmutatót a biztonságos digitális aláírásokhoz. | +| [Aláírás intelligens kártyával PDF fájl aláírásával](./sign-with-smart-card-using-pdf-file-signature/) | Ismerje meg, hogyan írhat alá PDF-fájlokat intelligens kártyával az Aspose.PDF for .NET segítségével. Kövesse ezt a lépésről szóló útmutatót a biztonságos digitális aláírásokhoz. | | [Aláírás intelligens kártyával az aláírásmező használatával](./sign-with-smart-card-using-signature-field/) | Ismerje meg, hogyan írhat alá biztonságosan PDF-fájlokat intelligens kártya használatával az Aspose.PDF for .NET segítségével. Kövesse lépésről lépésre szóló útmutatónkat az egyszerű megvalósítás érdekében. | | [PDF aláírások ellenőrzése C#-ban – Hogyan olvassuk be az aláírt PDF fájlokat](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) | Ismerje meg, hogyan ellenőrizheti és olvashatja a PDF dokumentumok digitális aláírásait C#-ban az Aspose.PDF for .NET segítségével. | +| [PDF aláírás ellenőrzése C#-ban – Teljes Aspose útmutató](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) | Ismerje meg, hogyan ellenőrizze a PDF aláírásokat C#-ban az Aspose.PDF for .NET segítségével, lépésről lépésre útmutató. | +| [Digitális aláírás hozzáadása PDF-hez C#‑ban – Teljes lépésről‑lépésre útmutató](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) | Ismerje meg, hogyan adhat hozzá digitális aláírást PDF-hez C#‑ban az Aspose.PDF for .NET segítségével. Lépésről‑lépésre útmutató. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/hungarian/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/hungarian/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..0f6977575 --- /dev/null +++ b/pdf/hungarian/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-03-06 +description: PDF digitális aláírás hozzáadása az Aspose.PDF segítségével. Tanulja + meg, hogyan hozhat létre PKCS7 leválasztott aláírást, és hogyan írhat alá PDF-et + PFX használatával egy egyéni visszahívással. +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: hu +og_description: Gyorsan adjon digitális aláírást a PDF-hez. Ez az útmutató bemutatja, + hogyan hozhat létre PKCS7 leválasztott aláírást, és aláírhat PDF-et PFX használatával + C#-ban. +og_title: Digitális aláírás hozzáadása PDF-hez C#-ban – Teljes programozási útmutató +tags: +- Aspose.PDF +- C# +- Digital Signature +title: Digitális aláírás hozzáadása PDF-hez C#-ban – Teljes lépésről lépésre útmutató +url: /hu/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Digitális aláírás PDF hozzáadása – Teljes lépésről‑lépésre útmutató + +Valaha szükséged volt **add digital signature pdf** fájlok hozzáadására, de nem tudtad, hol kezdjed? Nem vagy egyedül; sok fejlesztő ütközik ugyanabba a falba, amikor a papírmunkának jogilag kötelező aláírást kell biztosítania, és a kódbázis csak egyszerű PDF-ek generálására képes. + +Ebben az oktatóanyagban egy gyakorlati megoldáson keresztül vezetünk, amely lehetővé teszi, hogy **add digital signature pdf** dokumentumokat használva az Aspose.PDF for .NET-et, PKCS#7 detached aláírást hozz létre, és a PDF-et PFX tanúsítvánnyal aláírd – mindezt tisztán C#-ban. A végére egy azonnal futtatható kódrészletet kapsz, megérted az egyes hívások „miértjét”, és tudni fogod, hogyan alkalmazd a megközelítést szélhelyzetekben. + +## Amit megtanulsz + +- Hogyan tölts be egy aláíratlan PDF-et, és készítsd elő az aláíráshoz. +- A **create pkcs7 detached signature** működése, és miért lehet előnyösebb egy detached aláírás a beágyazott helyett. +- A pontos lépések a **sign pdf using pfx** egy egyéni visszahívással, amely teljes irányítást ad a kriptográfiai folyamat felett. +- Tippek a gyakori hibák elhárításához (hiányzó tanúsítvány, rossz hash algoritmus, stb.). + +### Előfeltételek + +| Követelmény | Indoklás | +|-------------|----------| +| .NET 6.0 vagy újabb | Modern nyelvi funkciók és jobb memória kezelés. | +| Aspose.PDF for .NET (NuGet csomag) | `PdfFileSignature`, `PKCS7Detached`, és egyéb PDF segédeszközök biztosítja. | +| Érvényes PFX fájl (`.pfx`) privát kulccsal | Szükséges a **sign pdf using pfx** lépéshez. | +| Alap C# ismeretek | A kód egyszerű, de a `using` utasítások megértése segít. | + +> **Pro tipp:** Tartsd a PFX jelszót a forráskódban kívül – használj környezeti változókat vagy Azure Key Vault-ot a produkcióban. + +--- + +## Hogyan adjunk hozzá digitális aláírás PDF-et az Aspose.PDF segítségével + +Az alábbiakban a folyamatot öt könnyen emészthető lépésre bontjuk. Minden lépés tartalmaz egy kódrészletet, egy magyarázatot arra, *miért* fontos, és egy gyors ellenőrzést. + +![Aláírt PDF képernyőképe egy megjelenítőben, látható aláírás mezővel](/images/add-digital-signature-pdf.png "add digital signature pdf példa") + +### 1. lépés – Az aláíratlan PDF dokumentum betöltése + +Először szükségünk van egy `Document` objektumra, amely a aláírni kívánt PDF-et képviseli. A `using var` használata biztosítja, hogy a fájlkezelő automatikusan felszabaduljon. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**Miért?** +Az Aspose egy PDF-et objektumgráfként kezeli; a betöltés hozzáférést biztosít az oldalakhoz, megjegyzésekhez és a belső bájtáramhoz, amelyet később a signature hash-hez használnak. + +### 2. lépés – A PdfFileSignature segéd inicializálása + +`PdfFileSignature` az a osztály, amely ténylegesen alkalmazza a kriptográfiai burkot. Kéz‑a‑kézben működik a `PKCS7Detached`-del. + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**Miért?** +Az aláíró és a dokumentum szétválasztása lehetővé teszi, hogy ugyanazt a `Document` példányt más műveletekre (pl. vízjelek hozzáadása) is felhasználjuk, mielőtt véglegesítenénk az aláírást. + +### 3. lépés – PKCS#7 detached aláírás létrehozása (Create PKCS7 Detached Signature) + +A **PKCS#7 detached signature** csak a PDF hash-ét tárolja, nem magát a PDF-et. Ez ideális nagy dokumentumokhoz vagy amikor az eredeti fájlt változatlanul kell hagyni. + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**Miért egy egyéni visszahívás?** +Néha az aláíró kulcs egy HSM-ben vagy az Azure Key Vault-ban van, és a privát kulcsot közvetlenül nem lehet kinyerni. A `CustomSignHash` megadásával átadod a hash-t annak a szolgáltatásnak, amely a kulcsot tartja, így a privát anyag biztonságban marad. + +**Mi van, ha nincs szükség egyedi visszahívásra?** +Kihagyhatod a `CustomSignHash`-t; az Aspose automatikusan a PFX-ben lévő privát kulcsot használja. Az egyéni út azonban rugalmasabb és megfelel a megfelelőségi követelményeknek. + +### 4. lépés – Aláírás alkalmazása egy adott oldalra (Sign PDF Using PFX) + +Most ténylegesen elhelyezünk egy látható aláírás mezőt az oldalon. A téglalap határozza meg a helyet és a méretet (pontokban). + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**Miért kell megadni egy téglalapot?** +A látható aláírás segít a végfelhasználóknak látni, hogy a dokumentum alá van írva. Ha `isVisible`-t `false`-ra állítod, az aláírás láthatatlan lesz – továbbra is érvényes, de nehezebben észrevehető. + +**Szélhelyzet:** Ha a PDF-nek nincsenek oldalai (üres fájl), a hívás `ArgumentOutOfRangeException`-t dob. Mindig ellenőrizd, hogy `pdfDocument.Pages.Count > 0` legyen az aláírás előtt. + +### 5. lépés – Az aláírt PDF mentése + +Végül a aláírt dokumentumot lemezre mentjük. Közvetlenül is streamelheted egy ASP.NET Core válaszba. + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**Ellenőrzési tipp:** Nyisd meg a létrehozott fájlt az Adobe Acrobat Readerben. Az aláírás panelnek zöld pipa jelzést kell mutatnia (ha a tanúsítvány megbízható a gépen). + +## Teljes működő példa + +Mindent egy helyre gyűjtve, itt egy önálló konzolprogram, amelyet másolhatsz‑beilleszthetsz és futtathatsz (a útvonalak és jelszavak beállítása után). + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**Várható kimenet:** A konzol kiírja a „✅ PDF signed successfully!” üzenetet, és a `CustomSigned.pdf` fájl megjelenik ugyanabban a mappában. Megnyitáskor egy aláírás widgetet látsz a (100,100)‑(300,200) koordinátákon. + +## Gyakran Ismételt Kérdések és Szélhelyzetek + +### Mi van, ha a PFX-om okoskártyával van védve? + +Használd a `CustomSignHash` delegátot a hash továbbításához az okoskártya drivernek. A driver visszaadja az aláírás bájtjait, és az Aspose beágyazza őket anélkül, hogy a privát kulcsot valaha is felfedné. + +### Aláírhatok több oldalt egyszerre? + +Igen. Hívd meg a `pdfSigner.Sign`-t egy ciklusban, állítva a `pageNumber`-t és opcionálisan a téglalapot minden oldalhoz. Ne feledd, hogy minden hívás egy külön aláírás objektumot ad hozzá; egyes megjelenítők külön listázhatják őket. + +### Hogyan változtathatom meg a hash algoritmust? + +A `PKCS7Detached` alapértelmezett értéke a SHA‑256, de beállíthatod a `HashAlgorithm` tulajdonságot: + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +Győződj meg róla, hogy az aláíró szolgáltató támogatja a választott algoritmust. + +### Mi van, ha a tanúsítványlánc nem megbízható a kliens gépen? + +Tedd bele a teljes láncot a PFX-be, vagy oszd szét a gyökértanúsítványt a végfelhasználó megbízhatósági tárolójában. Ellenkező esetben az Acrobat azt jelzi, hogy a „Signature is unknown”. + +### Kompatibilis-e egy detached aláírás a PDF/A‑3-mal? + +A PDF/A‑3 beágyazott aláírásokat igényel, így egy detached PKCS#7 lehet, hogy nem felel meg. Ebben az esetben hagyd el a `CustomSignHash` delegátot, és hagyd, hogy az Aspose belülről kezelje az aláírást, ami beágyazott aláírást hoz létre. + +## Legjobb gyakorlatok produkcióhoz + +1. **Soha ne kódold be a jelszavakat.** Vedd őket környezeti változókból vagy egy titokkezelőből. +2. **Ellenőrizd a PDF-et aláírás előtt.** A sérült fájlok `PdfFileSignatureException`-t okoznak. +3. **Naplózd a hash algoritmust és a tanúsítvány ujjlenyomatát** auditálási célokra. +4. **Tesztelj több PDF megjelenítővel** (Adobe Reader, Foxit, Chrome), hogy az aláírás a kívánt módon jelenjen meg. +5. **Fontold meg az időbélyegzést** egy TSA (Time‑Stamp Authority) kérés hozzáadásával, ami tovább erősíti az aláírás jogi státuszát. + +## Következtetés + +Most megmutattuk, hogyan **add digital signature pdf** fájlokat használva az Aspose.PDF-et, hogyan hozz létre egy **PKCS#7 detached signature**-t, és hogyan **sign pdf using pfx** egy egyéni visszahívással. A teljes példa azonnal fut, és a magyarázatok biztosítják, hogy magabiztosan módosíthasd a folyamatot HSM-ek, időbélyegző szolgáltatások vagy PDF/A megfelelőség esetén. + +Ezután érdemes lehet felfedezni a **több dokumentum kötegelt aláírását**, az **Azure Key Vault** integrálását a biztonságos kulcstároláshoz, vagy a **vizuális testreszabást** az aláírás megjelenéséhez. Ezek a témák közvetlenül az itt lefektetett alapokra épülnek. + +Ha követted a lépéseket, most már egy stabil, hivatkozásra méltó megoldásod van, amelyet megoszthatsz a csapattagokkal – vagy akár egy AI‑alapú asszisztens válaszában is hivatkozhatsz rá. Boldog aláírást, és nyugodtan írj kommentet, ha valami nem teljesen világos! + +{{< /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/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/hungarian/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..1cd38ca73 --- /dev/null +++ b/pdf/hungarian/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,200 @@ +--- +category: general +date: 2026-03-06 +description: Tanulja meg, hogyan ellenőrizze az aláírást egy PDF-ben az Aspose PDF + C#-ban. Lépésről‑lépésre PDF aláírás ellenőrzése, PDF aláírás validálása és a kompromittált + aláírások kezelése. +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: hu +og_description: Hogyan ellenőrizhetünk aláírást egy PDF-ben az Aspose PDF segítségével. + Kövesse ezt az útmutatót a PDF-aláírás ellenőrzéséhez, a PDF-aláírás validálásához + és a kompromittált aláírások felderítéséhez C#-ban. +og_title: Hogyan ellenőrizhetünk aláírást PDF-ben C#-vel – Teljes Aspose útmutató +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: Hogyan ellenőrizhetünk aláírást PDF-ben C#-val – Teljes Aspose útmutató +url: /hu/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan ellenőrizhetünk aláírást PDF-ben C#‑ban – Teljes Aspose útmutató + +Gondolkodtál már azon, **hogyan ellenőrizhetünk aláírást** egy PDF‑ben anélkül, hogy a hajadba nyúlnál? Nem vagy egyedül. Sok fejlesztő akad el, amikor **pdf signature verification**‑re van szüksége megfelelőség vagy audit okokból, és a szokásos „csak bízz a könyvtárban” megközelítés visszaüthet. + +Ebben az útmutatóban egy gyakorlati, vég‑től‑végig megoldáson keresztül vezetünk, amely nem csak **validate pdf signature**‑t végez, hanem azt is megmondja, ha az aláírás manipulálva lett. Az **Aspose PDF** könyvtárat fogjuk használni, ami azt jelenti, hogy a kód .NET 6+, .NET Framework 4.6+ és még .NET Core környezetben is működik. A végére egy kész, futtatható kódrészletet kapsz, amelyet bármely C# projektbe beilleszthetsz. + +## Amire szükséged lesz + +- **Aspose.Pdf** NuGet csomag (a cikk írásakor elérhető legújabb verzió – 23.12). +- .NET fejlesztői környezet (Visual Studio, Rider vagy VS Code). +- Egy aláírt PDF fájl (a továbbiakban `Signed.pdf`‑nek hívjuk). +- Alapvető C# ismeretek – semmi különleges, csak a szokásos `using` utasítások és a `Console` I/O. + +Ennyi. Nincs extra szolgáltatás, nincs rejtett konfigurációs fájl. Készen állsz? Merüljünk el benne. + +![how to verify signature diagram](image.png "how to verify signature") + +## 1. lépés: A projekt beállítása PDF aláírás ellenőrzéshez + +Mielőtt bármilyen Aspose API‑t meghívnál, hivatkoznod kell a könyvtárra. Nyisd meg a terminált vagy a Package Manager Console‑t, és futtasd: + +```bash +dotnet add package Aspose.Pdf +``` + +Vagy ha inkább a felhasználói felületet részesíted előnyben, keresd meg a **Aspose.Pdf**‑t a NuGet Package Manager‑ben, és telepítsd. Ez a lépés kritikus, mert a **aspose pdf signature** összetevő nélkül később nem fogod tudni elérni a `PdfFileSignature` osztályt. + +> **Pro tipp:** Célozd meg a .NET 6 vagy újabb verziót a legjobb teljesítmény és a régi kompatibilitási figyelmeztetések elkerülése érdekében. + +## 2. lépés: A PDF dokumentum betöltése + +Miután a csomag telepítve van, betölthetjük a vizsgálandó PDF‑et. A `Document` osztály a teljes fájlt memóriában reprezentálja. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**Miért fontos:** A dokumentum betöltése hozzáférést biztosít a belső struktúrákhoz, köztük az aláírásmezőkhöz. Ha a fájl hiányzik vagy sérült, a `Document` kivételt dob, amelyet elkapva barátságosabb felhasználói élményt nyújthatsz. + +## 3. lépés: Az Aspose PdfFileSignature objektum létrehozása + +A dokumentummal a kezedben a következő lépés a `PdfFileSignature` példányosítása. Ez a felületosztály tudja olvasni, ellenőrizni és manipulálni a PDF‑ekbe beágyazott digitális aláírásokat. + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**Magyarázat:** A `PdfFileSignature` konstruktor a betöltött `Document`‑et veszi át. Belsőleg elemzi az aláírás‑szótárat, így a `VerifySignature` és `IsSignatureCompromised` metódusok elérhetők lesznek. + +## 4. lépés: Az aláírás integritásának ellenőrzése + +A **pdf signature verification** lényege a `VerifySignature` metódus. `true`‑t ad vissza, ha a kriptográfiai hash megegyezik a tárolt értékkel, és a tanúsítványlánc megbízható (feltéve, hogy beállítottad a trust manager‑t, amit most kihagyunk). + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +Ha több aláírásod van, egyszerűen változtasd meg az indexet (`0`, `1`, …). A metódus egy lépésben ellenőrzi mind az integritást, mind a megbízhatóságot, ezért ez a leggyakrabban használt megoldás. + +## 5. lépés: Kompromittált aláírás észlelése + +Még egy “valid” aláírás is kompromittálódhat, ha a dokumentumot az aláírás után módosították. Az Aspose a `IsSignatureCompromised` metódussal segít ezt a finom esetet felismerni. + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**Mikor használd:** Tegyük fel, hogy egy PDF alá van írva, majd egy felhasználó megjegyzést ad hozzá vagy módosít egy oldalt. A hash eltér, és a `IsSignatureCompromised` `true`‑t ad, míg a `VerifySignature` még `true` lehet, ha a tanúsítvány maga rendben van. Mindkét jelző ellenőrzése teljes képet ad. + +## 6. lépés: Az eredmények értelmezése + +Most már két logikai változónk van: `isSignatureValid` és `isSignatureCompromised`. Alakítsuk őket barátságos konzol‑kimenetté. + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### Várható kimenet + +| Szenárió | Konzol kimenet | +|---------------------------------------|------------------------------| +| Érvényes és nem kompromittált | `Signature OK` | +| Érvényes, de kompromittált (dokumentum módosítva) | `Signature compromised!` | +| Érvénytelen (tanúsítvány nem megbízható, hash eltérés) | `Signature verification failed` | + +Ez a táblázat segít gyorsan a logikai eredményeket emberi olvasásra alkalmas üzenetekre lefordítani. + +## Teljes működő példa + +Összeállítva, itt a komplett, kész‑futtatható program: + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +Másold, illeszd be, állítsd be a `pdfPath`‑t, és futtasd. Ha minden helyesen van beállítva, a fenti három üzenet egyikét fogod látni. + +## Gyakori hibák és tippek PDF aláírás ellenőrzéshez + +| Probléma | Miért fordul elő | Hogyan javítsuk / kerüljük | +|----------|------------------|---------------------------| +| **Missing Aspose license** | A ingyenes értékelés vízjelet ad, és korlátozhat bizonyos API‑hívásokat. | Regisztrálj licencet (`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`). | +| **Multiple signatures but wrong index** | Lehet, hogy a rossz aláírást ellenőrzöd, ami hamis negatív eredményt ad. | Iterálj a `signatureVerifier.GetSignatureCount()`‑en, és ellenőrizd mindegyiket. | +| **Certificate chain not trusted** | A `VerifySignature` hibát jelez, ha a gyökér‑CA nincs a megbízható tárolóban. | Add hozzá a aláíró CA‑t a Windows Trusted Root tárolóhoz, vagy konfigurálj egyedi `CertificateValidator`‑t. | +| **File locked by another process** | Egy PDF megnyitása, amelyet egy másik folyamat még használ, `IOException`‑t dobhat. | Használj `FileStream`‑et `FileShare.ReadWrite`‑val, vagy másold át egy ideiglenes fájlba először. | +| **Incorrect PDF path** | Egyszerű elütés `FileNotFoundException`‑t eredményez. | Ellenőrizd a útvonalat `File.Exists(pdfPath)`‑vel a betöltés előtt. | + +### Olyan széljegyek, amelyekkel találkozhatsz + +- **Detached signatures**: Egyes PDF‑ek aláírásait külsőleg tárolják. Az Aspose `PdfFileSignature` jelenleg csak beágyazott aláírásokat támogat. +- **Timestamped signatures**: Ha a timestamp authority (TSA) ellenőrzése szükséges, a `VerifySignature`‑t egy egyedi `VerificationOptions` objektummal kell hívni – ez meghaladja a gyors útmutató kereteit, de fontos a szigorú megfelelőségi projektekben. + +## Következő lépések – A validáció logikájának kibővítése + +Most, hogy elsajátítottad a **how to verify signature** alapjait, érdemes lehet: + +1. **Validate PDF signature** egy megbízható tanúsítványlistával (pl. vállalati PKI). +2. **Export signature details** (aláíró neve, aláírási idő, tanúsítvány ujjlenyomata) a `GetSignatureInfo` használatával. +3. **Batch‑process multiple PDFs** egy mappában, az eredményeket CSV‑be naplózva audit célokra. + +Ezek mind egyszerű kiterjesztései a most bemutatott kódnak, és ugyanazon **aspose pdf signature** ökoszisztémán belül maradnak. + +--- + +**Röviden**, most már pontosan tudod, **hogyan ellenőrizhetünk aláírást** egy PDF‑ben C#‑ban és Aspose‑szal, hogyan észlelheted a kompromittált aláírást, és mit tegyél, ha az ellenőrzés sikertelen. A megközelítés robusztus, több aláírással is működik, és könnyen integrálható nagyobb dokumentum‑feldolgozó csővezetékekbe. + +Van valami sajátos helyzeted? Lehet, hogy alá kell írnod PDF‑eket a ellenőrzés helyett, vagy titkosított PDF‑ekkel dolgozol. Írj kommentet, és együtt vizsgáljuk meg ezeket a szempontokat. Boldog kódolást! + +{{< /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/programming-with-stamps-and-watermarks/_index.md b/pdf/hungarian/net/programming-with-stamps-and-watermarks/_index.md index 68902bcba..806bb91fc 100644 --- a/pdf/hungarian/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/hungarian/net/programming-with-stamps-and-watermarks/_index.md @@ -39,6 +39,7 @@ Az Aspose.PDF „Bélyegzők és vízjelek programozása” című .NET oktatóa | [Táblázat a fejlécben, láblécben](./table-in-header-footer-section/) | Ismerje meg, hogyan adhat hozzá egyszerűen szöveget egy PDF fájl láblécéhez az Aspose.PDF for .NET segítségével. Lépésről lépésre útmutató a zökkenőmentes integrációhoz. | | [Szöveg a PDF fájl láblécében](./text-in-footer/) | Ismerje meg, hogyan adhat hozzá szöveget a PDF fájlok láblécéhez az Aspose.PDF for .NET segítségével. | | [Szöveg a PDF fájl fejlécében](./text-in-header/) | Tanulja meg, hogyan adhat hozzá szöveges fejléceket PDF-ekhez az Aspose.PDF for .NET használatával ezzel a lépésről lépésre szóló útmutatóval. Javítsa dokumentumai hatékonyságát és eredményességét. | +| [PDF dokumentum létrehozása Bates számolással C#-ban – Teljes útmutató](./create-pdf-document-with-bates-numbering-in-c-full-guide/) | Tanulja meg, hogyan adhat hozzá Bates számolást PDF dokumentumokhoz C#-ban az Aspose.PDF for .NET segítségével, részletes lépésekkel és példakóddal. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/hungarian/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/hungarian/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..d340fef76 --- /dev/null +++ b/pdf/hungarian/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,184 @@ +--- +category: general +date: 2026-03-06 +description: Készíts PDF-dokumentumot C#-ban, és egyszerűen adj hozzá Bates-számot. + Tanuld meg, hogyan adj hozzá üres oldalt a PDF-hez, helyezz el pecsétet az oldalon, + és valósítsd meg a Bates-számozást. +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: hu +og_description: PDF dokumentum létrehozása C#-ban és bates szám hozzáadása. Ez az + útmutató bemutatja, hogyan lehet üres oldalt hozzáadni a PDF-hez, pecsétet elhelyezni + az oldalon, és bates számozást alkalmazni. +og_title: PDF-dokumentum létrehozása Bates-számozással – C# oktatóanyag +tags: +- Aspose.Pdf +- C# +- PDF automation +title: PDF-dokumentum létrehozása Bates-számozással C#-ban – Teljes útmutató +url: /hu/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF dokumentum létrehozása Bates számozással C#‑ban + +Szükséged volt már **PDF dokumentum** létrehozására C#‑ban, és azon tűnődtél, hogyan lehet Bates számot hozzáadni anélkül, hogy a hajad kihúznád? Nem vagy egyedül – ügyvédi irodák, bíróságok és néhány vállalati megfelelőségi csapat naponta ezzel a feladattal küzd. A jó hír? Néhány sor Aspose.Pdf kóddal könnyedén létrehozhatsz egy vadonatúj PDF‑et, hozzáadhatsz egy üres oldalt, és egyetlen folyamatban elhelyezheted a megfelelő Bates számot. + +Ebben az útmutatóban végigvezetünk a teljes folyamaton: a projekt beállításától, az üres oldal PDF‑hez adásáig, a **Bates számozás hozzáadásának** módjáig, végül a **bélyegző oldalra helyezéséig** és a mentésig. A végére egy használatra kész kódrészletet kapsz, amelyet bármely .NET alkalmazásba beilleszthetsz. Nincs homályos hivatkozás, csak egy teljes, futtatható példa. + +## Amire szükséged lesz + +- **.NET 6+** (vagy .NET Framework 4.6+ – az Aspose.Pdf mindkettővel működik) +- **Aspose.Pdf for .NET** NuGet csomag (`Install-Package Aspose.Pdf`) +- Egy megfelelő IDE (Visual Studio, Rider vagy VS Code C# kiegészítővel) + +Ennyi. Nincs extra DLL, nincs külső szolgáltatás. Merüljünk el. + +## 1. lépés: PDF dokumentum létrehozása – Kezdeti beállítás + +Először is szükségünk van egy friss `Document` objektumra. Tekintsd úgy, mint egy üres vászonra, ahol minden más elhelyezkedik. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **Miért fontos:** A `Document` osztály minden Aspose művelet belépési pontja. Példányosítása hozzáférést biztosít a `Pages` gyűjteményhez, a metaadatokhoz és a biztonsági beállításokhoz – minden építőelemhez, ami egy professzionális PDF‑hez kell. + +## 2. lépés: Üres oldal hozzáadása PDF‑hez + +Egy PDF oldal nélkül olyan, mint egy könyv lapok nélkül – elég haszontalan. Egy üres oldal hozzáadása egyszerű, és felületet biztosít a Bates szám bélyegzéséhez. + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **Pro tipp:** Ha több oldalra van szükséged, egyszerűen hívd meg a `pdfDocument.Pages.Add()` metódust egy ciklusban. Minden hívás egy új `Page` objektumot ad vissza, amelyet önállóan testreszabhatsz. + +## 3. lépés: Bates számozás hozzáadása – TextStamp létrehozása + +Most jön a lényeg: a **Bates szám**. Az Aspose.Pdf‑ben ez csak egy `TextStamp` speciális artifact jelzővel. + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **Miért állítjuk be az `Artifact`‑et:** Egyes PDF‑olvasók a Bates számokat kereshető metaadatként jelenítik meg. A bélyegző `BatesNumbering` artifact‑ként való jelölése biztosítja, hogy a downstream eszközök automatikusan felismerjék. + +## 4. lépés: Bélyegző elhelyezése az oldalon + +Miután a bélyegző készen áll, **elhelyezzük az oldalon**. Ez a lépés, ahol a vizuális szám ténylegesen megjelenik a PDF‑ben. + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **Szélsőséges eset:** Ha a számnak minden oldalon növekednie kell, egy ciklusban bejárhatod a `pdfDocument.Pages` gyűjteményt, és a `batesStamp.Value` értékét frissítheted a `AddStamp` hívása előtt. A példa egyszerűen egy statikus “Bates‑001” értéket használ. + +## 5. lépés: Mentés és az eredmény ellenőrzése + +Végül a PDF‑et leírjuk a lemezre. Válassz egy olyan mappát, amelyhez írási jogosultságod van; különben `UnauthorizedAccessException` hibát kapsz. + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +Amikor megnyitod a `BatesStamped.pdf` fájlt bármely nézőben, egy apró “Bates‑001” feliratot kell látnod a jobb alsó sarokban az üres oldalon. + +> **Várt kimenet:** +> ![PDF Bates számmal bélyegzett](image-placeholder.png "PDF Bates számmal bélyegzett") +> *Alt szöveg: PDF Bates számmal bélyegzett a jobb‑alsó sarokban.* + +Ha a szám nem jelenik meg, ellenőrizd a margóértékeket, és győződj meg róla, hogy az oldal mérete nem túl kicsi (az alapértelmezett A4 megfelelő). Továbbá ellenőrizd, hogy a `Artifact` jelzőt nem távolította-e el valamilyen utófeldolgozó eszköz. + +## Teljes, működő példa + +Az alábbiakban a teljes, másolás‑beillesztésre kész program látható. Tartalmazza az összes `using` direktívát és a kommentárokat, hogy könnyen átlásd. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +Futtasd a programot, nyisd meg a PDF‑et, és a Bates szám pontosan ott lesz, ahová elhelyeztük. 🎉 + +## Gyakori variációk és buktatók + +| Szenárió | Mit kell módosítani | Miért | +|----------|---------------------|------| +| **Több oldal, növekvő számok** | `pdfDocument.Pages` ciklusban állítsd be `batesStamp.Value = $"Bates-{i:D3}"` a `AddStamp` előtt | Minden oldal egyedi azonosítót kap, ami a jogi kötegekben szokás | +| **Más elhelyezés (bal‑felső)** | `HorizontalAlignment = HorizontalAlignment.Left` és `VerticalAlignment = VerticalAlignment.Top` | Egyes szervezetek a számot a fejlécben részesítik előnyben | +| **Egyedi betűtípus vagy szín** | `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` | Javítja az olvashatóságot vagy megfelel a márka irányelveinek | +| **Meglévő PDF háttérként hozzáadása** | `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` | Hasznos, ha egy előre generált űrlapra kell bélyegzőt helyezni | + +## Összegzés + +Megmutattuk, hogyan **hozzunk létre PDF dokumentumot**, **adjunk hozzá üres oldalt**, és **adjunk hozzá Bates számot** az Aspose.Pdf for .NET segítségével, majd **helyezzük el a bélyegzőt az oldalon**, és mentsük el a fájlt. A kód szándékosan kompakt, hogy könnyen beilleszthesd nagyobb munkafolyamatokba – akár tucatok fájlját batch‑eljük, akár webszolgáltatásba integráljuk. + +Ha tovább szeretnéd fejleszteni, gondolj a következőkre: + +- A növekvő logika automatizálása nagy ügyiratokhoz. +- A PDF generálás beágyazása egy ASP.NET Core API‑ba. +- Biztonság hozzáadása (jelszóvédelem) a `pdfDocument.Encrypt(...)` segítségével. + +Kísérletezz, próbáld ki, és tedd fel kérdéseidet a hozzászólásokban. Boldog kódolást, és legyenek a PDF‑eid mindig tökéletesen bélyegzettek! + +{{< /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/programming-with-tagged-pdf/_index.md b/pdf/hungarian/net/programming-with-tagged-pdf/_index.md index fa0deb3e6..b37de8d4c 100644 --- a/pdf/hungarian/net/programming-with-tagged-pdf/_index.md +++ b/pdf/hungarian/net/programming-with-tagged-pdf/_index.md @@ -44,6 +44,7 @@ Az Aspose.PDF for .NET „Címkézett PDF-ekkel való programozás” című okt | [Szövegblokk szerkezeti elemei](./text-block-structure-elements/) | Ismerje meg, hogyan használható az Aspose.PDF for .NET szövegblokk-szerkezeti elemek, például címsorok és címkézett bekezdések hozzáadásához egy meglévő PDF-dokumentumhoz. | | [Szövegszerkezeti elemek PDF fájlban](./text-structure-elements/) Tanulja meg a PDF-ek szövegszerkezeti elemeinek kezelését az Aspose.PDF for .NET segítségével. Ez a lépésről lépésre szóló útmutató mindent tartalmaz, amire szüksége van strukturált PDF-ek létrehozásához. | | [PDF fájl érvényesítése](./validate-pdf/) | Ismerje meg, hogyan validálhat egy PDF fájlt az Aspose.PDF for .NET segítségével. Ellenőrizze a szabványoknak való megfelelését, és készítsen érvényesítési jelentést. | +| [Címkézett PDF létrehozása C#‑ban – Lépésről‑lépésre útmutató](./create-tagged-pdf-in-c-step-by-step-guide/) | Ismerje meg, hogyan hozhat létre címkézett PDF-et C#‑ban az Aspose.PDF for .NET segítségével, részletes lépésről‑lépésre útmutatóval. | | [Címkézett PDF létrehozása C#‑ban – Teljes lépésről‑lépésre útmutató](./create-tagged-pdf-in-c-complete-step-by-step-guide/) | Ismerje meg, hogyan hozhat létre teljesen címkézett PDF-et C#‑ban az Aspose.PDF for .NET segítségével, részletes lépésről‑lépésre útmutatóval. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/hungarian/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/hungarian/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..2044dac0f --- /dev/null +++ b/pdf/hungarian/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,283 @@ +--- +category: general +date: 2026-03-06 +description: Készítsen címkézett PDF-et az Aspose.Pdf segítségével C#-ban. Tanulja + meg, hogyan adjon képet a PDF-hez, állítsa be a figura pozícióját, és címkézze a + PDF-et a hozzáférhetőség érdekében. +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: hu +og_description: Készítsen címkézett PDF-et az Aspose.Pdf segítségével. Ez az útmutató + bemutatja, hogyan adjon képet a PDF-hez, állítsa be a kép pozícióját, és címkézze + a PDF-et a hozzáférhetőség érdekében. +og_title: Címkézett PDF létrehozása C#-ban – Teljes útmutató +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: Címkézett PDF létrehozása C#‑ban – Lépésről lépésre útmutató +url: /hu/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#‑ban címkézett PDF létrehozása – Teljes útmutató + +Valaha szükséged volt **címkézett PDF létrehozására** C#‑ban, de nem tudtad, hol kezdjed? Nem vagy egyedül; a hozzáférhetőség ma elengedhetetlen, és egy címkézett PDF a megfelelõ dokumentum gerince. Ebben az útmutatóban egy valós példán keresztül mutatjuk be, hogyan **képet adunk hozzá a PDF‑hez**, hogyan állítjuk be a figura pozícióját, és hogyan **címkézzük a PDF‑et** az Aspose.Pdf segítségével. A végére egy teljesen címkézett PDF‑et kapsz, amelyet bárkinek elküldhetsz. + +Mindent lefedünk az existing fájl betöltésétől a végső kimenet mentéséig, így nem kell máshol a “hogyan adjunk képet” témát keresned. Nincs felesleges szöveg – csak egy tiszta, futtatható megoldás, amely az Aspose.Pdf 23.8 (a cikk írásakor legújabb) verzióval működik. Vedd elő az IDE‑det, és kezdjünk bele. + +--- + +## Amire szükséged lesz + +- **Aspose.Pdf for .NET** (NuGet csomag `Aspose.Pdf`). +- .NET 6+ (vagy .NET Framework 4.7.2+). +- Egy bemeneti PDF, amely már rendelkezik logikai struktúrával (azaz már címkézett) – ha nem, a címkézést engedélyezheted a `pdfDocument.TaggedContent = true` beállítással. +- Egy kép fájl (`image.png`), amelyet be szeretnél ágyazni. + +Ennyi. Nincs extra könyvtár, nincs rejtélyes konfigurációs fájl. + +--- + +## 1. lépés: A meglévő PDF dokumentum betöltése (Címkézett PDF alap létrehozása) + +Az első dolog, amit teszünk, hogy megnyitjuk a fejleszteni kívánt PDF‑et. A fájl betöltése hozzáférést biztosít a logikai struktúrájához, ami elengedhetetlen a **címkézett PDF létrehozásához**. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*Miért fontos:* Címkefák nélkül a PDF nem közvetít strukturális információt a képernyőolvasóknak. A címkézés engedélyezése biztosítja, hogy a hozzáadott új elemek (például egy figura) a megfelelő hierarchiát örököljék. + +--- + +## 2. lépés: A logikai struktúra gyökér elérése (Hogyan címkézzük a PDF‑et) + +Most a PDF logikai struktúrájába nyúlunk. A gyökérelem az összes címke tárolója – tekintsd úgy, mint a dokumentum vázlatát. + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*Magyarázat:* A `logicalRoot` lehetővé teszi új címkék, például `
` vagy `
` hozzáfűzését. Ez a **PDF programozott címkézésének** központja. + +--- + +## 3. lépés: Figure címke létrehozása és pozíció beállítása (Figure pozíció beállítása) + +A *Figure* címke a vizuális tartalmat opcionális felirattal csoportosítja. Létrehozunk egyet, beállítjuk a pozícióját, és a gyökérhez csatoljuk. + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*Miért állítunk be pozíciót:* A **figure pozíció beállítása** meghatározza, hogy a vizuális elem hol jelenik meg az oldalon. Ha kihagyod, a figura váratlan helyen jelenhet meg, vagy láthatatlan lehet a segédeszközök számára. + +--- + +## 4. lépés: Vizuális ábrázolás hozzáadása – Kép beszúrása (Kép hozzáadása a PDF‑hez) + +A címke meglétével szükségünk van egy tényleges képre. Ez a rész válaszol a **kép hozzáadása a PDF‑hez** kérdésre. + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*Fontos pont:* A téglalap koordinátáinak meg kell egyezniük a korábban definiált `figureTag.Position` értékkel; ellenkező esetben a figura és a vizuális tartalma nincs szinkronban, ami a hozzáférhetőséget megsérti. + +--- + +## 5. lépés: A frissített PDF mentése (Címkézett PDF befejezése) + +Végül a változtatásokat egy új fájlba mentjük. Az eredeti érintetlenül hagyása jó gyakorlat. + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +Ezen a ponton már van egy **címkézett PDF** fájlod, amely megfelelően elhelyezett képet tartalmaz egy `
` címkébe ágyazva. Nyisd meg az `output.pdf`‑t az Adobe Acrobatban, és ellenőrizd a *Tags* panelt – a gyökér alatt egy `Figure` csomópontot kell látnod. + +--- + +## Teljes, futtatható példa + +Az alábbiakban a teljes programot találod, amelyet beilleszthetsz egy konzolos alkalmazásba. Minden lépés már a helyes sorrendben van. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### Várt eredmény + +- `output.pdf` megnyílik a (100, 150) pontban megjelenő képpel, mérete 300 × 200 pont. +- A *Tags* panel egy `Figure` elemet mutat, amely körülveszi a képet. +- A képernyőolvasó eszközök a „Figure” szót mondják ki a kép leírása előtt, ezzel megfelelve az alapvető hozzáférhetőségi szabványoknak. + +--- + +## Gyakori kérdések és széljegyek + +### Mi van, ha a forrás PDF nincs már címkézve? + +Az Aspose.Pdf lehetővé teszi a címkézés bekapcsolását a `pdfDocument.TaggedContent.IsTagged = true;` beállítással. A könyvtár egy alapértelmezett címkefát generál, majd ahogy látható, egyedi címkéket adhatsz hozzá. + +### Hozzáadhatok feliratot a figurához? + +Igen. A `figureTag` létrehozása után csatolhatsz egy `Paragraph`‑t egy `TextFragment`‑kel, és beállíthatod a `Tag`‑jét `Caption`‑re. Példa: + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### Hogyan helyezzük el a figurát egy másik oldalon? + +Cseréld le a `var firstPage = pdfDocument.Pages[1];` sort a kívánt oldal indexére, például `pdfDocument.Pages[3]`. Ne felejtsd el a `Position` koordinátákat módosítani, ha az oldal mérete eltér. + +### Mi van, ha több képet kell címkézni? + +Hozz létre egy új `Figure`‑t minden képhez, adj mindegyiknek egyedi `Position`‑t, és add hozzá a megfelelő `Image` objektumot a megfelelő oldalhoz. A képek gyűjteményén való iterálás jól működik. + +### Működik ez PDF/A megfelelőséggel? + +Az Aspose.Pdf támogatja a PDF/A‑1b, PDF/A‑2b és PDF/A‑3b szabványokat. PDF/A dokumentum generálásakor győződj meg róla, hogy a mentés előtt beállítod a megfelelőségi módot: + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +A címkézési logika változatlan marad. + +--- + +## Profi tippek és buktatók + +- **Pro tip:** Mindig használj abszolút útvonalakat vagy a `Path.Combine`‑t, hogy elkerüld a futásidejű fájl‑nem‑található hibákat. +- **Watch out for:** A `Figure` címke és az `Image` téglalap koordinátái közötti eltérés – a segédeszközök erre az igazításra támaszkodnak. +- **Performance note:** Ha sok oldalt dolgozol fel, csomagold be a kép streamet egy `using` blokkba, hogy a erőforrások gyorsan felszabaduljanak. +- **Version check:** A bemutatott API az Aspose.Pdf 23.8+ verzióval működik. Régebbi verziókban kissé eltérő osztálynevek lehetnek (pl. `LogicalStructureElement` a `FigureElement` helyett). + +--- + +## Összegzés + +Mostantól **címkézett PDF‑et hoztunk létre** a kezdetektől a végéig, bemutattuk a **kép hozzáadását a PDF‑hez**, és megmutattuk, hogyan **állítsuk be a figure pozícióját**, miközben válaszoltunk a **PDF címkézésének** és a **kép hozzáadásának** kérdésére egyetlen, koherens példában. A kód készen áll a futtatásra, a magyarázatok lefedik az egyes lépések „miértjét”, és most már szilárd alapod van a hozzáférhető PDF‑ek C#‑ban történő építéséhez. + +Készen állsz a következő kihívásra? Próbálj meg táblázatokat hozzáadni `
` címkékkel, vagy ágyazz be egy PDF/A‑2b megfelelőségi réteget archiválási célokra. Ugyanaz a minta – betöltés, a logikai struktúra elérése, címke létrehozása, vizuális tartalom csatolása, mentés – a legtöbb PDF hozzáférhetőségi feladatra alkalmazható. + +Ha elakadsz, vagy olyan felhasználási eseted van, amelyet itt nem fedtünk le, hagyj egy megjegyzést alább. Boldog címkézést, és élvezd a PDF‑ek építését, amelyet mindenki olvashat! + +![Diagram, amely egy PDF-et mutat Figure címkével és képpel – bemutatja, hogyan hozható létre címkézett PDF](placeholder-image.png "címkézett PDF példa") + +{{< /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/digital-signatures/_index.md b/pdf/indonesian/net/digital-signatures/_index.md index e35654660..c310b68e4 100644 --- a/pdf/indonesian/net/digital-signatures/_index.md +++ b/pdf/indonesian/net/digital-signatures/_index.md @@ -47,7 +47,6 @@ Pelajari cara memverifikasi tanda tangan digital dalam file PDF menggunakan Aspo ### [Verifikasi Tanda Tangan PDF di C# – Panduan Lengkap untuk Memvalidasi Tanda Tangan Digital PDF](./verify-pdf-signature-in-c-complete-guide-to-validate-digital/) Panduan langkah demi langkah untuk memverifikasi tanda tangan digital pada file PDF menggunakan C# dan Aspose.PDF. - ### [Kuasai Penandatanganan & Verifikasi PDF dengan Aspose.PDF .NET](./mastering-aspose-pdf-net-sign-verify-smart-card-certificates/) Tutorial kode untuk Aspose.PDF Net @@ -57,6 +56,9 @@ Pelajari cara memverifikasi tanda tangan digital dalam file PDF menggunakan Aspo ### [Cara Memverifikasi PDF – Validasi Tanda Tangan PDF dengan Aspose](./how-to-verify-pdf-validate-pdf-signature-with-aspose/) Panduan langkah demi langkah untuk memverifikasi dan memvalidasi tanda tangan PDF menggunakan Aspose. +### [Cara Membaca Tanda Tangan di PDF dengan C# – Panduan Langkah demi Langkah](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +Pelajari cara membaca tanda tangan digital dalam file PDF menggunakan C# dan Aspose.PDF dengan contoh kode langkah demi langkah. + ## Sumber Daya Tambahan - [Dokumentasi Aspose.PDF untuk Net](https://docs.aspose.com/pdf/net/) diff --git a/pdf/indonesian/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/indonesian/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..94b3ef598 --- /dev/null +++ b/pdf/indonesian/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-06 +description: Cara membaca tanda tangan dalam PDF menggunakan C#. Pelajari cara memuat + dokumen PDF dengan C#, daftar tanda tangan PDF, dan mendapatkan tanda tangan digital + PDF dengan cepat dan andal. +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: id +og_description: Cara membaca tanda tangan dalam PDF menggunakan C#. Panduan ini menunjukkan + cara memuat dokumen PDF dengan C#, menampilkan daftar tanda tangan PDF, dan mengambil + tanda tangan digital PDF dalam beberapa langkah mudah. +og_title: Cara Membaca Tanda Tangan dalam PDF dengan C# – Panduan Lengkap +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: Cara Membaca Tanda Tangan dalam PDF dengan C# – Panduan Langkah demi Langkah +url: /id/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara Membaca Tanda Tangan dalam PDF dengan C# – Panduan Lengkap + +Pernah bertanya-tanya **bagaimana cara membaca tanda tangan** yang sudah tertanam dalam file PDF? Mungkin Anda sedang membangun dasbor kepatuhan, atau Anda hanya perlu mengaudit kontrak yang ditandatangani sebelum masuk ke basis data Anda. Kabar baiknya, dengan beberapa baris C# dan pustaka Aspose.Pdf Anda dapat mengambil nama tanda tangan langsung dari file—tanpa inspeksi manual. + +Dalam tutorial ini kami akan membahas cara memuat dokumen PDF di C#, mencantumkan tanda tangan PDF, dan mendapatkan informasi tanda tangan digital PDF. Pada akhir tutorial Anda akan memiliki aplikasi konsol siap‑jalankan yang mencetak setiap nama tanda tangan yang ditemukan, serta tip untuk menangani kasus tepi seperti file yang dilindungi kata sandi. + +## Prasyarat + +- .NET 6.0 atau lebih baru (kode ini juga bekerja dengan .NET Framework 4.6+) +- Aspose.Pdf untuk .NET (Anda dapat mengambil lisensi sementara gratis dari situs web Aspose) +- Sebuah PDF yang sudah berisi satu atau lebih tanda tangan digital (contoh `MultiSigned.pdf` disertakan dalam repo) + +> **Pro tip:** Jika Anda menggunakan Visual Studio, aktifkan *Nullable Reference Types* untuk menangkap bug terkait null lebih awal. + +## Langkah 1: Muat Dokumen PDF di C# + +Hal pertama yang kita butuhkan adalah objek `Document` yang mewakili file PDF di disk. Kelas `Document` milik Aspose.Pdf menangani segala hal mulai dari ekstraksi teks sederhana hingga pemrosesan formulir yang kompleks. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**Mengapa ini penting:** Memuat PDF memvalidasi bahwa file ada dan dapat dibaca. Jika file rusak atau jalurnya salah, kita akan keluar lebih awal alih‑alih menghadapi error yang membingungkan nanti saat mencoba mengenumerasi tanda tangan. + +## Langkah 2: Buat Helper `PdfFileSignature` + +Aspose memisahkan penanganan PDF umum (`Document`) dari operasi khusus tanda tangan (`PdfFileSignature`). Menginstansiasi helper ini memberi kita akses ke metode seperti `GetSignatureNames()`. + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**Mengapa ini penting:** Kelas `PdfFileSignature` mengetahui cara mengurai entri kamus `/Sig` pada PDF, tempat tanda tangan digital berada. Menggunakannya memastikan kita membaca tanda tangan persis seperti saat ditambahkan, mempertahankan semua metadata kriptografi. + +## Langkah 3: Ambil Semua Nama Tanda Tangan + +Sekarang masuk ke inti **cara membaca tanda tangan**: panggil `GetSignatureNames()`. Metode ini mengembalikan array string yang berisi *nama bidang* masing‑masing tanda tangan. + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**Apa yang akan Anda lihat:** Jika `MultiSigned.pdf` berisi tiga tanda tangan bernama `Signature1`, `Signature2`, dan `Signature3`, output konsol akan menjadi: + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## Langkah 4: (Opsional) Verifikasi Validitas Setiap Tanda Tangan + +Membaca nama biasanya sudah cukup, tetapi banyak proyek juga perlu mengetahui apakah setiap tanda tangan masih valid. Aspose memungkinkan Anda memvalidasi tanda tangan berdasarkan nama bidangnya: + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **Kasus tepi:** Jika PDF dilindungi kata sandi, Anda harus menyediakan kata sandi sebelum memanggil `VerifySignature`. Gunakan `pdfDocument.Encrypt.Password = "yourPassword";` tepat setelah memuat dokumen. + +## Contoh Lengkap yang Berfungsi + +Berikut adalah program lengkap yang dapat Anda salin‑tempel ke proyek konsol baru (`dotnet new console`). Program ini mencakup semua langkah, penanganan error, dan verifikasi opsional. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**Output yang diharapkan** (asumsi tiga tanda tangan valid): + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## Menangani Variasi Umum + +| Situasi | Apa yang Diubah | Mengapa | +|-----------|----------------|-----| +| **PDF yang dilindungi kata sandi** | Set `pdfDocument.Encrypt.Password = "yourPwd";` sebelum membuat `PdfFileSignature`. | Tanpa kata sandi kamus tanda tangan terenkripsi dan `GetSignatureNames()` mengembalikan array kosong. | +| **PDF besar ( > 100 MB )** | Gunakan `pdfSigner.GetSignatureNames(0, 10)` untuk menelusuri hasil per halaman (parameter pertama = indeks mulai). | Memuat seluruh daftar tanda tangan sekaligus dapat mengonsumsi banyak memori. | +| **Tidak ada tanda tangan sama sekali** | Kode sudah mencetak peringatan ramah. Pertimbangkan mencatat ini sebagai peristiwa audit. | Membantu proses hilir memutuskan apakah menolak file atau meminta pengguna mengirimkan versi yang ditandatangani. | +| **Nama bidang tanda tangan khusus** | Metode mengembalikan nama bidang apa pun yang digunakan saat penandatanganan, misalnya `EmployeeApproval`. Tidak perlu pekerjaan tambahan. | Memungkinkan Anda memetakan tanda tangan kembali ke peran bisnis. | + +## Praktik Terbaik & Tips + +- **Dispose objek**: Pola `using var pdfSigner` menjamin bahwa sumber daya native dibebaskan dengan cepat. +- **Lisensi lebih awal**: Panggil `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` di awal `Main` untuk menghindari watermark evaluasi. +- **Keamanan thread**: Jika Anda memproses banyak PDF secara paralel, buat instance `PdfFileSignature` terpisah per thread. Kelas ini tidak thread‑safe. +- **Logging**: Untuk produksi, ganti `Console.WriteLine` dengan logger terstruktur (Serilog, NLog) sehingga Anda dapat merekam nama tanda tangan yang tepat untuk jejak audit. +- **Pemeriksaan versi**: Kode ini bekerja dengan Aspose.Pdf untuk .NET 23.10 dan yang lebih baru. Versi lama mungkin memerlukan `PdfSignature` alih‑alih `PdfFileSignature`. + +## Kesimpulan + +Kami telah membahas **cara membaca tanda tangan** dari PDF menggunakan C#. Dengan memuat dokumen PDF, membuat helper `PdfFileSignature`, dan memanggil `GetSignatureNames()`, Anda dapat mencantumkan setiap tanda tangan digital yang tertanam dalam file. Verifikasi opsional menambah lapisan kepercayaan, dan contoh kode menunjukkan secara tepat cara mengintegrasikannya ke dalam aplikasi konsol dunia nyata. + +Siap untuk langkah selanjutnya? Cobalah menggabungkan ini dengan `DigitalSignatureUtil` milik Aspose untuk mengekstrak sertifikat penandatangan, atau masukkan daftar tanda tangan ke dalam dasbor kepatuhan yang menandai kontrak yang belum ditandatangani. Kemungkinannya tak terbatas—ingatlah untuk **load PDF document C#**, **list PDF signatures**, dan **get digital signatures PDF** setiap kali Anda membutuhkan audit cepat. + +Selamat coding, semoga PDF Anda selalu tetap ditandatangani dengan aman! + +{{< /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-conversion/_index.md b/pdf/indonesian/net/document-conversion/_index.md index f7039484a..c60517574 100644 --- a/pdf/indonesian/net/document-conversion/_index.md +++ b/pdf/indonesian/net/document-conversion/_index.md @@ -57,6 +57,7 @@ Bahasa Indonesia: --- | --- Bahasa Indonesia: | [XML Ke PDFTetapkan Jalur Gambar](./xml-to-pdfset-image-path/) | Pelajari cara mengonversi XML ke PDF dengan mudah menggunakan Aspose.PDF untuk .NET. Panduan terperinci ini memandu Anda melalui proses langkah demi langkah, dari penyiapan hingga penyelesaian. Bahasa Indonesia: | [XPS Ke PDF](./xps-to-pdf/) Pelajari cara mengonversi file XPS ke PDF menggunakan Aspose.PDF untuk .NET dengan tutorial langkah demi langkah ini. Sempurna untuk pengembang dan penggemar dokumen. | | [Konversi PDF ke PDF/X‑4 dalam C#](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | Pelajari cara mengonversi PDF ke PDF/X‑4 menggunakan Aspose.PDF untuk .NET dengan contoh kode C# langkah demi langkah. | +| [Tutorial Aspose PDF: Mengonversi PDF ke PDF/X‑4 dalam C#](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) | Pelajari cara mengonversi PDF ke PDF/X‑4 menggunakan Aspose.PDF untuk .NET dengan contoh kode C# langkah demi langkah. | | [Tutorial PDF ke PNG – Mengonversi Halaman PDF ke PNG dalam C#](./pdf-to-png-tutorial-convert-pdf-pages-to-png-in-c/) | Pelajari cara mengonversi halaman PDF menjadi gambar PNG menggunakan Aspose.PDF untuk .NET dengan contoh kode C# langkah demi langkah. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/indonesian/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/indonesian/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..50955b3b0 --- /dev/null +++ b/pdf/indonesian/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-03-06 +description: Tutorial Aspose PDF menunjukkan cara menggunakan Aspose untuk memuat + dokumen PDF di C#, mengonversi PDF ke PDF/X‑4, dan menyimpan PDF yang telah dikonversi + secara efisien. +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: id +og_description: Tutorial Aspose PDF menjelaskan cara memuat dokumen PDF di C#, mengonversinya + ke format PDF/X‑4, dan menyimpan PDF yang telah dikonversi dengan contoh kode yang + jelas. +og_title: 'Tutorial Aspose PDF: Mengonversi PDF ke PDF/X‑4 dengan C#' +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: 'Tutorial Aspose PDF: Mengonversi PDF ke PDF/X‑4 dalam C#' +url: /id/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tutorial Aspose PDF: Mengonversi PDF ke PDF/X‑4 dalam C# + +Pernah bertanya-tanya bagaimana cara menggunakan Aspose untuk mengubah PDF biasa menjadi file PDF/X‑4 tanpa kesulitan? Anda bukan satu-satunya—para pengembang sering membutuhkan cara yang andal untuk **load PDF document C#**‑style, mengonversinya, dan kemudian **save the converted PDF** untuk alur kerja downstream. Dalam panduan ini, kami akan membahas contoh lengkap yang dapat dijalankan yang melakukan hal tersebut, menggunakan Aspose.Pdf terbaru untuk .NET. + +Kami akan membahas semuanya mulai dari menginstal pustaka, memuat PDF sumber, mengonversinya ke standar PDF/X‑4, dan akhirnya menyimpan hasilnya ke disk. Pada akhirnya Anda akan memiliki pemahaman yang kuat tentang **how to use Aspose** untuk skenario konversi umum ini, plus tips untuk menangani edge cases. + +## Prasyarat + +- .NET 6.0 atau lebih baru (kode ini juga bekerja pada .NET Framework, tetapi .NET 6+ disarankan). +- File lisensi Aspose.Pdf untuk .NET yang valid (atau Anda dapat menjalankan dalam mode evaluasi untuk tes cepat). +- Visual Studio 2022 atau IDE apa pun yang kompatibel dengan C#. +- File PDF input yang terletak di `YOUR_DIRECTORY/input.pdf`. + +Tidak diperlukan paket NuGet tambahan selain `Aspose.Pdf`. + +## Instal Aspose.Pdf via NuGet + +Buka terminal atau Package Manager Console Anda dan jalankan: + +```bash +dotnet add package Aspose.Pdf +``` + +Itu akan mengambil versi stabil terbaru (per Maret 2026, versi 23.12). Jika Anda lebih suka UI, cari *Aspose.Pdf* di NuGet Package Manager dan instal. + +## Langkah 1: Load PDF Document dalam C# dengan Aspose + +Hal pertama yang perlu Anda lakukan adalah memuat PDF sumber ke memori. Kelas `Document` milik Aspose adalah titik masuk. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**Why this matters:** Memuat file memvalidasi bahwa path ada dan PDF tidak rusak. Blok `try/catch` memberi Anda cara yang elegan untuk menampilkan error—berguna ketika file berasal dari unggahan pengguna. + +## Langkah 2: Convert PDF ke Format PDF/X‑4 + +PDF/X‑4 adalah subset PDF yang dirancang untuk pencetakan dan pengarsipan yang dapat diandalkan. Mengonversi memastikan semua font ter-embed dan file mematuhi standar industri. + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**Why choose `ConvertErrorAction.Delete`?** Beberapa PDF lama mengandung elemen (seperti anotasi yang tidak didukung) yang sebaliknya akan menghentikan konversi. Menghapusnya menjaga proses tetap lancar, tetapi Anda harus meninjau output jika perlu elemen tersebut dipertahankan. + +### Opsional: Verifikasi Keberhasilan Konversi + +Jika Anda ingin sangat yakin, Anda dapat memeriksa `PdfFormat` dokumen setelah konversi: + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## Langkah 3: Save the Converted PDF File + +Sekarang dokumen berada dalam format PDF/X‑4, tulis kembali ke disk. + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**Result you’ll see:** File baru bernama `Converted_PDFX4.pdf` muncul di `YOUR_DIRECTORY`. Buka dengan viewer PDF apa pun yang mendukung PDF/X‑4 (Adobe Acrobat, Foxit, dll.) dan Anda akan melihat semua font ter-embed dan dokumen mematuhi spesifikasi PDF/X‑4. + +![aspose pdf tutorial - converting PDF to PDF/X‑4](/images/aspose-pdf-conversion.png "aspose pdf tutorial showing PDF/X‑4 conversion result") + +*​Teks alt gambar mencakup kata kunci utama, memenuhi persyaratan SEO.* + +## Contoh End‑to‑End Lengkap + +Menggabungkan semuanya, berikut adalah aplikasi konsol mandiri yang dapat Anda copy‑paste ke proyek C# baru: + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +Jalankan program, dan Anda akan melihat pesan konsol yang mengonfirmasi setiap langkah. Jika ada yang salah, pesan error akan mengarahkan Anda ke tahap yang tepat. + +## Pertanyaan Umum & Kasus Edge + +### Bagaimana jika saya perlu mempertahankan anotasi? + +`ConvertErrorAction.Delete` menghapus objek yang tidak didukung, termasuk beberapa anotasi. Ganti ke `ConvertErrorAction.Keep` jika mempertahankannya penting, tetapi uji output—beberapa anotasi mungkin masih menyebabkan peringatan kepatuhan. + +### Bagaimana cara menangani PDF besar (ratusan MB)? + +Aspose.Pdf melakukan streaming file, sehingga penggunaan memori tetap wajar. Namun, Anda mungkin ingin meningkatkan ambang `System.GC` atau memproses dokumen dalam potongan (misalnya, konversi per halaman) untuk file yang sangat besar. + +### Bisakah saya mengonversi banyak file sekaligus? + +Tentu saja. Bungkus logika loading‑conversion‑saving dalam loop `foreach` yang mengiterasi direktori PDF. Ingat untuk menangani exception per file agar satu PDF yang buruk tidak menghentikan seluruh batch. + +### Apakah ini bekerja pada .NET Core di Linux? + +Ya. Aspose.Pdf bersifat lintas‑platform. Pastikan paket NuGet `Aspose.Pdf` direferensikan dan Anda memiliki file font yang sesuai terpasang di host Linux jika memerlukan rendering teks. + +## Pro Tips dari Lapangan + +- **Set a license early**: `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` – ini menghapus watermark evaluasi dan meningkatkan performa. +- **Validate the output**: Gunakan `PdfFormatValidator` milik Aspose untuk secara programatis mengonfirmasi kepatuhan PDF/X‑4 sebelum mengirim file. +- **Log conversion time**: Batch besar mendapat manfaat dari mengukur waktu setiap konversi (`Stopwatch`) untuk menemukan regresi performa. +- **Avoid hard‑coded paths**: Lebih baik gunakan file konfigurasi atau variabel lingkungan untuk `inputPath` dan `outputPath`—menjadikan aplikasi portable. + +## Kesimpulan + +Dalam **Aspose PDF Tutorial** ini kami menunjukkan alur kerja bersih end‑to-end untuk **how to use Aspose** untuk **load PDF document C#**, mengonversinya ke standar **PDF/X‑4**, dan **save the converted PDF**. Potongan kode ini dapat dijalankan sepenuhnya, menjelaskan *mengapa* di balik setiap langkah, dan menyoroti jebakan yang mungkin Anda temui dalam proyek dunia nyata. + +Sekarang setelah Anda memahami dasar-dasarnya, Anda dapat memperluas solusi—memproses batch puluhan file, menyematkan metadata khusus, atau mengintegrasikan konversi ke dalam API web. Kemungkinannya sangat luas, dan Aspose.Pdf memberi Anda alat untuk mencapainya dengan cepat. + +Masih ada pertanyaan tentang pemrosesan PDF dengan Aspose? Tinggalkan komentar, jelajahi dokumentasi resmi Aspose, atau bereksperimen dengan kode di atas. Selamat mengonversi! + +{{< /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-creation/_index.md b/pdf/indonesian/net/document-creation/_index.md index 863f2c6cc..9ebef594c 100644 --- a/pdf/indonesian/net/document-creation/_index.md +++ b/pdf/indonesian/net/document-creation/_index.md @@ -77,6 +77,12 @@ Tutorial kode untuk Aspose.PDF Net ### [Buat Dokumen PDF dengan Aspose.PDF – Tambahkan Halaman, Bentuk & Simpan](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) Pelajari cara menambahkan halaman, bentuk, dan menyimpan dokumen PDF menggunakan Aspose.PDF. +### [Buat Dokumen PDF dengan Aspose.PDF – Panduan Langkah demi Langkah](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +Pelajari cara membuat dokumen PDF secara terprogram menggunakan Aspose.PDF dengan panduan langkah demi langkah. + +### [Buat Dokumen PDF dengan Aspose.PDF – Panduan Lengkap C#](./create-pdf-document-with-aspose-pdf-full-c-guide/) +Pelajari cara membuat dokumen PDF secara lengkap menggunakan Aspose.PDF dengan contoh kode C# yang jelas. + ## Sumber Daya Tambahan - [Dokumentasi Aspose.PDF untuk Net](https://docs.aspose.com/pdf/net/) diff --git a/pdf/indonesian/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/indonesian/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..f02edc3da --- /dev/null +++ b/pdf/indonesian/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-06 +description: Buat dokumen PDF di C# menggunakan Aspose.PDF – pelajari cara menambahkan + halaman kosong PDF, kotak teks, widget, dan menyimpan PDF dengan cepat. +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: id +og_description: Buat dokumen PDF dalam C# dengan Aspose.PDF. Panduan ini menunjukkan + cara menambahkan halaman kosong PDF, kotak teks, widget, dan cara menyimpan PDF. +og_title: Buat Dokumen PDF dengan Aspose.PDF – Tutorial Lengkap C# +tags: +- pdf +- csharp +- aspose +- forms +title: Buat Dokumen PDF dengan Aspose.PDF – Panduan Lengkap C# +url: /id/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Buat Dokumen PDF dengan Aspose.PDF – Panduan Lengkap C# + +Pernahkah Anda perlu **membuat dokumen pdf** dari awal dalam proyek .NET dan bertanya-tanya dari mana memulainya? Anda tidak sendirian; banyak pengembang mengalami hal yang sama ketika persyaratan pertama berbunyi “generate a fillable PDF with the same textbox on three pages.” Kabar baik? Dengan Aspose.PDF Anda dapat membuat PDF yang tampak profesional hanya dengan beberapa baris kode. + +Dalam tutorial ini kami akan membahas seluruh proses: mulai dari menginisialisasi PDF baru, **menambahkan halaman kosong pdf**, menyisipkan **textbox**, menggandakannya dengan anotasi **widget**, dan akhirnya **menyimpan PDF** ke disk. Pada akhir tutorial Anda akan memiliki file siap pakai bernama *MultiWidgetField.pdf* dan pemahaman yang kuat mengapa setiap langkah penting. + +## Apa yang Dibahas dalam Panduan Ini + +- Prasyarat yang Anda butuhkan sebelum menulis satu baris kode. +- Pembuatan PDF dokumen langkah demi langkah menggunakan Aspose.PDF untuk .NET. +- Cara menambahkan halaman kosong, bidang formulir textbox, dan instance widget tambahan. +- Tips untuk menangani jebakan umum (mis., pengindeksan halaman, benturan penamaan bidang). +- Program C# lengkap, siap salin‑tempel yang dapat Anda jalankan hari ini. + +Tidak ada tautan dokumentasi eksternal, tidak ada pintasan “lihat dokumen API”—semua yang Anda butuhkan ada di sini. + +## Prasyarat + +Sebelum memulai, pastikan Anda memiliki: + +1. **.NET 6.0** (atau versi lebih baru) terpasang di mesin Anda. +2. Lisensi **Aspose.PDF for .NET** yang aktif atau kunci evaluasi sementara. +3. Lingkungan pengembangan seperti **Visual Studio 2022** atau **VS Code** dengan ekstensi C#. + +Itu saja—tidak ada yang lain diperlukan. + +## Langkah 1: Inisialisasi Dokumen PDF dan Tambahkan Halaman Kosong + +Hal pertama yang Anda lakukan ketika **membuat dokumen pdf** secara programatis adalah menginstansiasi objek `Document`. Anggaplah itu seperti membuka buku catatan baru. Kemudian Anda menambahkan halaman yang diperlukan; dalam kasus kami tiga halaman kosong. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**Mengapa ini penting:** Aspose.PDF memperlakukan halaman sebagai koleksi berbasis nol secara internal, tetapi API publiknya berbasis 1, sehingga `Pages[1]` adalah halaman pertama yang baru saja Anda tambahkan. Menambahkan halaman di awal memberi Anda kanvas untuk menempatkan bidang formulir nanti, dan jauh lebih murah dibandingkan menyisipkan halaman secara dinamis setelah dokumen berkembang. + +> **Pro tip:** Jika Anda hanya membutuhkan satu halaman, Anda dapat melewatkan loop dan memanggil `pdfDocument.Pages.Add()` sekali. Menambahkan beberapa halaman dalam loop membuat kode lebih skalabel. + +## Langkah 2: Definisikan Bidang Form TextBox pada Halaman Pertama + +Sekarang kita memiliki tiga lembar kosong, mari letakkan **textbox** pada yang pertama. `TextBoxField` adalah elemen form yang dapat diisi pengguna akhir ketika PDF dibuka di Acrobat Reader atau penampil PDF apa pun yang mendukung formulir. + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**Mengapa koordinat persegi panjang?** Aspose.PDF menggunakan poin (1/72 inci). Persegi panjang `(100, 700, 300, 730)` menempatkan textbox kira-kira setengah halaman ke bawah, lebar 200 pt dan tinggi 30 pt. Sesuaikan angka-angka ini agar cocok dengan tata letak Anda. + +> **Pertanyaan umum:** *Apakah saya perlu mengatur properti `Value`?* +> Tidak, bersifat opsional. Membiarkannya kosong menampilkan bidang kosong; mengatur nilai default dapat membantu pengguna. + +## Langkah 3: Tambahkan Anotasi Widget untuk Bidang yang Sama pada Halaman 2 dan 3 + +**Widget** adalah representasi visual dari bidang form pada halaman tertentu. Secara default bidang hanya muncul pada halaman tempat dibuat. Untuk menggunakan kembali textbox yang sama pada halaman lain, Anda melampirkan objek `WidgetAnnotation` tambahan ke koleksi `Widgets` bidang tersebut. + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**Mengapa widget?** Tanpa mereka, pengguna hanya akan melihat textbox pada halaman 1, meskipun bidang dasar ada. Widget memungkinkan Anda berbagi satu bidang logis di beberapa halaman, memastikan teks yang dimasukkan muncul di semua tempat bidang ditampilkan. + +> **Kasus khusus:** Jika Anda membutuhkan textbox pada koordinat berbeda di setiap halaman, cukup ubah nilai `Rectangle` untuk setiap widget. + +## Langkah 4: Daftarkan Bidang ke Koleksi Form Dokumen + +Aspose.PDF menyimpan registri pusat semua bidang form. Menambahkan bidang ke koleksi `Form` menjadikannya bagian dari struktur form interaktif PDF. + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +Argumen kedua (`"Comment"`) adalah **nama lengkap** bidang. Nama ini harus unik di seluruh dokumen; jika tidak, Aspose akan melempar pengecualian. + +## Langkah 5: Simpan PDF Hasil – Cara Menyimpan PDF + +Akhirnya, kami menyimpan dokumen dalam memori ke disk. Ini adalah bagian **cara menyimpan pdf** dalam tutorial. + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**Mengapa menentukan jalur absolut?** Menggunakan jalur absolut menghindari kebingungan tentang direktori kerja, terutama saat menjalankan program dari debugger Visual Studio. Jika Anda lebih suka jalur relatif, pastikan folder tersebut ada sebelum memanggil `Save`. + +### Hasil yang Diharapkan + +Buka *MultiWidgetField.pdf* di Adobe Acrobat Reader. Anda akan melihat textbox yang sama pada halaman 1, 2, dan 3. Ketik sesuatu ke dalam bidang pada halaman mana pun—teks tersebut langsung muncul di halaman lain karena mereka berbagi bidang form yang sama. + +![Contoh Membuat Dokumen PDF yang menampilkan textbox pada tiga halaman](https://example.com/placeholder-image.png "Contoh Membuat Dokumen PDF") + +*Teks alt gambar: Contoh Membuat Dokumen PDF yang menampilkan textbox pada tiga halaman.* + +## Contoh Lengkap, Siap‑Jalankan + +Berikut adalah program lengkap yang dapat Anda salin ke proyek konsol baru (`dotnet new console`) dan jalankan. Semua langkah sudah terurut, dan kode menyertakan komentar untuk kejelasan. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +Jalankan program, buka `C:\Temp\`, dan buka PDF yang dihasilkan. Anda akan melihat tiga textbox identik yang siap diisi pengguna. + +## Variasi Umum & Kasus Khusus + +| Scenario | What to Change | Why | +|----------|----------------|-----| +| **Ukuran textbox berbeda pada setiap halaman** | Sesuaikan nilai `Rectangle` untuk setiap `WidgetAnnotation`. | Memungkinkan Anda menyesuaikan bidang dengan tata letak yang berbeda. | +| **Bidang hanya-baca** | Setel `commentField.ReadOnly = true;`. | Mencegah pengguna mengedit konten setelah pengisian awal. | +| **Textbox multi‑baris** | Setel `commentField.Multiline = true;` dan tingkatkan tinggi persegi panjang. | Memungkinkan komentar lebih panjang tanpa menggulir. | +| **Menambahkan bidang kedua** | Buat `TextBoxField` lain (atau `FormField` apa pun) dan ulangi langkah 2‑4 dengan nama baru. | Anda dapat mengumpulkan beberapa informasi dalam PDF yang sama. | + +## Tips Pro & Jebakan yang Harus Dihindari + +- **Pengindeksan Halaman:** Ingat bahwa `pdfDocument.Pages[1]` adalah halaman pertama, bukan `[0]`. Mencampur indeks berbasis 0 dan 1 dapat menyebabkan pengecualian “Index out of range”. +- **Benturan Penamaan Bidang:** Dua bidang tidak dapat memiliki nama lengkap yang sama. Jika Anda mendapatkan error tentang nama duplikat, periksa kembali string yang Anda berikan ke `Form.Add`. +- **Lisensi vs. Evaluasi:** Versi evaluasi menambahkan watermark pada setiap halaman. Gunakan lisensi yang valid untuk menghilangkannya di produksi. +- **Kinerja:** Menambahkan ratusan halaman dalam loop tidak masalah, tetapi jika Anda perlu menghasilkan PDF besar (ribuan halaman), pertimbangkan untuk menggunakan + +{{< /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-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/indonesian/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..c2c305d81 --- /dev/null +++ b/pdf/indonesian/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-03-06 +description: Buat dokumen PDF menggunakan Aspose.PDF di C#. Pelajari cara menambahkan + halaman PDF, menggambar persegi panjang PDF, menambahkan bentuk PDF, dan mengontrol + ketebalan batas persegi panjang—semua dalam satu tutorial. +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: id +og_description: Buat dokumen PDF di C# dengan Aspose.PDF. Tutorial ini menunjukkan + cara menambahkan halaman PDF, menggambar persegi panjang PDF, menambahkan bentuk + PDF, dan mengatur ketebalan batas persegi panjang. +og_title: Buat Dokumen PDF dengan Aspose.PDF – Panduan Lengkap +tags: +- Aspose.PDF +- C# +- PDF generation +title: Buat Dokumen PDF dengan Aspose.PDF – Panduan Langkah demi Langkah +url: /id/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Buat Dokumen PDF dengan Aspose.PDF – Panduan Langkah‑ demi‑Langkah + +Pernah membutuhkan untuk **membuat dokumen PDF** secara programatis dan tidak yakin harus mulai dari mana? Anda tidak sendirian—banyak pengembang mengalami hal yang sama ketika aplikasi mereka harus menghasilkan faktur, laporan, atau sertifikat secara langsung. + +Kabar baiknya, dengan Aspose.PDF untuk .NET Anda dapat melakukannya dalam beberapa baris kode, dan Anda juga akan belajar cara **add page PDF**, **draw rectangle PDF**, **add shape PDF**, serta menyesuaikan **rectangle border thickness** sambil melakukannya. Mari kita mulai. + +## Apa yang Akan Anda Bangun + +Pada akhir panduan ini Anda akan memiliki aplikasi konsol C# yang berfungsi penuh yang: + +1. **Membuat dokumen PDF** dari awal. +2. **Menambahkan halaman PDF** ke dokumen. +3. **Menggambar persegi panjang PDF** pada halaman tersebut. +4. **Memvalidasi** bahwa persegi panjang tetap berada dalam batas halaman (**add shape PDF** step). +5. Menetapkan **ketebalan border persegi panjang** khusus. +6. Menyimpan hasil sebagai `ShapeValidated.pdf`. + +Tidak ada layanan eksternal, tidak ada konfigurasi misterius—hanya C# biasa dan Aspose.PDF. + +### Prasyarat + +- .NET 6.0 atau yang lebih baru (kode ini juga berfungsi dengan .NET Framework 4.6+). +- Referensi ke paket NuGet `Aspose.Pdf`. Anda dapat menambahkannya melalui: + +```bash +dotnet add package Aspose.Pdf +``` + +- Editor teks atau IDE—Visual Studio, VS Code, Rider, apa pun yang Anda suka. + +> **Pro tip:** Jika Anda menggunakan mesin korporat, pastikan feed NuGet tidak diblokir; jika tidak, Anda akan mendapatkan error “Package not found”. + +--- + +## Buat Dokumen PDF – Inisialisasi Dokumen + +Langkah pertama adalah membuat objek `Document`. Anggaplah itu sebagai kanvas kosong tempat setiap halaman dan bentuk akan berada. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +Mengapa kita membutuhkan objek ini? Ia mewakili seluruh file PDF dalam memori, memberi kita akses ke koleksi `Pages`, metadata, dan pengaturan keamanan. Setelah Anda memiliki dokumen, Anda dapat mulai menumpuk halaman, teks, gambar, dan grafik vektor. + +--- + +## Tambahkan Halaman ke PDF (add page pdf) + +PDF tanpa halaman pada dasarnya adalah file kosong—tidak berguna. Menambahkan halaman sangat sederhana, dan Anda dapat menyesuaikan ukurannya jika diinginkan. Di sini kami menggunakan ukuran A4 default. + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +Metode `Add()` mengembalikan instance `Page` baru yang sudah menjadi bagian dari koleksi `Pages`, sehingga Anda dapat langsung mulai menggambar di atasnya. Dalam skenario dunia nyata Anda mungkin melakukan loop pada sekumpulan data dan menambahkan puluhan halaman; pemanggilan satu baris yang sama bekerja untuk setiap iterasi. + +--- + +## Gambar Bentuk Persegi Panjang (draw rectangle pdf) + +Sekarang bagian visual: sebuah persegi panjang dengan border yang terlihat. Di sinilah **draw rectangle pdf** berperan. + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +Beberapa hal yang perlu dicatat: + +- `Rect` menggunakan satuan point (1 pt ≈ 1/72 inci). Koordinat menentukan sudut kiri‑bawah dan kanan‑atas, sehingga Anda dapat mengontrol lebar dan tinggi secara tepat. +- `BorderInfo` memungkinkan Anda menentukan sisi mana yang mendapatkan garis dan seberapa tebal garis tersebut. Di sini kami menerapkan garis 2‑point pada **semua** sisi, memberikan persegi panjang tampilan bersih dan seragam. + +--- + +## Validasi Penempatan Bentuk (add shape pdf) + +Sebelum kami menambahkan persegi panjang ke halaman, sebaiknya memverifikasi bahwa ia muat di dalam area cetak halaman. Aspose.PDF menyediakan metode bantu yang berguna untuk itu. + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +Mengapa repot? Jika Anda secara tidak sengaja menempatkan bentuk sebagian di luar layar, penampil PDF mungkin memotongnya, menghasilkan pengalaman pengguna yang membingungkan. Klausa penjaga **add shape pdf** ini memastikan Anda hanya menambahkan konten yang akan terlihat sepenuhnya. + +--- + +## Simpan PDF (add page pdf) + +Akhirnya, kami menyimpan dokumen dalam memori ke disk. Anda dapat memilih lokasi mana pun yang Anda memiliki izin menulis. + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +Setelah menjalankan program, buka `ShapeValidated.pdf`—Anda akan melihat satu halaman dengan persegi panjang berborder rapi yang terletak kira‑kira di tengah. + +--- + +## Hasil yang Diharapkan + +Saat Anda membuka PDF yang dihasilkan, Anda akan melihat: + +- Satu halaman berukuran A4. +- Sebuah persegi panjang yang sudut kiri‑bawahnya mulai pada (50 pt, 50 pt) dan sudut kanan‑atasnya berakhir pada (600 pt, 800 pt). +- Border **tebal 2‑point** mengelilingi persegi panjang. + +Jika konsol mencetak “PDF created successfully!”, Anda tahu kode berhasil dijalankan tanpa melanggar pemeriksaan batas. + +![Diagram yang menunjukkan cara membuat dokumen PDF dengan Aspose.PDF](https://example.com/diagram-create-pdf.png "Buat Dokumen PDF – gambaran visual") + +*Teks alt gambar mencakup kata kunci utama untuk memenuhi persyaratan SEO.* + +--- + +## Pertanyaan Umum & Kasus Tepi + +### Bagaimana jika saya membutuhkan ukuran halaman yang berbeda? + +Ganti halaman default dengan ukuran khusus: + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### Bagaimana cara mengubah warna border? + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### Bisakah saya menambahkan beberapa bentuk pada halaman yang sama? + +Tentu saja. Cukup ulangi blok **add shape pdf** dengan `RectangleShape` baru (atau subclass `Shape` lainnya) dan sesuaikan koordinat `Rect` sesuai kebutuhan. + +### Bagaimana jika persegi panjang melebihi batas halaman? + +Pemanggilan `IsShapeWithinBounds` akan mengembalikan `false`. Dalam kode produksi Anda mungkin ingin mengubah ukuran bentuk secara otomatis: + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +--- + +## Ringkasan + +Kami telah menelusuri seluruh siklus hidup **membuat dokumen PDF** dengan Aspose.PDF: + +1. Inisialisasi `Document`. +2. **Add a page PDF** menggunakan `Pages.Add()`. +3. **Draw a rectangle PDF** melalui `RectangleShape`. +4. **Add shape PDF** hanya setelah memastikan ia tetap berada di dalam halaman. +5. Kendalikan **ketebalan border persegi panjang** dengan `BorderInfo`. +6. Simpan file. + +Itulah seluruh alur kerja dalam kurang dari 60 baris kode. + +--- + +## Apa Selanjutnya? + +- **Add text**: Gunakan `TextFragment` untuk menempatkan judul atau label di dalam persegi panjang. +- **Insert images**: Kelas `Image` memungkinkan Anda menyisipkan logo atau diagram. +- **Create tables**: Sempurna untuk faktur atau laporan data. +- **Apply security**: Lindungi PDF dengan password jika berisi data sensitif. + +Setiap topik tersebut dibangun di atas dasar yang dibahas di sini, sehingga Anda berada pada posisi yang tepat untuk menjelajahi skenario pembuatan PDF yang lebih maju. + +### Terus Bereksperimen + +Jangan berhenti pada satu persegi panjang—cobalah berbagai bentuk, warna, dan gaya garis. API Aspose.PDF sangat lengkap, dan semakin Anda bereksperimen, semakin nyaman Anda menggunakannya. Jika Anda mengalami kendala, dokumentasi resmi Aspose adalah pendamping yang solid, tetapi ingat bahwa kode di atas adalah solusi lengkap yang siap disalin‑tempel dan dapat dijalankan hari ini. + +Selamat coding, semoga PDF Anda selalu tampil persis seperti yang Anda bayangkan! + +{{< /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 f8af05fce..823d47034 100644 --- a/pdf/indonesian/net/document-manipulation/_index.md +++ b/pdf/indonesian/net/document-manipulation/_index.md @@ -207,7 +207,7 @@ Pelajari cara memangkas spasi kosong dari dokumen PDF secara efisien menggunakan Pelajari cara memperbarui tautan dalam file PDF secara terprogram menggunakan Aspose.PDF for .NET. Otomatiskan pembaruan tautan secara efisien dengan panduan langkah demi langkah ini. ### [Cara Memperbarui Warna Teks Tautan PDF Menggunakan Aspose.PDF .NET: Panduan Lengkap](./update-pdf-link-text-color-aspose-net/) -Pelajari cara mengubah warna teks tautan dalam PDF dengan mudah menggunakan Aspose.PDF untuk .NET. Panduan lengkap ini mencakup kiat pemasangan, penerapan, dan pengoptimalan. +Pelajari cara mengubah warna teks tautan dalam PDF dengan mudah menggunakan Aspose.PDF .NET. Panduan lengkap ini mencakup kiat pemasangan, penerapan, dan pengoptimalan. ### [Memasukkan Halaman ke dalam PDF Menggunakan Aspose.PDF untuk .NET: Panduan Lengkap untuk Manipulasi Dokumen](./insert-pages-pdf-aspose-dotnet-guide/) Pelajari cara memasukkan halaman ke dalam PDF menggunakan Aspose.PDF untuk .NET. Panduan langkah demi langkah ini mencakup semuanya mulai dari penyiapan hingga penerapan, cocok untuk pengembang C#. @@ -306,11 +306,14 @@ Pelajari cara membagi file PDF menjadi beberapa halaman menggunakan Aspose.PDF u Pelajari cara membagi halaman PDF menjadi beberapa file terpisah menggunakan Aspose.PDF untuk .NET. Panduan lengkap ini mencakup kiat penyiapan, penerapan, dan pengoptimalan. ### [Membagi dan Membuat File PDF Menggunakan Aspose.PDF .NET | Panduan Manipulasi Dokumen](./split-create-pdf-aspose-pdf-net/) -Pelajari cara membagi PDF multi-halaman dan membuat file PDF baru menggunakan Aspose.PDF untuk .NET. Ikuti panduan lengkap ini dengan contoh kode. +Pelajari cara membagi PDF multi-halaman dan membuat file PDF baru menggunakan Aspose.PDF .NET. Ikuti panduan lengkap ini dengan contoh kode. ### [Panduan Lengkap untuk Manipulasi PDF dengan Aspose.PDF .NET: Memuat, Menyimpan & Mengganti Teks Secara Efisien](./master-pdf-manipulation-aspose-pdf-net/) Pelajari cara menguasai manipulasi PDF menggunakan Aspose.PDF untuk .NET. Panduan ini mencakup pemuatan, penyimpanan, dan penggantian teks dalam PDF, ideal bagi pengembang yang menginginkan efisiensi. +### [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. + ## Sumber Daya Tambahan - [Dokumentasi Aspose.PDF untuk Net](https://docs.aspose.com/pdf/net/) diff --git a/pdf/indonesian/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/indonesian/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..9b524d91a --- /dev/null +++ b/pdf/indonesian/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,250 @@ +--- +category: general +date: 2026-03-06 +description: Pelajari cara menyunting PDF menggunakan Aspose PDF di C#. Panduan langkah + demi langkah ini menunjukkan cara memuat dokumen PDF di C#, mengakses halaman PDF + pertama, dan menghapus gambar dari PDF. +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: id +og_description: Cara menyunting PDF dengan cepat menggunakan Aspose PDF di C#. Muat + dokumen PDF, akses halaman PDF pertama, dan hapus gambar dari PDF hanya dengan beberapa + baris kode. +og_title: Cara Menyensor PDF di C# – Tutorial PDF Aspose +tags: +- Aspose PDF +- C# +- PDF Redaction +title: Cara Menyensor PDF di C# dengan Aspose PDF – Panduan Lengkap +url: /id/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara Menyensor PDF di C# dengan Aspose PDF – Panduan Lengkap + +Pernah bertanya‑tanya **cara menyensor PDF** tanpa harus berkeringat? Mungkin Anda menerima kontrak yang menyembunyikan logo rahasia, atau laporan yang masih menampilkan gambar placeholder yang perlu dihapus. Pada saat‑saat seperti itu Anda pasti menginginkan cara programatis yang dapat diandalkan untuk menghilangkan konten tersebut—tanpa harus mengutak‑atik Acrobat secara manual. + +Dalam tutorial ini kita akan membahas solusi singkat, end‑to‑end yang **memuat dokumen PDF C#**, **mengakses halaman PDF pertama**, dan kemudian **menghapus gambar dari PDF** menggunakan pustaka **Aspose PDF** yang kuat. Pada akhir tutorial Anda akan memiliki PDF yang sudah disensor sepenuhnya siap didistribusikan, dan Anda akan memahami mengapa setiap baris kode penting. + +> **Pro tip:** Aspose PDF bekerja dengan .NET Framework 4.6+ dan .NET Core 3.1+, jadi Anda terlindungi baik di Windows, Linux, maupun macOS. + +--- + +![how to redact pdf example](redact-pdf-before-after.png){alt="how to redact pdf example"} + +## Apa yang Anda Butuhkan + +- **Aspose.PDF for .NET** (paket NuGet terbaru) +- Lingkungan pengembangan **C#** (Visual Studio, Rider, atau VS Code) +- Contoh PDF yang berisi sumber gambar yang ingin Anda hapus (kami sebut `Sensitive.pdf`) + +Tidak ada alat pihak ketiga tambahan, tidak ada OCR, hanya kode murni. + +--- + +## Langkah 1: Memuat Dokumen PDF C# – Langkah Pertama + +Sebelum Anda dapat menyensor apa pun, Anda harus memuat file ke memori. Kelas `Document` adalah titik masuk untuk setiap operasi Aspose PDF. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**Mengapa ini penting:** +`Document` mem-parsing seluruh struktur PDF, membangun model objek yang memungkinkan Anda memanipulasi halaman, sumber daya, dan anotasi. Jika file tidak dapat dimuat (path salah, PDF rusak), sebuah exception akan langsung dilempar—sehingga Anda tahu lebih awal bahwa ada yang tidak beres. + +### Kesalahan Umum + +> *“Saya mendapatkan `FileNotFoundException` padahal filenya ada.”* +> Pastikan path bersifat absolut atau direktori kerja proyek Anda cocok dengan lokasi `Sensitive.pdf`. Menggunakan `Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")` dapat membantu menghindari masalah path relatif. + +--- + +## Langkah 2: Mengakses Halaman PDF Pertama – Tempat Gambar Berada + +Gambar disimpan sebagai sumber daya per‑halaman. Pada banyak PDF sederhana halaman pertama adalah penyebabnya, jadi mari kita ambil halaman tersebut. + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**Mengapa ini penting:** +Aspose PDF menggunakan indeks berbasis 1 untuk halaman, yang agak tidak biasa dibandingkan kebanyakan koleksi .NET. Mengakses halaman yang salah dapat berarti Anda menyensor konten yang salah—atau lebih buruk, membiarkan gambar sensitif tetap ada. + +### Pertimbangan Kasus Tepi + +Jika dokumen Anda tidak memiliki halaman (PDF kosong), mencoba `pdfDocument.Pages[1]` akan melempar `IndexOutOfRangeException`. Sebuah guard sederhana dapat menyelamatkan Anda: + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +--- + +## Langkah 3: Menghapus Gambar dari PDF – Menyensor Sumber Daya + +Aspose PDF memungkinkan Anda menghapus sumber daya berdasarkan nama. Kebanyakan gambar dinamai `Im1`, `Im2`, dll., tetapi Anda dapat memeriksa `firstPage.Resources.Images` untuk memastikan. + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**Mengapa ini penting:** +`RedactResource` menghapus gambar *dan* semua referensi ke gambar tersebut pada halaman, memastikan area kosong terisi dengan area kosong alih‑alih tautan yang rusak. Ini adalah cara bersih dan standar PDF untuk menghapus konten. + +### Cara Menemukan Nama Gambar yang Tepat + +Jika Anda tidak yakin apakah gambar disebut `"Im1"`: + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +Jalankan potongan kode ini, periksa output konsol, dan ganti `"Im1"` dengan kunci aktual yang Anda lihat. + +--- + +## Langkah 4: Menyimpan PDF yang Telah Disensor – Menyelesaikan Pekerjaan + +Setelah gambar yang tidak diinginkan hilang, tulis perubahan kembali ke disk. + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**Mengapa ini penting:** +Menyimpan ke **file baru** menjaga file asli tetap tidak tersentuh—sebuah jaring pengaman bila Anda perlu mengembalikan perubahan. Jika Anda harus menimpa, cukup arahkan metode `Save` ke path asli, tetapi sadarilah bahwa operasi ini tidak dapat dibatalkan. + +### Memverifikasi Hasil + +Buka `Redacted.pdf` di penampil PDF apa pun. Tempat gambar seharusnya muncul kosong, dan sisanya dokumen harus tampak identik dengan aslinya. Jika tata letak halaman tampak bergeser, periksa kembali bahwa Anda hanya menghapus sumber daya yang dimaksud dan bukan XObject yang dibagikan. + +--- + +## Contoh Kerja Lengkap + +Menggabungkan semuanya, berikut program lengkap yang siap dijalankan: + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**Output yang diharapkan** (di konsol): + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +Saat Anda membuka `Redacted.pdf`, gambar yang sebelumnya bernama `Im1` akan hilang, meninggalkan halaman yang bersih. + +--- + +## Pertanyaan yang Sering Diajukan + +### Apakah ini bekerja dengan PDF yang terenkripsi? + +Jika PDF sumber dilindungi password, berikan password ke konstruktor `Document`: + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### Bagaimana jika gambar muncul di beberapa halaman? + +Loop melalui setiap halaman dan panggil `RedactResource` pada nama gambar yang sama (atau temukan nama per halaman). Contoh: + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### Bisakah saya menyensor teks dengan cara yang sama? + +Ya—gunakan `page.Contents.RedactText("confidential")` atau manfaatkan kelas `Redactor` untuk pola yang lebih kompleks. Itu merupakan tutorial tersendiri, tetapi prinsipnya mirip dengan yang kita lakukan untuk gambar. + +--- + +## Kesimpulan – Apa yang Telah Kita Capai + +Kita telah menjawab **cara menyensor PDF** secara programatis dengan: + +1. **Memuat dokumen PDF C#** menggunakan Aspose PDF. +2. **Mengakses halaman PDF pertama** untuk menemukan sumber daya target. +3. **Menghapus gambar dari PDF** melalui `RedactResource`. +4. **Menyimpan** versi bersih dengan aman. + +Pendekatan ini cepat, dapat diulang, dan cocok untuk pekerjaan batch—ideal untuk pipeline kepatuhan atau pembuatan laporan otomatis. + +Jika Anda ingin melangkah lebih jauh, pertimbangkan mengeksplorasi: + +- **Penyensoran batch** untuk seluruh folder PDF. +- **Menyensor teks** dengan pola regex menggunakan `Redactor`. +- **Menyisipkan watermark** setelah penyensoran untuk menandakan “sanitized”. + +Cobalah, sesuaikan logika nama gambar untuk file Anda sendiri, + +{{< /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/performance-optimization/_index.md b/pdf/indonesian/net/performance-optimization/_index.md index 425831488..193ad4ef5 100644 --- a/pdf/indonesian/net/performance-optimization/_index.md +++ b/pdf/indonesian/net/performance-optimization/_index.md @@ -50,6 +50,9 @@ Kuasai seni mengonversi file SVG ke PDF dengan presisi dan efisiensi menggunakan ### [Cara Menghapus Font yang Disematkan di PDF Menggunakan Aspose.PDF untuk .NET: Mengurangi Ukuran File dan Meningkatkan Performa](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) Pelajari cara menghapus font dari file PDF Anda menggunakan Aspose.PDF for .NET. Optimalkan kinerja PDF, kurangi ukuran file, dan tingkatkan waktu pemuatan dengan panduan langkah demi langkah ini. +### [Cara Mengompres PDF dengan Aspose.PDF – Panduan Cepat](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) +Panduan singkat untuk mengompres file PDF menggunakan Aspose.PDF, meningkatkan kecepatan pemuatan dan mengurangi ukuran file secara efisien. + ## Sumber Daya Tambahan - [Dokumentasi Aspose.PDF untuk Net](https://docs.aspose.com/pdf/net/) diff --git a/pdf/indonesian/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/indonesian/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..a853ae67a --- /dev/null +++ b/pdf/indonesian/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,205 @@ +--- +category: general +date: 2026-03-06 +description: Pelajari cara mengompres PDF secara instan menggunakan Aspose.PDF. Panduan + ini menunjukkan cara mengurangi ukuran file PDF dengan kompresi PDF tanpa kehilangan + kualitas. +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: id +og_description: Cara mengompres PDF menggunakan Aspose.Pdf? Ikuti tutorial langkah + demi langkah ini untuk mengurangi ukuran file PDF, mencapai kompresi PDF tanpa kehilangan + kualitas, dan menyimpan file PDF yang dioptimalkan. +og_title: cara mengompres pdf dengan Aspose.Pdf – panduan cepat +tags: +- pdf +- aspnet +- csharp +title: Cara mengompres PDF dengan Aspose.Pdf – Panduan Cepat +url: /id/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# cara mengompres pdf dengan Aspose.Pdf – panduan singkat + +Pernah bertanya-tanya **cara mengompres pdf** tanpa mengubahnya menjadi berantakan kabur? Anda tidak sendirian. Kebanyakan pengembang menemui kebuntuan ketika harus **mengurangi ukuran file pdf** untuk lampiran email, unggahan web, atau batas penyimpanan, namun mereka takut kehilangan kualitas gambar. + +Dalam tutorial ini kami akan menelusuri contoh lengkap yang siap dijalankan yang menunjukkan secara tepat **cara mengompres pdf** menggunakan optimizer bawaan Aspose.Pdf. Pada akhir tutorial Anda akan tahu cara **mengecilkan ukuran file pdf**, menjaga gambar tetap tajam dengan **kompresi pdf lossless**, dan akhirnya **menyimpan pdf yang dioptimalkan** yang dapat dibuka dengan baik di semua penampil. + +## Apa yang akan Anda pelajari + +- Memuat PDF berat (misalnya, yang berisi gambar resolusi tinggi) ke memori. +- Menerapkan optimizer Aspose.Pdf dengan pengaturan lossless default. +- Menyimpan hasilnya sebagai file baru yang lebih kecil. +- Tips untuk menyesuaikan kompresi jika Anda memerlukan pengurangan yang lebih besar. + +Tanpa alat eksternal, tanpa trik baris perintah misterius—hanya kode C# bersih dan penjelasan yang jelas. + +## Prasyarat + +Sebelum kita mulai, pastikan Anda memiliki: + +| Persyaratan | Mengapa penting | +|-------------|-----------------| +| .NET 6.0 atau lebih baru (atau .NET Framework 4.6+) | Aspose.Pdf mendukung keduanya; runtime yang lebih baru memberikan kinerja yang lebih baik. | +| Paket NuGet Aspose.Pdf untuk .NET (`Aspose.Pdf`) | Kelas `Document` berada di sini. | +| PDF dengan gambar besar (misalnya `HeavyImages.pdf`) | Memberikan sesuatu yang konkret untuk diperkecil. | +| Visual Studio, Rider, atau editor C# apa pun yang Anda sukai | Kenyamanan adalah kunci—pilih yang terasa alami. | + +> **Pro tip:** Jika Anda menggunakan pipeline CI/CD, tambahkan referensi NuGet di file `.csproj` Anda sehingga proses build tidak pernah melupakannya. + +```xml + + + +``` + +## Langkah 1: Muat PDF yang ingin Anda kompres + +Pertama kita memerlukan objek `Document` yang menunjuk ke file sumber. Anggap saja ini seperti membuka buku sebelum Anda mulai mengedit babnya. + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*Mengapa ini penting:* Memuat file memberi Aspose.Pdf kesempatan untuk membaca semua sumber daya yang disematkan (gambar, font, dll.). Tanpa langkah ini tidak ada yang dapat **mengecilkan ukuran file pdf**. + +## Langkah 2: Terapkan kompresi PDF lossless + +Aspose.Pdf dilengkapi dengan metode `Optimize` yang, secara default, menjalankan rutinitas **kompresi pdf lossless**. Metode ini menghapus objek yang berlebihan, mengompres ulang gambar dengan kualitas visual yang sama, dan menghapus font yang tidak terpakai. + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*Mengapa ini penting:* Optimizer default dirancang untuk **mengecilkan ukuran file pdf** sambil mempertahankan setiap piksel. Jika kemudian Anda memutuskan dapat menerima sedikit penurunan kualitas, `OptimizationOptions` yang dikomentari memungkinkan Anda menukar beberapa kilobyte ekstra untuk kecepatan. + +## Langkah 3: Simpan PDF yang dioptimalkan + +Setelah dokumen menjadi lebih ramping, kita menuliskannya ke file baru. Menjaga file asli tetap tidak tersentuh adalah kebiasaan yang baik, terutama saat Anda menguji pengaturan yang berbeda. + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +Setelah penyimpanan, bandingkan ukuran file: + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +Anda seharusnya melihat penurunan yang signifikan—biasanya **30‑70 %** tergantung berapa banyak gambar resolusi tinggi yang ada di sumber. + +![ilustrasi cara mengompres pdf](image.png "cara mengompres pdf") + +*Teks alt gambar:* cara mengompres pdf – sebelum dan sesudah optimasi + +## Lanjutan: Menyesuaikan kompresi untuk skenario tertentu + +Meskipun optimizer default bagus untuk kebanyakan kasus, terkadang Anda perlu **mengecilkan ukuran file pdf** lebih jauh: + +| Skenario | Pengaturan yang disesuaikan | Efek | +|----------|----------------------------|------| +| PDF dengan banyak gambar raster | `CompressImages = true` + `ImageQuality` lebih rendah (mis., 70) | Mengurangi jumlah byte gambar, sedikit kehilangan visual. | +| PDF yang berisi font duplikat | `RemoveUnusedObjects = true` | Menghapus font yang tidak direferensikan. | +| PDF dengan metadata besar | `RemoveMetadata = true` | Menghilangkan blok XML/metadata tersembunyi. | + +Anda dapat menggabungkan pengaturan ini dalam objek `OptimizationOptions` dan meneruskannya ke `pdfDoc.Optimize(options)`. + +## Pertanyaan umum & kasus tepi + +**Bagaimana jika PDF sudah dioptimalkan?** +Aspose.Pdf tetap akan memindai dokumen, tetapi perubahan ukuran akan minimal. Menjalankan optimizer pada file yang sudah ramping aman; tidak akan merusak apa pun. + +**Apakah saya dapat mengompres PDF yang terenkripsi?** +Ya, tetapi Anda harus menyediakan kata sandi sebelum memanggil `Optimize`. Contoh: + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**Bagaimana dengan PDF yang berisi grafik vektor?** +Objek vektor sudah ringan, sehingga optimizer fokus pada gambar raster dan metadata. Harapkan peningkatan yang modest untuk file yang hanya berisi vektor. + +## Contoh lengkap yang dapat dijalankan + +Berikut adalah aplikasi konsol mandiri yang dapat Anda salin‑tempel ke dalam proyek `.csproj` baru. Ia mendemonstrasikan semua yang dibahas—dari pemuatan hingga verifikasi. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +Jalankan program, buka `Optimized.pdf` di penampil apa pun, dan Anda akan melihat tata letak halaman yang sama, gambar yang sama tajamnya, tetapi file yang lebih ramping. Itulah keajaiban **kompresi pdf lossless**. + +## Kesimpulan + +Kami telah membahas **cara mengompres pdf** menggunakan optimizer bawaan Aspose.Pdf, memperlihatkan alur kerja praktis **mengurangi ukuran file pdf**, dan menjelaskan alasan di balik setiap langkah. Dengan mengikuti pola tiga langkah—muat, optimalkan, simpan—Anda dapat **mengecilkan ukuran file pdf** secara langsung, menjaga gambar tetap utuh dengan **kompresi pdf lossless**, dan dengan percaya diri **menyimpan pdf yang dioptimalkan** untuk konsumsi selanjutnya. + +Siap untuk tantangan berikutnya? Coba rangkaikan optimizer ini dengan skrip batch untuk memproses seluruh folder, atau bereksperimen dengan `OptimizationOptions` opsional untuk mengurangi beberapa kilobyte terakhir. Prinsip yang sama berlaku apakah Anda bekerja pada alat desktop, API web, atau pekerjaan batch sisi server. + +Punya pertanyaan lebih lanjut tentang penanganan PDF, keunikan Aspose.Pdf, atau I/O file .NET? Tinggalkan komentar di bawah, dan mari teruskan diskusi. Selamat mengompres! + +{{< /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/programming-with-security-and-signatures/_index.md b/pdf/indonesian/net/programming-with-security-and-signatures/_index.md index 3def9887d..37587411e 100644 --- a/pdf/indonesian/net/programming-with-security-and-signatures/_index.md +++ b/pdf/indonesian/net/programming-with-security-and-signatures/_index.md @@ -32,8 +32,10 @@ Bahasa Indonesia: --- | --- Bahasa Indonesia: | [Apakah Dilindungi Kata Sandi?](./is-password-protected/) Pelajari cara memeriksa apakah PDF dilindungi kata sandi menggunakan Aspose.PDF untuk .NET dalam panduan langkah demi langkah yang komprehensif ini. Bahasa Indonesia: | [Mengatur Hak Istimewa Dalam File PDF](./set-privileges/) | Pelajari cara mengatur hak akses PDF menggunakan Aspose.PDF untuk .NET dengan panduan langkah demi langkah ini. Amankan dokumen Anda secara efektif. Bahasa Indonesia: | [Tanda Tangan Dengan Kartu Pintar Menggunakan Tanda Tangan File Pdf](./sign-with-smart-card-using-pdf-file-signature/) | Pelajari cara menandatangani file PDF menggunakan kartu pintar dengan Aspose.PDF untuk .NET. Ikuti panduan langkah demi langkah ini untuk mendapatkan tanda tangan digital yang aman. Bahasa Indonesia: -| [Tanda Tangan Dengan Kartu Pintar Menggunakan Kolom Tanda Tangan](./sign-with-smart-card-using-signature-field/) | Pelajari cara menandatangani PDF dengan aman menggunakan kartu pintar dengan Aspose.PDF untuk .NET. Ikuti panduan langkah demi langkah kami untuk penerapan yang mudah. | +| [Tanda Tangan Dengan Kartu Pintar Menggunakan Kolom Tanda Tangan](./sign-with-smart-card-using-signature-field/) | Pelajari cara menandatangani PDF dengan aman menggunakan kartu pintar dengan Aspose.PDF untuk .NET. Panduan langkah demi langkah kami untuk penerapan yang mudah. | | [Periksa Tanda Tangan PDF di C# – Cara Membaca File PDF yang Ditandatangani](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) | Pelajari cara memeriksa tanda tangan PDF dan membaca file PDF yang ditandatangani menggunakan Aspose.PDF untuk .NET. | +| [Cara Memverifikasi Tanda Tangan di PDF menggunakan C# – Panduan Lengkap Aspose](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) | Pelajari cara memverifikasi tanda tangan PDF menggunakan C# dengan panduan lengkap Aspose. | +| [Tambahkan Tanda Tangan Digital PDF di C# – Panduan Lengkap Langkah demi Langkah](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) | Pelajari cara menambahkan tanda tangan digital ke PDF menggunakan C# dengan panduan lengkap langkah demi langkah dari Aspose.PDF. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/indonesian/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/indonesian/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..da20ebd6f --- /dev/null +++ b/pdf/indonesian/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,261 @@ +--- +category: general +date: 2026-03-06 +description: Tambahkan tanda tangan digital pada PDF menggunakan Aspose.PDF. Pelajari + cara membuat tanda tangan PKCS7 terpisah dan menandatangani PDF menggunakan PFX + dengan callback khusus. +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: id +og_description: Tambahkan tanda tangan digital pada PDF dengan cepat. Panduan ini + menunjukkan cara membuat tanda tangan terpisah PKCS7 dan menandatangani PDF menggunakan + PFX di C#. +og_title: Tambahkan Tanda Tangan Digital pada PDF di C# – Tutorial Pemrograman Lengkap +tags: +- Aspose.PDF +- C# +- Digital Signature +title: Menambahkan Tanda Tangan Digital pada PDF di C# – Panduan Lengkap Langkah demi + Langkah +url: /id/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tambahkan Tanda Tangan Digital PDF – Panduan Lengkap Langkah‑per‑Langkah + +Pernah membutuhkan untuk **add digital signature pdf** file tetapi tidak yakin harus mulai dari mana? Anda tidak sendirian; banyak pengembang mengalami hal yang sama ketika dokumen menuntut tanda tangan yang sah secara hukum dan basis kode hanya tahu cara menghasilkan PDF biasa. + +Dalam tutorial ini kami akan membimbing Anda melalui solusi praktis yang memungkinkan Anda **add digital signature pdf** dokumen menggunakan Aspose.PDF untuk .NET, membuat tanda tangan PKCS#7 terpisah, dan menandatangani PDF dengan sertifikat PFX—semua dalam C# murni. Pada akhir tutorial Anda akan memiliki potongan kode siap‑jalankan, memahami “mengapa” di balik setiap pemanggilan, dan tahu cara menyesuaikan pendekatan untuk kasus‑kasus khusus. + +## Apa yang Akan Anda Pelajari + +- Cara memuat PDF yang belum ditandatangani dan menyiapkannya untuk penandatanganan. +- Mekanisme **create pkcs7 detached signature** dan mengapa Anda mungkin lebih memilih tanda tangan terpisah dibandingkan yang tersemat. +- Langkah‑langkah tepat untuk **sign pdf using pfx** dengan callback khusus, memberi Anda kontrol penuh atas proses kriptografi. +- Tips untuk memecahkan masalah umum (sertifikat hilang, algoritma hash salah, dll.). + +### Prasyarat + +| Persyaratan | Alasan | +|-------------|--------| +| .NET 6.0 atau lebih baru | Fitur bahasa modern dan penanganan memori yang lebih baik. | +| Aspose.PDF untuk .NET (paket NuGet) | Menyediakan `PdfFileSignature`, `PKCS7Detached`, dan utilitas PDF lainnya. | +| File PFX yang valid (`.pfx`) dengan kunci pribadi | Diperlukan untuk langkah **sign pdf using pfx**. | +| Pengetahuan dasar C# | Kodenya sederhana, tetapi memahami pernyataan `using` membantu. | + +> **Pro tip:** Simpan password PFX Anda di luar kontrol sumber—gunakan variabel lingkungan atau Azure Key Vault untuk produksi. + +--- + +## Cara Menambahkan Tanda Tangan Digital PDF dengan Aspose.PDF + +Di bawah ini kami membagi proses menjadi lima langkah yang mudah dipahami. Setiap langkah menyertakan potongan kode, penjelasan *mengapa* penting, dan pemeriksaan cepat. + +![Screenshot PDF yang ditandatangani dalam penampil, menunjukkan bidang tanda tangan yang terlihat](/images/add-digital-signature-pdf.png "contoh add digital signature pdf") + +### Langkah 1 – Muat Dokumen PDF yang Tidak Ditandatangani + +Pertama kita memerlukan objek `Document` yang mewakili PDF yang ingin Anda tandatangani. Menggunakan `using var` memastikan pegangan file dilepaskan secara otomatis. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**Mengapa?** +Aspose memperlakukan PDF sebagai grafik objek; memuatnya memberi Anda akses ke halaman, anotasi, dan aliran byte internal yang nantinya akan di‑hash untuk tanda tangan. + +### Langkah 2 – Inisialisasi Pembantu PdfFileSignature + +`PdfFileSignature` adalah kelas yang sebenarnya menerapkan selubung kriptografi. Ia bekerja beriringan dengan `PKCS7Detached`. + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**Mengapa?** +Memisahkan penandatangan dari dokumen memungkinkan Anda menggunakan kembali instance `Document` yang sama untuk operasi lain (misalnya menambahkan watermark) sebelum menfinalisasi tanda tangan. + +### Langkah 3 – Buat Tanda Tangan PKCS#7 Terpisah (Create PKCS7 Detached Signature) + +**PKCS#7 detached signature** menyimpan hanya hash PDF, bukan PDF itu sendiri. Ini ideal untuk dokumen besar atau ketika Anda perlu menjaga file asli tetap tidak berubah. + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**Mengapa menggunakan callback khusus?** +Kadang‑kadang kunci penandatangan berada di HSM atau Azure Key Vault, dan Anda tidak dapat mengekstrak kunci pribadi secara langsung. Dengan menyediakan `CustomSignHash` Anda menyerahkan hash ke layanan yang memegang kunci, menjaga materi pribadi tetap aman. + +**Bagaimana jika Anda tidak memerlukan callback khusus?** +Anda dapat menghilangkan `CustomSignHash`; Aspose akan menggunakan kunci pribadi di dalam PFX secara otomatis. Namun, jalur khusus lebih fleksibel dan sesuai dengan persyaratan kepatuhan. + +### Langkah 4 – Terapkan Tanda Tangan pada Halaman Tertentu (Sign PDF Using PFX) + +Sekarang kita menempatkan bidang tanda tangan yang terlihat pada halaman. Persegi panjang menentukan lokasi dan ukuran (dalam poin). + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**Mengapa menentukan persegi panjang?** +Tanda tangan yang terlihat membantu pengguna akhir melihat bahwa dokumen telah ditandatangani. Jika Anda mengatur `isVisible` menjadi `false`, tanda tangan menjadi tidak terlihat—masih sah, tetapi lebih sulit ditemukan. + +**Kasus tepi:** Jika PDF tidak memiliki halaman (file kosong) pemanggilan ini akan melempar `ArgumentOutOfRangeException`. Selalu pastikan `pdfDocument.Pages.Count > 0` sebelum menandatangani. + +### Langkah 5 – Simpan PDF yang Ditandatangani + +Akhirnya, simpan dokumen yang telah ditandatangani ke disk. Anda juga dapat mengalirkannya langsung ke respons dalam ASP.NET Core. + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**Tips verifikasi:** Buka file hasil di Adobe Acrobat Reader. Panel tanda tangan harus menampilkan tanda centang hijau (asalkan sertifikat dipercaya pada mesin). + +--- + +## Contoh Kerja Lengkap + +Menggabungkan semuanya, berikut program konsol mandiri yang dapat Anda salin‑tempel dan jalankan (setelah menyesuaikan jalur dan password). + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**Output yang diharapkan:** Konsol mencetak “✅ PDF signed successfully!” dan file `CustomSigned.pdf` muncul di folder yang sama. Saat dibuka, Anda akan melihat widget tanda tangan pada koordinat (100,100)‑(300,200). + +--- + +## Pertanyaan yang Sering Diajukan & Kasus Tepi + +### Bagaimana jika PFX saya dilindungi dengan kartu pintar? + +Gunakan delegasi `CustomSignHash` untuk meneruskan hash ke driver kartu pintar. Driver akan mengembalikan byte tanda tangan, dan Aspose akan menyematkannya tanpa pernah mengekspos kunci pribadi. + +### Bisakah saya menandatangani beberapa halaman sekaligus? + +Ya. Panggil `pdfSigner.Sign` di dalam loop, sesuaikan `pageNumber` dan opsional persegi panjang untuk setiap halaman. Ingat bahwa setiap pemanggilan menambahkan objek tanda tangan terpisah; beberapa penampil mungkin menampilkannya secara individual. + +### Bagaimana cara mengubah algoritma hash? + +`PKCS7Detached` secara default menggunakan SHA‑256, tetapi Anda dapat mengatur properti `HashAlgorithm`: + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +Pastikan penyedia penandatangan Anda mendukung algoritma yang dipilih. + +### Bagaimana jika rantai sertifikat tidak dipercaya pada mesin klien? + +Sertakan seluruh rantai dalam PFX, atau distribusikan sertifikat root ke penyimpanan kepercayaan pengguna akhir. Jika tidak, Acrobat akan melaporkan “Signature is unknown”. + +### Apakah tanda tangan terpisah kompatibel dengan PDF/A‑3? + +PDF/A‑3 memerlukan tanda tangan yang tersemat, sehingga PKCS#7 terpisah mungkin tidak sesuai. Dalam kasus tersebut, hilangkan delegasi `CustomSignHash` dan biarkan Aspose menangani penandatanganan secara internal, yang menghasilkan tanda tangan tersemat. + +--- + +## Praktik Terbaik untuk Produksi + +1. **Jangan pernah menuliskan password secara hard‑code.** Ambil dari variabel lingkungan atau manajer rahasia. +2. **Validasi PDF sebelum menandatangani.** File rusak menyebabkan `PdfFileSignatureException`. +3. **Catat algoritma hash dan sidik jari sertifikat** untuk jejak audit. +4. **Uji dengan beberapa penampil PDF** (Adobe Reader, Foxit, Chrome) untuk memastikan tanda tangan muncul sebagaimana mestinya. +5. **Pertimbangkan timestamping** dengan menambahkan permintaan TSA (Time‑Stamp Authority), yang semakin memperkuat kedudukan hukum tanda tangan. + +--- + +## Kesimpulan + +Kami baru saja menunjukkan cara **add digital signature pdf** menggunakan Aspose.PDF, membuat **PKCS#7 detached signature**, dan **sign pdf using pfx** dengan callback khusus. Contoh lengkap dapat dijalankan langsung, dan penjelasannya memberi Anda kepercayaan untuk menyesuaikan proses bagi HSM, layanan timestamp, atau kepatuhan PDF/A. + +Selanjutnya, Anda dapat menjelajahi **signing multiple documents in batch**, mengintegrasikan **Azure Key Vault** untuk penyimpanan kunci yang aman, atau menambahkan **visual customization** pada tampilan tanda tangan. Semua topik tersebut dibangun langsung di atas fondasi yang telah kami letakkan di sini. + +Jika Anda telah mengikuti langkah‑langkahnya, kini Anda memiliki solusi kuat yang layak disitasi dan dapat dibagikan kepada rekan tim—atau bahkan dirujuk dalam jawaban asisten AI. Selamat menandatangani, dan jangan ragu meninggalkan komentar jika ada yang belum jelas! + +{{< /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/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/indonesian/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..c6cf97ed5 --- /dev/null +++ b/pdf/indonesian/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,202 @@ +--- +category: general +date: 2026-03-06 +description: Pelajari cara memverifikasi tanda tangan dalam PDF dengan Aspose PDF + di C#. Verifikasi tanda tangan PDF langkah demi langkah, validasi tanda tangan PDF, + dan tangani tanda tangan yang terkompromi. +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: id +og_description: Cara memverifikasi tanda tangan dalam PDF dengan Aspose PDF. Ikuti + panduan ini untuk melakukan verifikasi tanda tangan PDF, memvalidasi tanda tangan + PDF, dan mendeteksi tanda tangan yang telah dikompromikan dalam C#. +og_title: Cara Memverifikasi Tanda Tangan di PDF menggunakan C# – Panduan Lengkap + Aspose +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: Cara Memverifikasi Tanda Tangan dalam PDF menggunakan C# – Panduan Lengkap + Aspose +url: /id/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara Memverifikasi Tanda Tangan dalam PDF menggunakan C# – Panduan Lengkap Aspose + +Pernah bertanya-tanya **cara memverifikasi tanda tangan** dalam PDF tanpa membuat rambut rontok? Anda tidak sendirian. Banyak pengembang menemui kebuntuan ketika mereka membutuhkan **pdf signature verification** untuk kepatuhan atau audit, dan pendekatan “cukup percayakan pustaka” sering berbalik merugikan. + +Dalam tutorial ini kami akan membimbing Anda melalui solusi praktis end‑to‑end yang tidak hanya **validate pdf signature** tetapi juga memberi tahu apakah tanda tangan telah diubah. Kami akan menggunakan pustaka **Aspose PDF**, yang berarti kode ini bekerja pada .NET 6+, .NET Framework 4.6+ dan bahkan .NET Core. Pada akhir tutorial Anda akan memiliki potongan kode siap‑jalankan yang dapat ditempatkan di proyek C# mana pun. + +## Apa yang Anda Butuhkan + +- Paket NuGet **Aspose.Pdf** (versi terbaru pada saat penulisan – 23.12). +- Lingkungan pengembangan .NET (Visual Studio, Rider, atau VS Code). +- File PDF yang sudah ditandatangani (kami sebut `Signed.pdf`). +- Pengetahuan dasar C# – tidak perlu hal rumit, hanya pernyataan `using` biasa dan I/O `Console`. + +Itu saja. Tanpa layanan tambahan, tanpa file konfigurasi yang rumit. Siap? Mari kita mulai. + +![how to verify signature diagram](image.png "how to verify signature") + +## Langkah 1: Siapkan Proyek Anda untuk PDF Signature Verification + +Sebelum Anda dapat memanggil API Aspose apa pun, Anda harus mereferensikan pustaka tersebut. Buka terminal atau Package Manager Console Anda dan jalankan: + +```bash +dotnet add package Aspose.Pdf +``` + +Atau, jika Anda lebih suka UI, cari **Aspose.Pdf** di NuGet Package Manager dan instal. Langkah ini penting karena tanpa assembly **aspose pdf signature** Anda tidak akan dapat mengakses kelas `PdfFileSignature` nanti. + +> **Pro tip:** Target .NET 6 atau yang lebih tinggi untuk mendapatkan kinerja terbaik dan menghindari peringatan kompatibilitas lama. + +## Langkah 2: Muat Dokumen PDF + +Setelah paket terpasang, kita dapat memuat PDF yang ingin diperiksa. Kelas `Document` mewakili seluruh file dalam memori. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**Mengapa ini penting:** Memuat dokumen memberi kita akses ke struktur internalnya, termasuk bidang tanda tangan. Jika file hilang atau rusak, `Document` akan melempar pengecualian, yang dapat Anda tangkap untuk pengalaman pengguna yang lebih halus. + +## Langkah 3: Buat Objek Aspose PdfFileSignature + +Dengan dokumen di tangan, langkah selanjutnya adalah menginstansiasi `PdfFileSignature`. Kelas facade ini tahu cara membaca, memverifikasi, dan memanipulasi tanda tangan digital yang tertanam dalam PDF. + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**Penjelasan:** Konstruktor `PdfFileSignature` menerima `Document` yang telah dimuat. Secara internal ia mem-parsing kamus tanda tangan, sehingga metode seperti `VerifySignature` dan `IsSignatureCompromised` tersedia. + +## Langkah 4: Verifikasi Integritas Tanda Tangan + +Inti dari **pdf signature verification** adalah metode `VerifySignature`. Metode ini mengembalikan `true` jika hash kriptografis cocok dengan nilai yang disimpan dan rantai sertifikat dipercaya (asalkan Anda telah menyiapkan trust manager, yang kami lewati demi singkatnya). + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +Jika Anda memiliki beberapa tanda tangan, cukup ubah indeks (`0`, `1`, …). Metode ini memeriksa integritas dan kepercayaan sekaligus, itulah mengapa ia menjadi pilihan utama untuk kebanyakan skenario. + +## Langkah 5: Deteksi Tanda Tangan yang Kompromi + +Bahkan tanda tangan yang “valid” dapat dikompromi jika dokumen diubah setelah penandatanganan. Aspose menyediakan `IsSignatureCompromised` untuk mendeteksi kasus halus tersebut. + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**Kapan menggunakannya:** Misalnya sebuah PDF ditandatangani, lalu seorang pengguna menambahkan komentar atau mengubah halaman. Hash akan berbeda, dan `IsSignatureCompromised` akan mengembalikan `true` sementara `VerifySignature` mungkin masih `true` jika sertifikatnya sendiri baik. Memeriksa kedua flag memberi Anda gambaran lengkap. + +## Langkah 6: Interpretasikan Hasilnya + +Sekarang kita memiliki dua boolean: `isSignatureValid` dan `isSignatureCompromised`. Mari ubah menjadi output konsol yang ramah. + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### Output yang Diharapkan + +| Scenario | Console Output | +|---------------------------------------|--------------------------------| +| Valid and not compromised | `Signature OK` | +| Valid but compromised (document changed) | `Signature compromised!` | +| Invalid (certificate not trusted, hash mismatch) | `Signature verification failed` | + +Tabel tersebut membantu Anda dengan cepat memetakan hasil boolean ke pesan yang dapat dibaca manusia. + +## Contoh Lengkap yang Berfungsi + +Menggabungkan semuanya, berikut program lengkap yang siap dijalankan: + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +Salin, tempel, sesuaikan `pdfPath`, dan jalankan. Jika semuanya telah diatur dengan benar Anda akan melihat salah satu dari tiga pesan yang tercantum di atas. + +## Kesalahan Umum dan Tips untuk PDF Signature Verification + +| Issue | Why it Happens | How to Fix / Avoid | +|-------|----------------|--------------------| +| **Missing Aspose license** | Evaluasi gratis menambahkan watermark dan mungkin membatasi beberapa pemanggilan API. | Registrasikan lisensi (`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`). | +| **Multiple signatures but wrong index** | Anda mungkin memeriksa tanda tangan yang salah, menghasilkan negatif palsu. | Loop melalui `signatureVerifier.GetSignatureCount()` dan inspeksi masing‑masing. | +| **Certificate chain not trusted** | `VerifySignature` gagal jika root CA tidak ada di store yang dipercaya. | Tambahkan CA penandatangan ke Windows Trusted Root store atau konfigurasikan `CertificateValidator` khusus. | +| **File locked by another process** | Membuka PDF yang masih terbuka di tempat lain dapat menimbulkan `IOException`. | Gunakan `FileStream` dengan `FileShare.ReadWrite` atau salin ke file sementara terlebih dahulu. | +| **Incorrect PDF path** | Typo sederhana menghasilkan `FileNotFoundException`. | Validasi path dengan `File.Exists(pdfPath)` sebelum memuat. | + +### Kasus Pinggir yang Mungkin Anda Temui + +- **Detached signatures**: Beberapa PDF menyimpan tanda tangan secara eksternal. `PdfFileSignature` Aspose saat ini hanya mendukung tanda tangan yang tertanam. +- **Timestamped signatures**: Jika Anda perlu memverifikasi otoritas timestamp (TSA), Anda harus memanggil `VerifySignature` dengan objek `VerificationOptions` khusus—di luar cakupan panduan singkat ini tetapi penting untuk proyek dengan kepatuhan tinggi. + +## Langkah Selanjutnya – Memperluas Logika Validasi Anda + +Setelah menguasai dasar **how to verify signature**, Anda mungkin ingin: + +1. **Validate PDF signature** terhadap daftar sertifikat tepercaya (misalnya PKI perusahaan). +2. **Export signature details** (nama penandatangan, waktu penandatanganan, thumbprint sertifikat) menggunakan `GetSignatureInfo`. +3. **Batch‑process multiple PDFs** dalam sebuah folder, mencatat hasil ke CSV untuk keperluan audit. + +Semua ini merupakan ekstensi langsung dari kode yang baru saja kita bahas, dan tetap berada dalam ekosistem **aspose pdf signature** yang sama. + +--- + +**Singkatnya**, Anda kini tahu persis **how to verify signature** dalam PDF menggunakan C# dan Aspose, cara mendeteksi tanda tangan yang dikompromi, serta apa yang harus dilakukan ketika verifikasi gagal. Pendekatan ini kuat, bekerja dengan banyak tanda tangan, dan dapat diintegrasikan ke dalam pipeline pemrosesan dokumen yang lebih besar. + +Punya variasi skenario? Mungkin Anda perlu menandatangani PDF alih‑alih memverifikasinya, atau sedang berhadapan dengan PDF terenkripsi. Tinggalkan komentar, dan kami akan menjelajahi sudut tersebut bersama. Selamat coding! + +{{< /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/programming-with-stamps-and-watermarks/_index.md b/pdf/indonesian/net/programming-with-stamps-and-watermarks/_index.md index ca4b13737..983287da5 100644 --- a/pdf/indonesian/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/indonesian/net/programming-with-stamps-and-watermarks/_index.md @@ -37,8 +37,9 @@ Bahasa Indonesia: --- | --- Bahasa Indonesia: | [Nomor Halaman Di Header Footer Menggunakan Floating Box](./page-number-in-header-footer-using-floating-box/) | Tambahkan nomor halaman dengan mudah di header dan footer PDF Anda menggunakan Kotak Mengambang dengan Aspose.PDF untuk .NET dalam tutorial langkah demi langkah ini. Bahasa Indonesia: | [Stempel Nomor Halaman Dalam File PDF](./page-number-stamps/) Pelajari cara menambahkan stempel nomor halaman ke file PDF menggunakan Aspose.PDF untuk .NET melalui panduan kami yang mudah diikuti, lengkap dengan contoh kode. Bahasa Indonesia: | [Tabel Di Bagian Header Footer](./table-in-header-footer-section/) | Pelajari cara mudah menambahkan teks ke bagian bawah berkas PDF menggunakan Aspose.PDF for .NET. Panduan langkah demi langkah disertakan untuk integrasi yang lancar. Bahasa Indonesia: -| [Teks Di Footer File PDF](./text-in-footer/) | Pelajari cara menambahkan teks di footer file PDF dengan Aspose.PDF untuk .NET. Bahasa Indonesia: +| [Teks Di Footer File PDF](./text-in-footer/) | Pelajari cara menambahkan teks di footer file PDF dengan Aspose.PDF for .NET. Bahasa Indonesia: | [Teks Di Header File PDF](./text-in-header/) | Pelajari cara menambahkan tajuk teks ke PDF menggunakan Aspose.PDF for .NET dengan tutorial langkah demi langkah ini. Sempurnakan dokumen Anda secara efisien dan efektif. | +| [Buat Dokumen PDF dengan Penomoran Bates di C# – Panduan Lengkap](./create-pdf-document-with-bates-numbering-in-c-full-guide/) | Pelajari cara membuat dokumen PDF dengan penomoran Bates menggunakan Aspose.PDF for .NET dalam bahasa C# melalui panduan lengkap ini. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/indonesian/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/indonesian/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..50e1d5fef --- /dev/null +++ b/pdf/indonesian/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,184 @@ +--- +category: general +date: 2026-03-06 +description: Buat dokumen PDF dalam C# dan tambahkan nomor bates dengan mudah. Pelajari + cara menambahkan halaman kosong pada PDF, menempatkan stempel pada halaman, dan + menerapkan penomoran bates. +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: id +og_description: Buat dokumen PDF dalam C# dan tambahkan nomor bates. Panduan ini menunjukkan + cara menambahkan halaman kosong PDF, menempatkan stempel pada halaman, dan menerapkan + penomoran bates. +og_title: Buat Dokumen PDF dengan Penomoran Bates – Tutorial C# +tags: +- Aspose.Pdf +- C# +- PDF automation +title: Buat Dokumen PDF dengan Penomoran Bates di C# – Panduan Lengkap +url: /id/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Membuat Dokumen PDF dengan Penomoran Bates di C# + +Pernah perlu **membuat dokumen PDF** di C# dan bertanya‑tanya bagaimana menambahkan nomor Bates tanpa membuat rambut rontok? Anda tidak sendirian—firma hukum, pengadilan, dan bahkan beberapa tim kepatuhan korporat menghadapi teka‑teki ini setiap hari. Kabar baik? Dengan beberapa baris kode Aspose.Pdf Anda dapat membuat PDF baru, menambahkan halaman kosong, dan menempelkan nomor Bates yang tepat dalam satu alur yang mulus. + +Dalam tutorial ini kita akan melewati seluruh proses: mulai dari menyiapkan proyek, menambahkan PDF halaman kosong, mempelajari **cara menambahkan penomoran Bates**, dan akhirnya **menempatkan stempel pada halaman** serta menyimpan hasilnya. Pada akhir tutorial Anda akan memiliki potongan kode siap pakai yang dapat disisipkan ke aplikasi .NET mana pun. Tanpa referensi samar, hanya contoh lengkap yang dapat dijalankan. + +## Apa yang Anda Butuhkan + +- **.NET 6+** (atau .NET Framework 4.6+ – Aspose.Pdf bekerja dengan keduanya) +- Paket NuGet **Aspose.Pdf for .NET** (`Install-Package Aspose.Pdf`) +- IDE yang memadai (Visual Studio, Rider, atau VS Code dengan ekstensi C#) + +Itu saja. Tanpa DLL tambahan, tanpa layanan eksternal. Mari kita mulai. + +## Langkah 1: Membuat Dokumen PDF – Penyiapan Awal + +Hal pertama yang harus dilakukan, kita membutuhkan objek `Document` yang baru. Anggap saja ini sebagai kanvas kosong tempat semua hal lainnya akan berada. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **Mengapa ini penting:** Kelas `Document` adalah titik masuk untuk setiap operasi Aspose. Menginstansiasinya memberi Anda akses ke koleksi `Pages`, metadata, dan pengaturan keamanan—semua blok bangunan untuk PDF profesional. + +## Langkah 2: Menambahkan PDF Halaman Kosong + +PDF tanpa halaman ibarat buku tanpa halaman—tidak berguna. Menambahkan halaman kosong sangat mudah, dan memberi kita permukaan untuk menempelkan nomor Bates. + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **Tip pro:** Jika Anda memerlukan beberapa halaman, cukup panggil `pdfDocument.Pages.Add()` dalam sebuah loop. Setiap pemanggilan mengembalikan objek `Page` baru yang dapat Anda sesuaikan secara independen. + +## Langkah 3: Cara Menambahkan Penomoran Bates – Membuat TextStamp + +Sekarang masuk ke inti masalah: **nomor Bates**. Di Aspose.Pdf ini hanyalah sebuah `TextStamp` dengan flag artefak khusus. + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **Mengapa kami mengatur `Artifact`:** Beberapa pembaca PDF menampilkan nomor Bates sebagai metadata yang dapat dicari. Menandai stempel sebagai artefak `BatesNumbering` memastikan bahwa alat downstream dapat mengenalinya secara otomatis. + +## Langkah 4: Menempatkan Stempel pada Halaman + +Dengan stempel yang siap, kini kita **menempatkan stempel pada halaman**. Ini adalah langkah di mana nomor visual sebenarnya muncul di PDF. + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **Kasus tepi:** Jika Anda memerlukan nomor yang bertambah pada setiap halaman, Anda dapat melakukan loop melalui `pdfDocument.Pages` dan memperbarui `batesStamp.Value` sebelum memanggil `AddStamp`. Contoh di sini tetap sederhana dengan “Bates‑001” statis. + +## Langkah 5: Menyimpan dan Memverifikasi Hasil + +Akhirnya, kita menyimpan PDF ke disk. Pilih folder yang Anda miliki hak tulisnya; jika tidak, Anda akan mendapatkan `UnauthorizedAccessException`. + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +Saat Anda membuka `BatesStamped.pdf` di penampil apa pun, Anda harus melihat “Bates‑001” kecil yang tertata rapi di sudut kanan‑bawah halaman kosong. + +> **Output yang diharapkan:** +> ![PDF with Bates number stamp](image-placeholder.png "PDF with Bates number stamp") +> *Alt text: PDF with Bates number stamp on the bottom‑right corner.* + +Jika nomor tidak muncul, periksa kembali nilai margin dan pastikan ukuran halaman tidak terlalu kecil (A4 default berfungsi baik). Juga pastikan flag `Artifact` tidak dihapus oleh alat pemrosesan pasca‑produksi apa pun. + +## Contoh Lengkap yang Berfungsi + +Berikut adalah program lengkap yang siap disalin‑tempel. Ia mencakup semua direktif `using` dan komentar untuk membantu Anda tetap terarah. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +Jalankan program, buka PDF, dan Anda akan melihat nomor Bates tepat di tempat yang kami tentukan. 🎉 + +## Variasi Umum & Hal-hal yang Perlu Diwaspadai + +| Skenario | Apa yang Diubah | Mengapa | +|----------|----------------|-----| +| **Beberapa halaman, nomor bertambah** | Loop melalui `pdfDocument.Pages`, set `batesStamp.Value = $"Bates-{i:D3}"` sebelum `AddStamp` | Memberikan setiap halaman identifier unik, umum untuk bundel hukum | +| **Penempatan berbeda (atas‑kiri)** | Ubah `HorizontalAlignment = HorizontalAlignment.Left` dan `VerticalAlignment = VerticalAlignment.Top` | Beberapa organisasi lebih suka nomor di header daripada footer | +| **Font atau warna khusus** | Set `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` | Meningkatkan keterbacaan atau memenuhi pedoman merek | +| **Menambahkan PDF yang ada sebagai latar belakang** | Muat PDF sumber dengan `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` | Berguna saat Anda perlu menempelkan stempel di atas formulir yang sudah dibuat | + +## Penutup + +Kami baru saja menunjukkan cara **membuat dokumen PDF**, **menambahkan PDF halaman kosong**, dan **menambahkan nomor Bates** menggunakan Aspose.Pdf untuk .NET, kemudian **menempatkan stempel pada halaman** dan menyimpan file. Kode dibuat sengaja ringkas agar Anda dapat menyesuaikannya dengan alur kerja yang lebih besar—baik saat memproses puluhan file sekaligus atau mengintegrasikannya ke layanan web. + +Jika Anda siap melangkah lebih jauh, pertimbangkan: + +- Mengotomatiskan logika peningkatan nomor untuk berkas kasus besar. +- Menyematkan pembuatan PDF ke dalam API ASP.NET Core. +- Menambahkan keamanan (proteksi password) dengan `pdfDocument.Encrypt(...)`. + +Silakan bereksperimen, pecahkan masalah, dan ajukan pertanyaan di komentar. Selamat coding, semoga PDF Anda selalu tercapainya stempel yang sempurna! + +{{< /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/programming-with-tagged-pdf/_index.md b/pdf/indonesian/net/programming-with-tagged-pdf/_index.md index 7c3aa11a7..0461c00c7 100644 --- a/pdf/indonesian/net/programming-with-tagged-pdf/_index.md +++ b/pdf/indonesian/net/programming-with-tagged-pdf/_index.md @@ -45,6 +45,7 @@ Bahasa Indonesia: --- | --- Bahasa Indonesia: | [Elemen Struktur Teks Dalam File PDF](./text-structure-elements/) Pelajari cara memanipulasi elemen struktur teks dalam PDF dengan Aspose.PDF untuk .NET. Panduan langkah demi langkah ini mencakup semua yang Anda butuhkan untuk membuat PDF terstruktur. Bahasa Indonesia: | [Validasi File PDF](./validate-pdf/) | Pelajari cara memvalidasi file PDF dengan Aspose.PDF untuk .NET. Periksa kepatuhannya terhadap standar dan buat laporan validasi. | | [Buat PDF yang Ditandai di C# – Panduan Lengkap Langkah demi Langkah](./create-tagged-pdf-in-c-complete-step-by-step-guide/) | Pelajari cara membuat PDF yang ditandai menggunakan Aspose.PDF untuk .NET dengan C# dalam panduan langkah demi langkah yang lengkap. | +| [Buat PDF yang Ditandai di C# – Panduan Langkah demi Langkah](./create-tagged-pdf-in-c-step-by-step-guide/) | Pelajari cara membuat PDF yang ditandai menggunakan Aspose.PDF untuk .NET dengan C# dalam panduan langkah demi langkah. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/indonesian/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/indonesian/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..c439ccce2 --- /dev/null +++ b/pdf/indonesian/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-03-06 +description: Buat PDF ber-tag dengan Aspose.Pdf di C#. Pelajari cara menambahkan gambar + ke PDF, mengatur posisi gambar, dan menandai PDF untuk aksesibilitas. +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: id +og_description: Buat PDF ber‑tag dengan Aspose.Pdf. Panduan ini menunjukkan cara menambahkan + gambar ke PDF, mengatur posisi gambar, dan menandai PDF untuk aksesibilitas. +og_title: Buat PDF Berlabel di C# – Tutorial Lengkap +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: Buat PDF Ber‑tag di C# – Panduan Langkah demi Langkah +url: /id/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Buat PDF Ber‑tag di C# – Tutorial Lengkap + +Pernah perlu **membuat PDF ber‑tag** di C# tapi tidak yakin harus mulai dari mana? Anda tidak sendirian; aksesibilitas kini menjadi keharusan, dan PDF ber‑tag adalah tulang punggung dokumen yang patuh. Dalam tutorial ini kita akan menelusuri contoh dunia nyata yang **menambahkan gambar ke PDF**, mengatur posisi gambar, dan menunjukkan **cara menandai PDF** menggunakan Aspose.Pdf. Pada akhir tutorial Anda akan memiliki PDF ber‑tag lengkap yang dapat Anda kirim ke siapa saja. + +Kami akan membahas semuanya mulai dari memuat file yang ada hingga menyimpan output akhir, sehingga Anda tidak perlu mencari “cara menambahkan gambar” di tempat lain. Tanpa basa‑basi—hanya solusi yang jelas, dapat dijalankan, dan bekerja dengan Aspose.Pdf 23.8 (versi terbaru saat penulisan). Siapkan IDE Anda, dan mari mulai. + +--- + +## Apa yang Anda Butuhkan + +- **Aspose.Pdf untuk .NET** (paket NuGet `Aspose.Pdf`). +- .NET 6+ (atau .NET Framework 4.7.2+). +- PDF input yang sudah memiliki struktur logis (misalnya, sudah ber‑tag) – jika belum, Anda dapat mengaktifkan tagging via `pdfDocument.TaggedContent = true`. +- File gambar (`image.png`) yang ingin Anda sematkan. + +Itu saja. Tanpa pustaka tambahan, tanpa file konfigurasi yang rumit. + +--- + +## Langkah 1: Muat Dokumen PDF yang Ada (Buat Dasar PDF Ber‑tag) + +Hal pertama yang kami lakukan adalah membuka PDF yang ingin kami tingkatkan. Memuat file memberi kami akses ke struktur logisnya, yang penting untuk alur kerja **create tagged pdf**. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*Mengapa ini penting:* Tanpa pohon tag, PDF tidak akan menyampaikan informasi struktural ke pembaca layar. Mengaktifkan tagging memastikan bahwa elemen baru yang kami tambahkan (seperti gambar) mewarisi hierarki yang tepat. + +--- + +## Langkah 2: Akses Root Struktur Logis (Cara Menandai PDF) + +Sekarang kami masuk ke struktur logis PDF. Elemen root adalah wadah untuk semua tag—bayangkan sebagai outline dokumen. + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*Penjelasan:* `logicalRoot` memungkinkan kami menambahkan tag baru seperti `
` atau `
`. Inilah inti dari **how to tag PDF** secara programatik. + +--- + +## Langkah 3: Buat Tag Figure dan Atur Posisinya (Set Figure Position) + +Tag *Figure* mengelompokkan konten visual dengan caption opsional. Kami akan membuat satu, menempatkannya, dan menempelkan ke root. + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*Mengapa kami mengatur posisi:* Langkah **set figure position** menentukan di mana elemen visual akan muncul di halaman. Jika Anda melewatkannya, gambar dapat muncul di lokasi tak terduga atau tidak terlihat oleh teknologi bantu. + +--- + +## Langkah 4: Tambahkan Representasi Visual – Sisipkan Gambar (Add Image to PDF) + +Setelah tag ada, kami memerlukan gambar sebenarnya. Inilah bagian yang menjawab **add image to pdf**. + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*Poin penting:* Koordinat persegi panjang harus cocok dengan `figureTag.Position` yang kami definisikan sebelumnya; jika tidak, figure dan konten visualnya akan tidak sinkron, merusak aksesibilitas. + +--- + +## Langkah 5: Simpan PDF yang Diperbarui (Selesaikan Membuat PDF Ber‑tag) + +Akhirnya, kami menyimpan perubahan ke file baru. Menjaga file asli tetap tidak tersentuh adalah praktik yang baik. + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +Pada tahap ini Anda memiliki file **create tagged pdf** yang berisi gambar yang diposisikan dengan benar dan dibungkus dalam tag `
`. Buka `output.pdf` di Adobe Acrobat dan periksa panel *Tags* – Anda harus melihat node `Figure` di bawah root. + +--- + +## Contoh Lengkap yang Siap Dijalan­kan + +Berikut adalah program lengkap yang dapat Anda salin‑tempel ke aplikasi konsol. Semua langkah sudah berada dalam urutan yang benar. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### Hasil yang Diharapkan + +- `output.pdf` terbuka dengan gambar ditampilkan pada titik (100, 150), berukuran 300 × 200 poin. +- Panel *Tags* menampilkan elemen `Figure` yang membungkus gambar. +- Alat pembaca layar mengumumkan “Figure” sebelum mendeskripsikan gambar, memenuhi standar aksesibilitas dasar. + +--- + +## Pertanyaan Umum & Kasus Tepi + +### Bagaimana jika PDF sumber belum ber‑tag? + +Aspose.Pdf memungkinkan Anda mengaktifkan tagging dengan mengatur `pdfDocument.TaggedContent.IsTagged = true;`. Perpustakaan akan menghasilkan pohon tag default, setelah itu Anda dapat menambahkan tag khusus seperti yang ditunjukkan. + +### Bisakah saya menambahkan caption ke figure? + +Ya. Setelah membuat `figureTag`, Anda dapat melampirkan `Paragraph` dengan `TextFragment` dan mengatur `Tag`‑nya menjadi `Caption`. Contoh: + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### Bagaimana cara menempatkan figure pada halaman yang berbeda? + +Ganti `var firstPage = pdfDocument.Pages[1];` dengan indeks halaman yang diinginkan, misalnya `pdfDocument.Pages[3]`. Ingat untuk menyesuaikan koordinat `Position` jika ukuran halaman berbeda. + +### Bagaimana jika saya perlu menandai banyak gambar? + +Buat `Figure` baru untuk setiap gambar, berikan masing‑masing `Position` unik, dan tambahkan objek `Image` yang bersesuaian ke halaman yang tepat. Melakukan looping atas koleksi gambar bekerja dengan baik. + +### Apakah ini bekerja dengan kepatuhan PDF/A? + +Aspose.Pdf mendukung PDF/A‑1b, PDF/A‑2b, dan PDF/A‑3b. Saat menghasilkan dokumen PDF/A, pastikan untuk mengatur mode kepatuhan sebelum menyimpan: + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +Logika tagging tetap sama. + +--- + +## Tips Pro & Jebakan + +- **Tip pro:** Selalu gunakan path absolut atau `Path.Combine` untuk menghindari error file‑not‑found saat runtime. +- **Waspada:** Koordinat yang tidak cocok antara tag `Figure` dan persegi panjang `Image`—teknologi bantu bergantung pada penyelarasan tersebut. +- **Catatan performa:** Jika Anda memproses banyak halaman, bungkus stream gambar dalam blok `using` untuk membebaskan sumber daya dengan cepat. +- **Pemeriksaan versi:** API yang ditunjukkan bekerja dengan Aspose.Pdf 23.8+. Versi lebih lama mungkin memiliki nama kelas yang sedikit berbeda (misalnya `LogicalStructureElement` alih‑alih `FigureElement`). + +--- + +## Kesimpulan + +Kami baru saja **create tagged pdf** dari awal hingga akhir, mendemonstrasikan **add image to pdf**, dan menunjukkan cara **set figure position** sambil menjawab **how to tag pdf** serta **how to add image** dalam satu contoh yang kohesif. Kode siap dijalankan, penjelasan mencakup “mengapa” di balik setiap langkah, dan Anda kini memiliki fondasi yang kuat untuk membangun PDF yang dapat diakses di C#. + +Siap untuk tantangan berikutnya? Coba tambahkan tabel dengan tag `
`, atau sematkan lapisan kepatuhan PDF/A‑2b untuk keperluan arsip. Pola yang sama—load, akses struktur logis, buat tag, lampirkan konten visual, simpan—berlaku pada kebanyakan tugas aksesibilitas PDF. + +Jika Anda menemukan kendala atau memiliki kasus penggunaan yang belum tercakup di sini, tinggalkan komentar di bawah. Selamat menandai, dan nikmati membangun PDF yang dapat dibaca semua orang! + +![Diagram yang menunjukkan PDF dengan tag Figure dan gambar – menggambarkan cara membuat PDF ber‑tag](placeholder-image.png "contoh create tagged pdf") + +{{< /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/digital-signatures/_index.md b/pdf/italian/net/digital-signatures/_index.md index e1b66c2c9..cca71527b 100644 --- a/pdf/italian/net/digital-signatures/_index.md +++ b/pdf/italian/net/digital-signatures/_index.md @@ -47,6 +47,9 @@ Scopri come verificare le firme digitali nei file PDF utilizzando Aspose.PDF per ### [Verifica della firma PDF in C# – Guida passo‑passo](./verify-pdf-signature-in-c-step-by-step-guide/) Scopri come verificare le firme PDF in C# con una guida dettagliata passo‑passo. +### [Come leggere le firme nei PDF con C# – Guida passo‑passo](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +Scopri come leggere le firme digitali nei PDF utilizzando C#. Questa guida passo‑passo mostra il codice necessario per estrarre e analizzare le firme. + ### [Padroneggia la firma e la verifica dei PDF con Aspose.PDF .NET](./mastering-aspose-pdf-net-sign-verify-smart-card-certificates/) Un tutorial sul codice per Aspose.PDF Net diff --git a/pdf/italian/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/italian/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..2443bedf6 --- /dev/null +++ b/pdf/italian/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-06 +description: Come leggere le firme in un PDF usando C#. Impara a caricare un documento + PDF con C#, elencare le firme PDF e ottenere le firme digitali PDF rapidamente e + in modo affidabile. +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: it +og_description: Come leggere le firme in un PDF usando C#. Questa guida mostra come + caricare un documento PDF in C#, elencare le firme PDF e recuperare le firme digitali + PDF in pochi semplici passaggi. +og_title: Come leggere le firme in PDF con C# – Guida completa +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: Come leggere le firme nei PDF con C# – Guida passo passo +url: /it/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come leggere le firme in PDF con C# – Guida completa + +Ti sei mai chiesto **come leggere le firme** già incorporate in un file PDF? Forse stai costruendo un cruscotto di conformità, o hai semplicemente bisogno di verificare i contratti firmati prima che vengano inseriti nel tuo database. La buona notizia è che, con poche righe di C# e la libreria Aspose.Pdf, puoi estrarre i nomi delle firme direttamente dal file—senza necessità di ispezioni manuali. + +In questo tutorial vedremo come caricare un documento PDF in C#, elencare le firme PDF e ottenere informazioni sulle firme digitali PDF. Alla fine avrai un'app console pronta all'uso che stampa ogni nome di firma trovato, oltre a suggerimenti per gestire casi particolari come file protetti da password. + +## Prerequisiti + +- .NET 6.0 o versioni successive (il codice funziona anche con .NET Framework 4.6+) +- Aspose.Pdf per .NET (puoi ottenere una licenza temporanea gratuita dal sito Aspose) +- Un PDF che contiene già una o più firme digitali (il campione `MultiSigned.pdf` è incluso nel repository) + +> **Consiglio professionale:** se stai usando Visual Studio, abilita *Nullable Reference Types* per rilevare i bug legati a null in anticipo. + +## Passo 1: Caricare il documento PDF in C# + +La prima cosa di cui abbiamo bisogno è un oggetto `Document` che rappresenti il file PDF su disco. La classe `Document` di Aspose.Pdf gestisce tutto, dall'estrazione di testo semplice all'elaborazione di moduli complessi. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**Perché è importante:** Caricare il PDF verifica che il file esista e sia leggibile. Se il file è corrotto o il percorso è errato, il programma termina subito invece di incorrere in errori criptici più tardi quando si tenta di enumerare le firme. + +## Passo 2: Creare un helper `PdfFileSignature` + +Aspose separa la gestione generica del PDF (`Document`) dalle operazioni specifiche per le firme (`PdfFileSignature`). Istanziare questo helper ci dà accesso a metodi come `GetSignatureNames()`. + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**Perché è importante:** La classe `PdfFileSignature` sa come analizzare le voci del dizionario `/Sig` del PDF, dove risiedono le firme digitali. Usandola garantiamo di leggere le firme esattamente come sono state aggiunte, preservando tutti i metadati crittografici. + +## Passo 3: Recuperare tutti i nomi delle firme + +Ora arriva il cuore di **come leggere le firme**: chiamare `GetSignatureNames()`. Questo metodo restituisce un array di stringhe contenente i *nomi dei campi* di ciascuna firma. + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**Cosa vedrai:** Se `MultiSigned.pdf` contiene tre firme chiamate `Signature1`, `Signature2` e `Signature3`, l'output della console sarà: + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## Passo 4: (Opzionale) Verificare la validità di ciascuna firma + +Leggere i nomi è spesso sufficiente, ma molti progetti hanno anche bisogno di sapere se ciascuna firma è ancora valida. Aspose consente di convalidare una firma tramite il suo nome di campo: + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **Caso limite:** Se il PDF è protetto da password, devi fornire la password prima di chiamare `VerifySignature`. Usa `pdfDocument.Encrypt.Password = "yourPassword";` subito dopo aver caricato il documento. + +## Esempio completo funzionante + +Di seguito trovi il programma completo che puoi copiare‑incollare in un nuovo progetto console (`dotnet new console`). Include tutti i passaggi, la gestione degli errori e la verifica opzionale. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**Output previsto** (supponendo tre firme valide): + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## Gestione delle variazioni comuni + +| Situazione | Cosa modificare | Perché | +|------------|-----------------|--------| +| **PDF protetto da password** | Imposta `pdfDocument.Encrypt.Password = "yourPwd";` prima di creare `PdfFileSignature`. | Senza la password i dizionari delle firme sono criptati e `GetSignatureNames()` restituisce un array vuoto. | +| **PDF di grandi dimensioni ( > 100 MB )** | Usa `pdfSigner.GetSignatureNames(0, 10)` per scorrere i risultati (primo parametro = indice di partenza). | Caricare l'intera lista di firme in una volta può consumare molta memoria. | +| **Nessuna firma** | Il codice stampa già un avviso amichevole. Considera di registrare questo come evento di audit. | Aiuta i processi a valle a decidere se rifiutare il file o chiedere all'utente una versione firmata. | +| **Nomi di campo firma personalizzati** | Il metodo restituisce qualsiasi nome di campo usato durante la firma, ad esempio `EmployeeApproval`. Non è necessario alcun lavoro aggiuntivo. | Ti permette di mappare le firme ai ruoli aziendali. | + +## Buone pratiche e consigli + +- **Dispose objects**: Il pattern `using var pdfSigner` garantisce che le risorse native vengano rilasciate prontamente. +- **License early**: Chiama `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` all'inizio di `Main` per evitare la filigrana di valutazione. +- **Thread safety**: Se stai elaborando molti PDF in parallelo, istanzia un `PdfFileSignature` separato per thread. La classe non è thread‑safe. +- **Logging**: In produzione, sostituisci `Console.WriteLine` con un logger strutturato (Serilog, NLog) così da poter catturare i nomi esatti delle firme per i percorsi di audit. +- **Version check**: Il codice funziona con Aspose.Pdf per .NET 23.10 e versioni successive. Le versioni più vecchie potrebbero richiedere `PdfSignature` invece di `PdfFileSignature`. + +## Conclusione + +Abbiamo coperto **come leggere le firme** da un PDF usando C#. Caricando il documento PDF, creando un helper `PdfFileSignature` e chiamando `GetSignatureNames()`, puoi elencare ogni firma digitale incorporata nel file. La verifica opzionale aggiunge un livello di fiducia, e il codice di esempio mostra esattamente come integrarlo in un'app console reale. + +Pronto per il passo successivo? Prova a combinare questo con `DigitalSignatureUtil` di Aspose per estrarre i certificati del firmatario, oppure alimenta l'elenco delle firme in un cruscotto di conformità che segnala i contratti non firmati. Le possibilità sono infinite—basta ricordarsi di **caricare il documento PDF C#**, **elencare le firme PDF** e **ottenere le firme digitali PDF** ogni volta che ti serve un audit rapido. + +Buona programmazione, e che i tuoi PDF rimangano sempre firmati in modo sicuro! + +{{< /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-conversion/_index.md b/pdf/italian/net/document-conversion/_index.md index 40fa26296..1dbd24512 100644 --- a/pdf/italian/net/document-conversion/_index.md +++ b/pdf/italian/net/document-conversion/_index.md @@ -37,6 +37,7 @@ Imparerai come specificare le impostazioni di conversione, estrarre testo e imma | [PDF in PDFA](./pdf-to-pdfa/) Scopri come convertire i file PDF nel formato PDF/A utilizzando Aspose.PDF per .NET con questo tutorial passo dopo passo. | | [PDF in PDFA3b](./pdf-to-pdfa3b/) | Impara a convertire i file PDF nel formato PDF/A-3B senza sforzo con Aspose.PDF per .NET in questa guida passo passo. | | [Converti PDF in PDF/X‑4 in C# – Tutorial ASP.NET PDF passo‑passo](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | Scopri come convertire un PDF in PDF/X‑4 usando Aspose.PDF per .NET con un esempio completo in C#. | +| [Tutorial Aspose PDF: Converti PDF in PDF/X‑4 in C#](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) | Scopri come convertire un PDF in PDF/X‑4 usando Aspose.PDF per .NET con un esempio completo in C#. | | [Suggerimenti per il font da PDF a PNG](./pdf-to-png-font-hinting/) | Impara a convertire PDF in PNG con suggerimenti sui font utilizzando Aspose.PDF per .NET in una semplice guida passo passo. | | [PDF in PPT](./pdf-to-ppt/) | Scopri come convertire PDF in PPT utilizzando Aspose.PDF per .NET con questa guida passo passo. Facile, efficiente e perfetto per le presentazioni. | | [PDF in SVG](./pdf-to-svg/) | Scopri come convertire i file PDF in formato SVG utilizzando Aspose.PDF per .NET in questo tutorial passo passo. Perfetto per sviluppatori e designer. | diff --git a/pdf/italian/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/italian/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..cfb63b871 --- /dev/null +++ b/pdf/italian/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-03-06 +description: Il tutorial Aspose PDF mostra come utilizzare Aspose per caricare un + documento PDF in C#, convertire PDF in PDF/X‑4 e salvare il PDF convertito in modo + efficiente. +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: it +og_description: Il tutorial Aspose PDF spiega come caricare un documento PDF in C#, + convertirlo nel formato PDF/X‑4 e salvare il PDF convertito con esempi di codice + chiari. +og_title: 'Tutorial Aspose PDF: Converti PDF in PDF/X‑4 con C#' +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: 'Tutorial Aspose PDF: Converti PDF in PDF/X‑4 con C#' +url: /it/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tutorial Aspose PDF: Converti PDF in PDF/X‑4 con C# + +Ti sei mai chiesto come usare Aspose per trasformare un PDF normale in un file PDF/X‑4 senza sforzo? Non sei l'unico—gli sviluppatori hanno spesso bisogno di un modo affidabile per **caricare documento PDF C#**‑style, convertirlo e poi **salvare il PDF convertito** per i flussi di lavoro successivi. In questa guida, percorreremo un esempio completo e eseguibile che fa esattamente questo, usando l'ultima versione di Aspose.Pdf per .NET. + +Copriamo tutto, dall'installazione della libreria, al caricamento di un PDF di origine, alla conversione nello standard PDF/X‑4 e infine al salvataggio del risultato su disco. Alla fine avrai una solida comprensione di **come usare Aspose** per questo comune scenario di conversione, oltre a consigli per gestire i casi limite. + +## Prerequisiti + +- .NET 6.0 o successivo (il codice funziona anche su .NET Framework, ma .NET 6+ è consigliato). +- Un file di licenza valido per Aspose.Pdf per .NET (oppure puoi eseguire in modalità valutazione per un test rapido). +- Visual Studio 2022 o qualsiasi IDE compatibile con C#. +- Un file PDF di input situato in `YOUR_DIRECTORY/input.pdf`. + +Non sono necessari pacchetti NuGet aggiuntivi oltre a `Aspose.Pdf`. + +## Installa Aspose.Pdf tramite NuGet + +Apri il tuo terminale o la Console di Gestione Pacchetti e esegui: + +```bash +dotnet add package Aspose.Pdf +``` + +Questo scarica l'ultima versione stabile (a partire da marzo 2026, versione 23.12). Se preferisci l'interfaccia grafica, cerca *Aspose.Pdf* nel NuGet Package Manager e installalo. + +## Passo 1: Carica documento PDF in C# con Aspose + +La prima cosa da fare è caricare il PDF di origine in memoria. La classe `Document` di Aspose è il punto di ingresso. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**Perché è importante:** Caricare il file verifica che il percorso esista e che il PDF non sia corrotto. Il blocco `try/catch` ti offre un modo elegante per segnalare gli errori—utile quando il file proviene da upload degli utenti. + +## Passo 2: Converti PDF nel formato PDF/X‑4 + +PDF/X‑4 è un sottoinsieme di PDF progettato per la stampa e l'archiviazione affidabili. La conversione garantisce che tutti i font siano incorporati e che il file rispetti gli standard del settore. + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**Perché scegliere `ConvertErrorAction.Delete`?** Alcuni PDF legacy contengono elementi (come annotazioni non supportate) che altrimenti fermerebbero la conversione. Eliminarli mantiene il processo fluido, ma dovresti controllare l'output se hai bisogno di preservare quegli elementi. + +### Opzionale: Verifica il successo della conversione + +Se vuoi essere ancora più sicuro, puoi ispezionare il `PdfFormat` del documento dopo la conversione: + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## Passo 3: Salva il file PDF convertito + +Ora che il documento è nel formato PDF/X‑4, scrivilo nuovamente su disco. + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**Risultato che vedrai:** Un nuovo file chiamato `Converted_PDFX4.pdf` appare in `YOUR_DIRECTORY`. Aprilo con qualsiasi visualizzatore PDF che supporti PDF/X‑4 (Adobe Acrobat, Foxit, ecc.) e noterai che tutti i font sono incorporati e che il documento è conforme alla specifica PDF/X‑4. + +![aspose pdf tutorial - converting PDF to PDF/X‑4](/images/aspose-pdf-conversion.png "aspose pdf tutorial showing PDF/X‑4 conversion result") + +*Il testo alternativo dell'immagine include la parola chiave principale, soddisfacendo i requisiti SEO.* + +## Esempio completo End‑to‑End + +Mettendo tutto insieme, ecco un'app console autonoma che puoi copiare‑incollare in un nuovo progetto C#: + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +Esegui il programma e dovresti vedere i messaggi della console che confermano ogni passaggio. Se qualcosa va storto, i messaggi di errore ti indicano lo stadio esatto. + +## Domande comuni e casi limite + +### E se devo mantenere le annotazioni? + +`ConvertErrorAction.Delete` rimuove gli oggetti non supportati, incluse alcune annotazioni. Passa a `ConvertErrorAction.Keep` se è fondamentale preservarle, ma testa l'output—alcune annotazioni potrebbero comunque generare avvisi di conformità. + +### Come gestire PDF di grandi dimensioni (centinaia di MB)? + +Aspose.Pdf trasmette il file in streaming, quindi l'uso della memoria rimane contenuto. Tuttavia, potresti voler aumentare le soglie di `System.GC` o elaborare il documento a blocchi (ad esempio, convertire pagina per pagina) per file estremamente grandi. + +### Posso convertire più file in batch? + +Assolutamente. Avvolgi la logica di caricamento‑conversione‑salvataggio in un ciclo `foreach` che itera su una cartella di PDF. Ricorda di gestire le eccezioni per file in modo che un PDF difettoso non interrompa l'intero batch. + +### Funziona su .NET Core su Linux? + +Sì. Aspose.Pdf è cross‑platform. Basta assicurarsi che il pacchetto NuGet `Aspose.Pdf` sia referenziato e che i file dei font appropriati siano installati sull'host Linux se hai bisogno del rendering del testo. + +## Consigli professionali dal campo + +- **Imposta una licenza subito**: `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` – questo rimuove il watermark di valutazione e migliora le prestazioni. +- **Valida l'output**: Usa `PdfFormatValidator` di Aspose per confermare programmaticamente la conformità PDF/X‑4 prima di distribuire il file. +- **Registra il tempo di conversione**: I batch di grandi dimensioni beneficiano del cronometraggio di ogni conversione (`Stopwatch`) per individuare regressioni di prestazioni. +- **Evita percorsi hard‑coded**: Preferisci file di configurazione o variabili d'ambiente per `inputPath` e `outputPath`—rende l'app portabile. + +## Conclusione + +In questo **Tutorial Aspose PDF** abbiamo mostrato un flusso di lavoro pulito, end‑to-end, per **come usare Aspose** per **caricare documento PDF C#**, convertirlo allo standard **PDF/X‑4** e **salvare il PDF convertito**. Lo snippet è completamente eseguibile, spiega il *perché* di ogni passaggio e mette in evidenza le insidie che potresti incontrare in progetti reali. + +Ora che hai le basi, puoi estendere la soluzione—processare in batch decine di file, incorporare metadati personalizzati o integrare la conversione in una web API. Le possibilità sono ampie, e Aspose.Pdf ti fornisce gli strumenti per arrivarci rapidamente. + +Hai altre domande sull'elaborazione PDF con Aspose? Lascia un commento, esplora la documentazione ufficiale di Aspose, o sperimenta con il codice sopra. Buona conversione! + +{{< /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-creation/_index.md b/pdf/italian/net/document-creation/_index.md index 7a0867829..ff4b968fc 100644 --- a/pdf/italian/net/document-creation/_index.md +++ b/pdf/italian/net/document-creation/_index.md @@ -77,6 +77,12 @@ Un tutorial sul codice per Aspose.PDF Net ### [Crea documento PDF con Aspose.PDF – Aggiungi pagina, forma e salva](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) Scopri come aggiungere pagine e forme a un PDF e salvarlo usando Aspose.PDF per .NET. +### [Crea documento PDF con Aspose.PDF – Guida passo passo](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +Scopri come creare un documento PDF usando Aspose.PDF con una guida dettagliata passo passo. + +### [Crea documento PDF con Aspose.PDF – Guida completa C#](./create-pdf-document-with-aspose-pdf-full-c-guide/) +Scopri come creare un documento PDF completo usando Aspose.PDF per .NET con esempi di codice C# dettagliati. + ## Risorse aggiuntive - [Aspose.PDF per la documentazione di rete](https://docs.aspose.com/pdf/net/) diff --git a/pdf/italian/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/italian/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..5af3eca10 --- /dev/null +++ b/pdf/italian/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-06 +description: Crea documento PDF in C# usando Aspose.PDF – impara come aggiungere pagine + vuote, caselle di testo, widget e salvare il PDF rapidamente. +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: it +og_description: Crea un documento PDF in C# con Aspose.PDF. Questa guida mostra come + aggiungere pagine PDF vuote, caselle di testo, widget e come salvare il PDF. +og_title: Crea documento PDF con Aspose.PDF – Tutorial completo C# +tags: +- pdf +- csharp +- aspose +- forms +title: Crea documento PDF con Aspose.PDF – Guida completa C# +url: /it/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crea documento PDF con Aspose.PDF – Guida completa in C# + +Ti è mai capitato di **creare un documento pdf** da zero in un progetto .NET e di chiederti da dove cominciare? Non sei solo; molti sviluppatori si trovano nella stessa situazione quando il primo requisito è “generare un PDF compilabile con la stessa casella di testo su tre pagine”. La buona notizia? Con Aspose.PDF puoi generare un PDF dall’aspetto professionale con poche righe di codice. + +In questo tutorial percorreremo l’intero processo: dall’inizializzazione di un nuovo PDF, **aggiunta di pagine vuote pdf**, inserimento di una **textbox**, replicazione tramite annotazioni **widget**, e infine **salvataggio del PDF** su disco. Alla fine avrai un file pronto all’uso chiamato *MultiWidgetField.pdf* e una solida comprensione del perché ogni passaggio è importante. + +## Cosa copre questa guida + +- Prerequisiti necessari prima di scrivere una sola riga di codice. +- Creazione passo‑passo di un documento PDF usando Aspose.PDF per .NET. +- Come aggiungere pagine vuote, un campo di testo del modulo e ulteriori istanze di widget. +- Suggerimenti per gestire le difficoltà più comuni (ad es., indicizzazione delle pagine, collisioni nei nomi dei campi). +- Un programma C# completo, pronto per il copia‑incolla, che puoi eseguire subito. + +Nessun link a documentazione esterna, nessun “vedi la documentazione API” – tutto ciò che ti serve è qui. + +## Prerequisiti + +Prima di immergerti, assicurati di avere: + +1. **.NET 6.0** (o qualsiasi versione successiva) installato sulla tua macchina. +2. Una licenza attiva di **Aspose.PDF for .NET** o una chiave di valutazione temporanea. +3. Un ambiente di sviluppo come **Visual Studio 2022** o **VS Code** con l’estensione C#. + +Questo è tutto – non serve nient’altro. + +## Passo 1: Inizializza il documento PDF e aggiungi pagine vuote + +La prima cosa da fare quando **crei un documento pdf** programmaticamente è istanziare un oggetto `Document`. Pensalo come aprire un quaderno nuovo di zecca. Poi aggiungi le pagine di cui hai bisogno; nel nostro caso tre pagine vuote. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**Perché è importante:** Aspose.PDF tratta le pagine come una collezione a indice zero internamente, ma la sua API pubblica è a indice 1, quindi `Pages[1]` è la prima pagina appena aggiunta. Aggiungere le pagine in anticipo ti fornisce una tela su cui posizionare i campi modulo in seguito, ed è molto più efficiente rispetto all’inserimento di pagine al volo dopo che il documento è già cresciuto. + +> **Consiglio esperto:** Se ti serve una sola pagina, puoi saltare il ciclo e chiamare `pdfDocument.Pages.Add()` una volta. Aggiungere più pagine in un ciclo mantiene il codice scalabile. + +## Passo 2: Definisci un campo TextBox sul prima pagina + +Ora che abbiamo tre fogli vuoti, inseriamo una **textbox** sulla prima pagina. Un `TextBoxField` è un elemento di modulo in cui l’utente finale può digitare quando il PDF è aperto in Acrobat Reader o in qualsiasi visualizzatore PDF che supporti i moduli. + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**Perché le coordinate del rettangolo?** Aspose.PDF usa i punti (1/72 di pollice). Il rettangolo `(100, 700, 300, 730)` posiziona la textbox circa a metà della pagina, larga 200 pt e alta 30 pt. Modifica questi valori per adattarli al tuo layout. + +> **Domanda frequente:** *Devo impostare la proprietà `Value`?* +> No, è opzionale. Lasciandola vuota il campo appare vuoto; impostare un valore predefinito può guidare l’utente. + +## Passo 3: Aggiungi annotazioni Widget per lo stesso campo sulle pagine 2 e 3 + +Un **widget** è la rappresentazione visiva di un campo modulo su una pagina specifica. Per impostazione predefinita un campo appare solo sulla pagina in cui è stato creato. Per riutilizzare la stessa textbox su altre pagine, devi collegare ulteriori oggetti `WidgetAnnotation` alla collezione `Widgets` del campo. + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**Perché i widget?** Senza di essi, l’utente vedrebbe la textbox solo nella pagina 1, anche se il campo sottostante esiste. I widget consentono di condividere un singolo campo logico su più pagine, garantendo che il testo inserito appaia ovunque il campo sia visualizzato. + +> **Caso limite:** Se ti serve la textbox in coordinate diverse su ciascuna pagina, cambia semplicemente i valori di `Rectangle` per ogni widget. + +## Passo 4: Registra il campo nella collezione Form del documento + +Aspose.PDF mantiene un registro centrale di tutti i campi modulo. Aggiungere il campo alla collezione `Form` lo rende parte della struttura interattiva del PDF. + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +Il secondo argomento (`"Comment"`) è il **nome completamente qualificato** del campo. Deve essere unico nell’intero documento; altrimenti Aspose genererà un’eccezione. + +## Passo 5: Salva il PDF risultante – Come salvare PDF + +Infine, persisti il documento in memoria su disco. Questa è la parte **come salvare pdf** del tutorial. + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**Perché specificare un percorso assoluto?** Usare un percorso assoluto evita confusioni sulla directory di lavoro, specialmente quando il programma è eseguito dal debugger di Visual Studio. Se preferisci un percorso relativo, assicurati solo che la cartella esista prima di chiamare `Save`. + +### Risultato atteso + +Apri *MultiWidgetField.pdf* in Adobe Acrobat Reader. Vedrai la stessa textbox nelle pagine 1, 2 e 3. Digita qualcosa nel campo su qualsiasi pagina – il testo appare immediatamente anche sulle altre pagine perché condividono lo stesso campo modulo sottostante. + +![Esempio di creazione documento PDF che mostra una textbox su tre pagine](https://example.com/placeholder-image.png "Esempio di creazione documento PDF") + +*Testo alternativo immagine: Esempio di creazione documento PDF che mostra una textbox su tre pagine.* + +## Esempio completo, pronto per l’esecuzione + +Di seguito trovi il programma completo che puoi copiare in un nuovo progetto console (`dotnet new console`) e avviare. Tutti i passaggi sono già ordinati e il codice include commenti per chiarezza. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +Esegui il programma, vai su `C:\Temp\` e apri il PDF generato. Vedrai le tre textbox identiche pronte per l’input dell’utente. + +## Varianti comuni e casi limite + +| Scenario | Cosa cambiare | Perché | +|----------|----------------|-----| +| **Dimensione diversa della textbox su ogni pagina** | Modifica i valori di `Rectangle` per ciascun `WidgetAnnotation`. | Ti permette di adattare il campo a layout differenti. | +| **Campo di sola lettura** | Imposta `commentField.ReadOnly = true;`. | Impedisce agli utenti di modificare il contenuto dopo il primo inserimento. | +| **Textbox multilinea** | Imposta `commentField.Multiline = true;` e aumenta l’altezza del rettangolo. | Consente commenti più lunghi senza scorrimento. | +| **Aggiungere un secondo campo** | Crea un altro `TextBoxField` (o qualsiasi `FormField`) e ripeti i passi 2‑4 con un nuovo nome. | Puoi raccogliere più informazioni nello stesso PDF. | + +## Consigli esperti e trappole da evitare + +- **Indicizzazione delle pagine:** Ricorda che `pdfDocument.Pages[1]` è la prima pagina, non `[0]`. Mescolare indici a base 0 e 1 porta a eccezioni “Index out of range”. +- **Collisioni nei nomi dei campi:** Due campi non possono condividere lo stesso nome completamente qualificato. Se ricevi un errore di nomi duplicati, ricontrolla la stringa passata a `Form.Add`. +- **Licenza vs. valutazione:** La versione di valutazione aggiunge una filigrana su ogni pagina. Distribuisci una licenza valida per rimuoverla in produzione. +- **Prestazioni:** Aggiungere centinaia di pagine in un ciclo va bene, ma se devi generare PDF enormi (migliaia di pagine), considera l’uso di + +{{< /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-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/italian/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..0b661ab47 --- /dev/null +++ b/pdf/italian/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,237 @@ +--- +category: general +date: 2026-03-06 +description: Crea un documento PDF usando Aspose.PDF in C#. Scopri come aggiungere + una pagina PDF, disegnare un rettangolo PDF, aggiungere una forma PDF e controllare + lo spessore del bordo del rettangolo—tutto in un unico tutorial. +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: it +og_description: Crea documento PDF in C# con Aspose.PDF. Questo tutorial mostra come + aggiungere una pagina PDF, disegnare un rettangolo PDF, aggiungere una forma PDF + e impostare lo spessore del bordo del rettangolo. +og_title: Crea documento PDF con Aspose.PDF – Guida completa +tags: +- Aspose.PDF +- C# +- PDF generation +title: Crea documento PDF con Aspose.PDF – Guida passo passo +url: /it/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crea documento PDF con Aspose.PDF – Guida passo‑passo + +Hai mai avuto bisogno di **creare un documento PDF** programmaticamente e non sapevi da dove cominciare? Non sei solo—molti sviluppatori si trovano nella stessa situazione quando le loro app devono generare fatture, report o certificati al volo. + +La buona notizia è che con Aspose.PDF per .NET puoi farlo in poche righe, e imparerai anche come **add page PDF**, **draw rectangle PDF**, **add shape PDF**, e regolare lo **spessore del bordo del rettangolo** mentre ci sei. Immergiamoci. + +## Cosa costruirai + +Alla fine di questa guida avrai un'app console C# completamente funzionante che: + +1. **Creates a PDF document** da zero. +2. **Adds a page PDF** al documento. +3. **Draws a rectangle PDF** su quella pagina. +4. **Validates** che il rettangolo rimanga entro i limiti della pagina (**add shape PDF** step). +5. Imposta uno **rectangle border thickness** personalizzato. +6. Salva il risultato come `ShapeValidated.pdf`. + +### Prerequisiti + +- .NET 6.0 o versioni successive (il codice funziona anche con .NET Framework 4.6+). +- Un riferimento al pacchetto NuGet `Aspose.Pdf`. Puoi aggiungerlo tramite: + +```bash +dotnet add package Aspose.Pdf +``` + +- Un editor di testo o IDE—Visual Studio, VS Code, Rider, quello che preferisci. + +> **Consiglio professionale:** Se sei su una macchina aziendale, assicurati che il feed NuGet non sia bloccato; altrimenti otterrai un errore “Package not found”. + +--- + +## Crea documento PDF – Inizializza il documento + +Il primo passo è creare un oggetto `Document`. Pensalo come la tela vuota su cui vivranno tutte le pagine e le forme. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +Perché abbiamo bisogno di questo oggetto? Rappresenta l'intero file PDF in memoria, fornendoci l'accesso alla collezione `Pages`, ai metadati e alle impostazioni di sicurezza. Una volta ottenuto il documento, puoi iniziare ad aggiungere pagine, testo, immagini e grafica vettoriale. + +--- + +## Aggiungi una pagina al PDF (add page pdf) + +Un PDF senza pagine è essenzialmente un file vuoto—inutile. Aggiungere una pagina è semplice, e puoi personalizzarne le dimensioni se lo desideri. Qui utilizziamo la dimensione predefinita A4. + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +Il metodo `Add()` restituisce una nuova istanza `Page` già inserita nella collezione `Pages`, così puoi subito iniziare a disegnarci sopra. In scenari reali potresti iterare su un set di dati e aggiungere decine di pagine; la stessa chiamata a riga singola funziona per ogni iterazione. + +--- + +## Disegna una forma rettangolare (draw rectangle pdf) + +Ora la parte visiva: un rettangolo con bordo visibile. È qui che entra in gioco **draw rectangle pdf**. + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +Alcune cose da notare: + +- `Rect` utilizza i punti (1 pt ≈ 1/72 pollice). Le coordinate definiscono gli angoli in basso a sinistra e in alto a destra, così puoi controllare larghezza e altezza con precisione. +- `BorderInfo` ti consente di specificare quali lati hanno una linea e quanto è spessa. Qui applichiamo una linea di 2 punti a **tutti** i lati, dando al rettangolo un aspetto pulito e uniforme. + +--- + +## Convalida il posizionamento della forma (add shape pdf) + +Prima di inserire il rettangolo nella pagina, è consigliabile verificare che rientri nell'area stampabile della pagina. Aspose.PDF fornisce un comodo metodo di supporto per questo. + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +Perché preoccuparsi? Se posizioni accidentalmente una forma parzialmente fuori dallo schermo, il visualizzatore PDF potrebbe ritagliarla, creando un'esperienza utente confusa. Questa clausola di guardia **add shape pdf** garantisce che tu aggiunga solo contenuti completamente visibili. + +--- + +## Salva il PDF (add page pdf) + +Infine, salviamo il documento in memoria su disco. Puoi scegliere qualsiasi percorso per cui hai i permessi di scrittura. + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +Dopo aver eseguito il programma, apri `ShapeValidated.pdf`—dovresti vedere una singola pagina con un rettangolo bordato ordinatamente, centrato più o meno al centro. + +--- + +## Risultato atteso + +Quando apri il PDF generato, vedrai: + +- Una pagina di dimensione A4. +- Un rettangolo il cui angolo in basso a sinistra inizia a (50 pt, 50 pt) e il cui angolo in alto a destra termina a (600 pt, 800 pt). +- Un bordo **spesso 2 punti** che circonda il rettangolo. + +![Diagramma che mostra come creare un documento PDF con Aspose.PDF](https://example.com/diagram-create-pdf.png "Crea documento PDF – panoramica visiva") + +*Il testo alternativo dell'immagine include la parola chiave principale per soddisfare i requisiti SEO.* + +--- + +## Domande comuni e casi limite + +### E se avessi bisogno di una dimensione di pagina diversa? + +Sostituisci la pagina predefinita con una dimensione personalizzata: + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### Come cambiare il colore del bordo? + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### Posso aggiungere più forme sulla stessa pagina? + +Assolutamente. Basta ripetere il blocco **add shape pdf** con un nuovo `RectangleShape` (o altre sottoclassi di `Shape`) e regolare le coordinate `Rect` di conseguenza. + +### E se il rettangolo supera i limiti della pagina? + +La chiamata `IsShapeWithinBounds` restituirà `false`. Nel codice di produzione potresti voler ridimensionare automaticamente la forma: + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +--- + +## Riepilogo + +Abbiamo percorso l'intero ciclo di vita della **creazione di un documento PDF** con Aspose.PDF: + +1. Inizializza il `Document`. +2. **Add a page PDF** usando `Pages.Add()`. +3. **Draw a rectangle PDF** tramite `RectangleShape`. +4. **Add shape PDF** solo dopo aver confermato che rimane dentro la pagina. +5. Controlla lo **spessore del bordo del rettangolo** con `BorderInfo`. +6. Salva il file. + +Questo è l'intero flusso di lavoro in meno di 60 righe di codice. + +--- + +## Cosa viene dopo? + +- **Add text**: Usa `TextFragment` per inserire titoli o etichette all'interno del rettangolo. +- **Insert images**: La classe `Image` ti permette di incorporare loghi o grafici. +- **Create tables**: Perfetto per fatture o report di dati. +- **Apply security**: Proteggi il PDF con password se contiene dati sensibili. + +Ognuno di questi argomenti si basa sui fondamenti trattati qui, quindi sei ben posizionato per esplorare scenari più avanzati di generazione PDF. + +--- + +### Continua a sperimentare + +Non fermarti a un solo rettangolo—gioca con forme, colori e stili di linea diversi. L'API di Aspose.PDF è ricca, e più sperimenti più ti sentirai a tuo agio. Se incontri un problema, la documentazione ufficiale di Aspose è un ottimo supporto, ma ricorda che il codice mostrato sopra è una soluzione completa, pronta per il copy‑and‑paste, che puoi eseguire subito. + +Buona programmazione, e che i tuoi PDF vengano sempre renderizzati esattamente come li hai immaginati! + +{{< /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 ab686be1c..11ded311b 100644 --- a/pdf/italian/net/document-manipulation/_index.md +++ b/pdf/italian/net/document-manipulation/_index.md @@ -216,7 +216,7 @@ Scopri come inserire pagine in un PDF utilizzando Aspose.PDF per .NET. Questa gu Scopri come inserire pagine in un PDF utilizzando Aspose.PDF per .NET con questa guida passo passo. Semplifica il flusso di lavoro dei tuoi documenti in modo efficiente. ### [Inserire una pagina vuota in un PDF utilizzando Aspose.PDF .NET: una guida completa](./aspose-pdf-net-insert-empty-page/) -Scopri come inserire pagine vuote nei documenti PDF con facilità utilizzando Aspose.PDF per .NET. Segui questa guida passo passo per migliorare le tue capacità di manipolazione dei documenti. +Scopri come inserire pagine vuote nei documenti PDF con facilità utilizzando Aspose.PDF .NET. Segui questa guida passo passo per migliorare le tue capacità di manipolazione dei documenti. ### [Padroneggia il metodo MakeNUp di Aspose.PDF .NET per layout PDF efficienti](./aspose-pdf-net-make-nup-method-pdf-layout/) Scopri come riorganizzare in modo efficiente più pagine PDF in nuovi layout utilizzando il metodo MakeNUp di Aspose.PDF .NET. Ideale per newsletter, brochure e report. @@ -311,6 +311,9 @@ Scopri come dividere PDF multipagina e creare nuovi file PDF utilizzando Aspose. ### [Guida definitiva alla manipolazione di PDF con Aspose.PDF .NET: carica, salva e sostituisci il testo in modo efficiente](./master-pdf-manipulation-aspose-pdf-net/) Scopri come padroneggiare la manipolazione dei PDF utilizzando Aspose.PDF per .NET. Questa guida illustra come caricare, salvare e sostituire il testo nei PDF, ideale per gli sviluppatori che cercano efficienza. +### [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. + ## Risorse aggiuntive - [Aspose.PDF per la documentazione di rete](https://docs.aspose.com/pdf/net/) diff --git a/pdf/italian/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/italian/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..4d50cc8f2 --- /dev/null +++ b/pdf/italian/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,250 @@ +--- +category: general +date: 2026-03-06 +description: Scopri come redigere PDF usando Aspose PDF in C#. Questa guida passo‑passo + mostra come caricare un documento PDF in C#, accedere alla prima pagina del PDF + e rimuovere un'immagine dal PDF. +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: it +og_description: Come redigere rapidamente un PDF con Aspose PDF in C#. Carica il documento + PDF, accedi alla prima pagina del PDF e rimuovi l'immagine dal PDF in poche righe + di codice. +og_title: Come censurare PDF in C# – Tutorial PDF di Aspose +tags: +- Aspose PDF +- C# +- PDF Redaction +title: Come censurare PDF in C# con Aspose PDF – Guida completa +url: /it/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come redigere PDF in C# con Aspose PDF – Guida completa + +Ti sei mai chiesto **come redigere PDF** senza sforzo? Forse ti è stato consegnato un contratto che nasconde un logo riservato, o un report che mostra ancora un’immagine segnaposto da cancellare. In quei momenti avrai bisogno di un metodo affidabile e programmatico per rimuovere quel contenuto—senza ricorrere a trucchi manuali di Acrobat. + +In questo tutorial percorreremo una soluzione concisa, end‑to‑end, che **carica un documento PDF in C#**, **accede alla prima pagina PDF**, e poi **rimuove l’immagine dal PDF** usando la potente libreria **Aspose PDF**. Alla fine avrai un PDF completamente redatto pronto per la distribuzione, e comprenderai perché ogni riga di codice è importante. + +> **Consiglio professionale:** Aspose PDF funziona con .NET Framework 4.6+ e .NET Core 3.1+, quindi sei coperto sia su Windows, Linux, sia macOS. + +--- + +![how to redact pdf example](redact-pdf-before-after.png){alt="how to redact pdf example"} + +## Cosa ti serve + +- **Aspose.PDF for .NET** (ultimo pacchetto NuGet) +- Un **ambiente di sviluppo C#** (Visual Studio, Rider o VS Code) +- Un PDF di esempio che contiene una risorsa immagine da cancellare (lo chiameremo `Sensitive.pdf`) + +Nessun tool di terze parti aggiuntivo, nessun OCR, solo codice puro. + +--- + +## Passo 1: Caricare il documento PDF in C# – Il primo passo + +Prima di poter redigere qualcosa, devi caricare il file in memoria. La classe `Document` è il punto di ingresso per ogni operazione di Aspose PDF. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**Perché è importante:** +`Document` analizza l’intera struttura del PDF, creando un modello di oggetti che ti permette di manipolare pagine, risorse e annotazioni. Se il file non può essere caricato (percorso errato, PDF corrotto), viene lanciata immediatamente un’eccezione—così sai subito che qualcosa non va. + +### Insidia comune + +> *“Ottengo un `FileNotFoundException` anche se il file esiste.”* +> Assicurati che il percorso sia assoluto o che la directory di lavoro del progetto corrisponda alla posizione di `Sensitive.pdf`. Usare `Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")` può aiutare a evitare problemi di percorsi relativi. + +--- + +## Passo 2: Accedere alla prima pagina PDF – Dove si trova l’immagine + +Le immagini sono memorizzate come risorse per pagina. In molti PDF semplici la prima pagina è quella colpevole, quindi prendiamola. + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**Perché è importante:** +Aspose PDF utilizza un indice basato su 1 per le pagine, un po’ insolito rispetto alla maggior parte delle collezioni .NET. Accedere alla pagina sbagliata potrebbe significare redigere il contenuto sbagliato—o peggio, lasciare intatta l’immagine sensibile. + +### Considerazione per casi limite + +Se il tuo documento non ha pagine (un PDF vuoto), provare a eseguire `pdfDocument.Pages[1]` genererà un `IndexOutOfRangeException`. Una semplice verifica può salvarti: + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +--- + +## Passo 3: Rimuovere l’immagine dal PDF – Redigere la risorsa + +Aspose PDF ti consente di eliminare una risorsa per nome. La maggior parte delle immagini è nominata `Im1`, `Im2`, ecc., ma puoi ispezionare `firstPage.Resources.Images` per confermare. + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**Perché è importante:** +`RedactResource` rimuove l’immagine *e* tutti i riferimenti ad essa nella pagina, garantendo che lo spazio vuoto venga riempito da un’area bianca anziché da un link interrotto. È un modo pulito e conforme allo standard PDF per cancellare contenuti. + +### Come trovare il nome corretto dell’immagine + +Se non sei sicuro che l’immagine si chiami `"Im1"`: + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +Esegui questo frammento, controlla l’output nella console e sostituisci `"Im1"` con la chiave reale che vedi. + +--- + +## Passo 4: Salvare il PDF redatto – Concludere il lavoro + +Ora che l’immagine indesiderata è sparita, scrivi le modifiche su disco. + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**Perché è importante:** +Salvare in un **nuovo** file mantiene intatto l’originale—una rete di sicurezza nel caso tu debba tornare indietro. Se devi sovrascrivere, punta semplicemente il metodo `Save` al percorso originale, ma sappi che l’operazione è irreversibile. + +### Verifica del risultato + +Apri `Redacted.pdf` con qualsiasi visualizzatore PDF. Il punto dove era l’immagine dovrebbe apparire vuoto, e il resto del documento dovrebbe essere identico all’originale. Se il layout della pagina sembra spostato, ricontrolla di aver rimosso solo la risorsa prevista e non un XObject condiviso. + +--- + +## Esempio completo funzionante + +Mettendo tutto insieme, ecco il programma completo, pronto da eseguire: + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**Output previsto** (nella console): + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +Quando apri `Redacted.pdf`, l’immagine che era `Im1` sarà sparita, lasciando una pagina pulita. + +--- + +## Domande frequenti + +### Funziona con PDF criptati? + +Se il PDF di origine è protetto da password, passa la password al costruttore `Document`: + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### E se l’immagine appare su più pagine? + +Itera su ogni pagina e chiama `RedactResource` sullo stesso nome immagine (o scopri il nome per pagina). Esempio: + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### Posso redigere anche il testo allo stesso modo? + +Sì—usa `page.Contents.RedactText("confidential")` o impiega la classe `Redactor` per pattern più avanzati. È un intero tutorial a sé stante, ma il principio è lo stesso di quello usato per le immagini. + +--- + +## Conclusioni – Cosa abbiamo realizzato + +Abbiamo risposto a **come redigere PDF** programmaticamente: + +1. **Caricando il documento PDF in C#** con Aspose PDF. +2. **Accedendo alla prima pagina PDF** per individuare la risorsa target. +3. **Rimuovendo l’immagine dal PDF** tramite `RedactResource`. +4. **Salvando** la versione pulita in modo sicuro. + +Questo approccio è veloce, ripetibile e funziona in processi batch—perfetto per pipeline di conformità o generazione automatica di report. + +Se vuoi andare oltre, considera di esplorare: + +- **Redazione batch** su un’intera cartella di PDF. +- **Redazione del testo** con espressioni regolari usando `Redactor`. +- **Aggiunta di una filigrana** dopo la redazione per indicare “sanitizzato”. + +Provalo, adatta la logica del nome immagine ai tuoi file, + +{{< /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/performance-optimization/_index.md b/pdf/italian/net/performance-optimization/_index.md index 58b307be9..ff2d7f4f2 100644 --- a/pdf/italian/net/performance-optimization/_index.md +++ b/pdf/italian/net/performance-optimization/_index.md @@ -50,6 +50,9 @@ Padroneggia l'arte di convertire file SVG in PDF con precisione ed efficienza ut ### [Come rimuovere i font dai PDF utilizzando Aspose.PDF per .NET: riduzione delle dimensioni dei file e miglioramento delle prestazioni](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) Scopri come estrarre i font dai tuoi file PDF utilizzando Aspose.PDF per .NET. Ottimizza le prestazioni dei PDF, riduci le dimensioni dei file e migliora i tempi di caricamento con questa guida passo passo. +### [Come comprimere PDF con Aspose.PDF – Guida rapida](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) +Scopri come comprimere rapidamente i file PDF usando Aspose.PDF, riducendo le dimensioni senza perdere qualità. + ## Risorse aggiuntive - [Aspose.PDF per la documentazione di rete](https://docs.aspose.com/pdf/net/) diff --git a/pdf/italian/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/italian/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..2b8fdd339 --- /dev/null +++ b/pdf/italian/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,205 @@ +--- +category: general +date: 2026-03-06 +description: Scopri come comprimere PDF istantaneamente usando Aspose.Pdf. Questa + guida mostra come ridurre le dimensioni del file PDF con compressione PDF senza + perdita. +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: it +og_description: Come comprimere i PDF usando Aspose.Pdf? Segui questo tutorial passo‑passo + per ridurre le dimensioni dei file PDF, ottenere una compressione PDF senza perdita + e salvare file PDF ottimizzati. +og_title: come comprimere PDF con Aspose.Pdf – guida rapida +tags: +- pdf +- aspnet +- csharp +title: come comprimere PDF con Aspose.Pdf – guida rapida +url: /it/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# come comprimere pdf con Aspose.Pdf – guida rapida + +Ti sei mai chiesto **come comprimere pdf** senza trasformarli in un caos sfocato? Non sei solo. La maggior parte degli sviluppatori si imbatte in un ostacolo quando deve **ridurre le dimensioni del file pdf** per allegati email, upload web o limiti di archiviazione, temendo però di perdere la qualità delle immagini. + +In questo tutorial percorreremo un esempio completo, pronto‑all’uso, che mostra esattamente **come comprimere pdf** usando l’ottimizzatore integrato di Aspose.Pdf. Alla fine saprai **ridurre le dimensioni del file pdf**, mantenere le tue immagini nitide con **compressione pdf lossless**, e infine **salvare pdf ottimizzati** che funzionano correttamente con qualsiasi visualizzatore. + +## Cosa imparerai + +- Caricare in memoria un PDF pesante (ad esempio, uno pieno di immagini ad alta risoluzione). +- Applicare l’ottimizzatore di Aspose.Pdf con le impostazioni predefinite lossless. +- Persistere il risultato in un nuovo file più piccolo. +- Suggerimenti per affinare la compressione se ti serve una riduzione ancora più marcata. + +Nessun tool esterno, nessun trucco misterioso da riga di comando—solo codice C# pulito e spiegazioni chiare. + +## Prerequisiti + +Prima di immergerci, assicurati di avere: + +| Requisito | Perché è importante | +|-----------|----------------------| +| .NET 6.0 o successivo (o .NET Framework 4.6+) | Aspose.Pdf supporta entrambi; runtime più recenti offrono migliori prestazioni. | +| Pacchetto NuGet Aspose.Pdf per .NET (`Aspose.Pdf`) | La classe `Document` si trova qui. | +| Un PDF con immagini grandi (ad esempio `HeavyImages.pdf`) | Ti fornisce qualcosa di concreto da ridurre. | +| Visual Studio, Rider o qualsiasi editor C# tu preferisca | Il comfort è fondamentale—scegli ciò che ti sembra più naturale. | + +> **Consiglio professionale:** Se lavori su una pipeline CI/CD, aggiungi il riferimento NuGet nel tuo file `.csproj` così la build non lo dimenticherà mai. + +```xml + + + +``` + +## Passo 1: Carica il PDF che vuoi comprimere + +Per prima cosa abbiamo bisogno di un oggetto `Document` che punti al file sorgente. Pensalo come aprire un libro prima di iniziare a modificare i capitoli. + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*Perché è importante:* Il caricamento del file permette ad Aspose.Pdf di leggere tutte le risorse incorporate (immagini, font, ecc.). Senza questo passaggio non c’è nulla da **ridurre le dimensioni del file pdf**. + +## Passo 2: Applica la compressione PDF lossless + +Aspose.Pdf fornisce un metodo `Optimize` che, per impostazione predefinita, esegue una routine di **compressione pdf lossless**. Rimuove oggetti ridondanti, ricomprime le immagini mantenendo la stessa fedeltà visiva e elimina i font non utilizzati. + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*Perché è importante:* L’ottimizzatore predefinito è progettato per **ridurre le dimensioni del file pdf** preservando ogni pixel. Se in seguito decidi di tollerare una piccola perdita di qualità, le `OptimizationOptions` commentate ti permettono di scambiare qualche kilobyte in più per una maggiore velocità. + +## Passo 3: Salva il PDF ottimizzato + +Ora che il documento è più snello, lo scriviamo in un nuovo file. Mantenere intatto l’originale è una buona abitudine, soprattutto quando provi impostazioni diverse. + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +Dopo il salvataggio, confronta le dimensioni dei file: + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +Dovresti vedere una diminuzione evidente—spesso **30‑70 %** a seconda di quante immagini ad alta risoluzione erano presenti nel sorgente. + +![illustrazione su come comprimere pdf](image.png "come comprimere pdf") + +*Testo alternativo immagine:* come comprimere pdf – prima e dopo l’ottimizzazione + +## Avanzato: Regolare la compressione per scenari specifici + +Sebbene l’ottimizzatore predefinito sia ottimo per la maggior parte dei casi, a volte è necessario **ridurre le dimensioni del file pdf** ancora di più: + +| Scenario | Impostazione da regolare | Effetto | +|----------|--------------------------|--------| +| PDF con molte immagini raster | `CompressImages = true` + `ImageQuality` più bassa (es. 70) | Riduce il numero di byte delle immagini, con una leggera perdita visiva. | +| PDF contenenti font duplicati | `RemoveUnusedObjects = true` | Elimina i font non referenziati. | +| PDF con metadati ingombranti | `RemoveMetadata = true` | Rimuove blocchi XML/metadati nascosti. | + +Puoi combinare queste impostazioni in un oggetto `OptimizationOptions` e passarle a `pdfDoc.Optimize(options)`. + +## Domande frequenti & casi particolari + +**E se il PDF è già ottimizzato?** +Aspose.Pdf eseguirà comunque la scansione del documento, ma la variazione di dimensione sarà minima. Eseguire l’ottimizzatore su un file già snello è sicuro; non corromperà nulla. + +**Posso comprimere PDF criptati?** +Sì, ma devi fornire la password prima di chiamare `Optimize`. Esempio: + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**E per i PDF con grafica vettoriale?** +Gli oggetti vettoriali sono già leggeri, quindi l’ottimizzatore si concentra su immagini raster e metadati. Aspettati guadagni modesti per file puramente vettoriali. + +## Esempio completo, eseguibile + +Di seguito trovi un’app console autonoma che puoi copiare‑incollare in un nuovo `.csproj`. Dimostra tutto ciò di cui abbiamo parlato—from loading to verification. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +Esegui il programma, apri `Optimized.pdf` in qualsiasi visualizzatore, e vedrai lo stesso layout di pagina, le stesse immagini nitide, ma un file più snello. Questa è la magia della **compressione pdf lossless**. + +## Conclusione + +Abbiamo coperto **come comprimere pdf** usando l’ottimizzatore integrato di Aspose.Pdf, mostrato un flusso pratico per **ridurre le dimensioni del file pdf**, e spiegato le ragioni di ogni passaggio. Seguendo il modello a tre passi—carica, ottimizza, salva—puoi **ridurre le dimensioni del file pdf** al volo, mantenere intatte le tue immagini con **compressione pdf lossless**, e salvare con fiducia **pdf ottimizzati** per il consumo a valle. + +Pronto per la prossima sfida? Prova a concatenare questo ottimizzatore con uno script batch per elaborare un’intera cartella, o sperimenta le `OptimizationOptions` opzionali per spremere gli ultimi kilobyte. Gli stessi principi valgono sia che tu stia lavorando su uno strumento desktop, un’API web o un job batch lato server. + +Hai altre domande sulla gestione dei PDF, le particolarità di Aspose.Pdf o I/O file in .NET? Lascia un commento qui sotto e continuiamo la conversazione. Buona compressione! + +{{< /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/programming-with-security-and-signatures/_index.md b/pdf/italian/net/programming-with-security-and-signatures/_index.md index 896fc2071..ea3403a91 100644 --- a/pdf/italian/net/programming-with-security-and-signatures/_index.md +++ b/pdf/italian/net/programming-with-security-and-signatures/_index.md @@ -34,6 +34,8 @@ Questo tutorial offre una panoramica dettagliata di metodi e tecniche per garant | [Firma con la smart card utilizzando la firma del file PDF](./sign-with-smart-card-using-pdf-file-signature/) | Scopri come firmare file PDF utilizzando una smart card con Aspose.PDF per .NET. Segui questa guida passo passo per firme digitali sicure. | | [Firma con la smart card utilizzando il campo firma](./sign-with-smart-card-using-signature-field/) | Scopri come firmare in modo sicuro i PDF utilizzando una smart card con Aspose.PDF per .NET. Segui la nostra guida passo passo per una facile implementazione. | | [Verifica le firme PDF in C# – Come leggere i file PDF firmati](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) | Scopri come leggere e analizzare le firme digitali nei PDF usando C# e Aspose.PDF per .NET. | +| [Come verificare la firma in PDF usando C# – Guida completa Aspose](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) | Scopri come verificare le firme PDF con C# usando Aspose.PDF, passo passo, con esempi pratici. | +| [Aggiungi firma digitale PDF in C# – Guida completa passo‑per‑passo](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) | Scopri come aggiungere una firma digitale a un PDF con C# usando Aspose.PDF, guida completa passo passo. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/italian/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/italian/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..69eb618dc --- /dev/null +++ b/pdf/italian/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,255 @@ +--- +category: general +date: 2026-03-06 +description: Aggiungi una firma digitale a PDF usando Aspose.PDF. Impara a creare + una firma PKCS7 detached e a firmare un PDF con un file PFX tramite una callback + personalizzata. +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: it +og_description: Aggiungi rapidamente una firma digitale al PDF. Questa guida mostra + come creare una firma PKCS7 detached e firmare un PDF usando un file PFX in C#. +og_title: Aggiungi firma digitale PDF in C# – Tutorial completo di programmazione +tags: +- Aspose.PDF +- C# +- Digital Signature +title: Aggiungi firma digitale PDF in C# – Guida completa passo passo +url: /it/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aggiungere la firma digitale PDF – Guida completa passo‑passo + +Hai mai avuto bisogno di **add digital signature pdf** file ma non sapevi da dove cominciare? Non sei solo; molti sviluppatori si trovano nella stessa situazione quando la documentazione richiede una firma legalmente vincolante e il codice conosce solo come generare PDF semplici. + +In questo tutorial ti guideremo passo passo attraverso una soluzione pratica che ti permette di **add digital signature pdf** documenti usando Aspose.PDF per .NET, creare una firma PKCS#7 detached, e firmare il PDF con un certificato PFX—tutto in puro C#. Alla fine avrai uno snippet pronto all'uso, comprenderai il “perché” di ogni chiamata e saprai come adattare l'approccio ai casi limite. + +## Cosa imparerai + +- Come caricare un PDF non firmato e prepararlo per la firma. +- Il funzionamento di una **create pkcs7 detached signature** e perché potresti preferire una firma detached rispetto a una embedded. +- I passaggi esatti per **sign pdf using pfx** con una callback personalizzata, che ti dà il pieno controllo sul processo crittografico. +- Suggerimenti per risolvere i problemi comuni (certificato mancante, algoritmo di hash errato, ecc.). + +### Prerequisiti + +| Requisito | Motivo | +|-------------|--------| +| .NET 6.0 or later | Funzionalità moderne del linguaggio e migliore gestione della memoria. | +| Aspose.PDF for .NET (NuGet package) | Fornisce `PdfFileSignature`, `PKCS7Detached` e altre utility PDF. | +| A valid PFX file (`.pfx`) with private key | Necessario per il passaggio **sign pdf using pfx**. | +| Basic C# knowledge | Il codice è semplice, ma comprendere le istruzioni `using` aiuta. | + +> **Consiglio professionale:** Mantieni la password del tuo PFX fuori dal controllo del codice sorgente—usa variabili d'ambiente o Azure Key Vault per la produzione. + +--- + +## Come aggiungere la firma digitale PDF con Aspose.PDF + +Di seguito suddividiamo il processo in cinque passaggi comprensibili. Ogni passaggio include uno snippet di codice, una spiegazione del *perché* è importante e un rapido controllo di coerenza. + +![Screenshot of signed PDF in a viewer, showing a visible signature field](/images/add-digital-signature-pdf.png "add digital signature pdf example") + +### Passo 1 – Carica il documento PDF non firmato + +Per prima cosa abbiamo bisogno di un oggetto `Document` che rappresenti il PDF che desideri firmare. L'uso di `using var` garantisce che il handle del file venga rilasciato automaticamente. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**Perché?** +Aspose tratta un PDF come un grafo di oggetti; caricarlo ti dà accesso a pagine, annotazioni e al flusso di byte interno che verrà successivamente hashato per la firma. + +### Passo 2 – Inizializza l'helper PdfFileSignature + +`PdfFileSignature` è la classe che applica effettivamente l'involucro crittografico. Funziona mano‑a‑mano con `PKCS7Detached`. + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**Perché?** +Separare il firmatario dal documento ti permette di riutilizzare la stessa istanza `Document` per altre operazioni (ad esempio, aggiungere filigrane) prima di finalizzare la firma. + +### Passo 3 – Crea firma PKCS#7 Detached (Create PKCS7 Detached Signature) + +Una **PKCS#7 detached signature** memorizza solo l'hash del PDF, non il PDF stesso. Questo è ideale per documenti di grandi dimensioni o quando è necessario mantenere il file originale invariato. + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**Perché una callback personalizzata?** +A volte la chiave di firma risiede in un HSM o in Azure Key Vault, e non è possibile estrarre direttamente la chiave privata. Fornendo `CustomSignHash` si passa l'hash al servizio che detiene la chiave, mantenendo sicuro il materiale privato. + +**Cosa succede se non ti serve una callback personalizzata?** +Puoi omettere `CustomSignHash`; Aspose utilizzerà automaticamente la chiave privata contenuta nel PFX. Tuttavia, il percorso personalizzato è più flessibile e si allinea ai requisiti di conformità. + +### Passo 4 – Applica la firma a una pagina specifica (Sign PDF Using PFX) + +Ora posizioniamo effettivamente un campo firma visibile sulla pagina. Il rettangolo definisce la posizione e le dimensioni (in punti). + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**Perché specificare un rettangolo?** +Una firma visibile aiuta gli utenti finali a vedere che il documento è firmato. Se imposti `isVisible` a `false`, la firma diventa invisibile—ancora valida, ma più difficile da individuare. + +**Caso limite:** Se il PDF non ha pagine (file vuoto) la chiamata genera `ArgumentOutOfRangeException`. Verifica sempre che `pdfDocument.Pages.Count > 0` prima di firmare. + +### Passo 5 – Salva il PDF firmato + +Infine, salva il documento firmato su disco. Puoi anche trasmetterlo direttamente in una risposta in ASP.NET Core. + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**Suggerimento per la verifica:** Apri il file risultante in Adobe Acrobat Reader. Il pannello delle firme dovrebbe mostrare un segno di spunta verde (a condizione che il certificato sia attendibile sulla macchina). + +--- + +## Esempio completo funzionante + +Mettendo tutto insieme, ecco un programma console autonomo che puoi copiare‑incollare ed eseguire (dopo aver regolato percorsi e password). + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**Output previsto:** La console stampa “✅ PDF signed successfully!” e il file `CustomSigned.pdf` appare nella stessa cartella. Quando aperto, vedrai un widget di firma alle coordinate (100,100)‑(300,200). + +--- + +## Domande frequenti e casi limite + +### Cosa succede se il mio PFX è protetto con una smart card? + +Usa il delegato `CustomSignHash` per inoltrare l'hash al driver della smart‑card. Il driver restituirà i byte della firma, e Aspose li incorporerà senza mai esporre la chiave privata. + +### Posso firmare più pagine contemporaneamente? + +Sì. Chiama `pdfSigner.Sign` all'interno di un ciclo, regolando `pageNumber` e opzionalmente il rettangolo per ogni pagina. Ricorda che ogni chiamata aggiunge un oggetto firma separato; alcuni visualizzatori potrebbero elencarli singolarmente. + +### Come modifico l'algoritmo di hash? + +`PKCS7Detached` usa di default SHA‑256, ma puoi impostare la proprietà `HashAlgorithm`: + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +Assicurati che il tuo provider di firma supporti l'algoritmo scelto. + +### Cosa succede se la catena di certificati non è attendibile sulla macchina client? + +Includi l'intera catena nel PFX, o distribuisci il certificato radice nello store di fiducia dell'utente finale. Altrimenti Acrobat segnalerà “Signature is unknown”. + +### Una firma detached è compatibile con PDF/A‑3? + +PDF/A‑3 richiede firme incorporate, quindi una PKCS#7 detached potrebbe non essere conforme. In tal caso rimuovi il delegato `CustomSignHash` e lascia che Aspose gestisca la firma internamente, creando una firma incorporata. + +## Best practice per la produzione + +1. **Non codificare mai le password.** Prelevale da variabili d'ambiente o da un gestore di segreti. +2. **Convalida il PDF prima di firmare.** I file corrotti causano `PdfFileSignatureException`. +3. **Registra l'algoritmo di hash e il thumbprint del certificato** per le tracce di audit. +4. **Testa con più visualizzatori PDF** (Adobe Reader, Foxit, Chrome) per assicurarti che la firma appaia come previsto. +5. **Considera il timestamping** aggiungendo una richiesta TSA (Time‑Stamp Authority), che rafforza ulteriormente la validità legale della firma. + +## Conclusione + +Ti abbiamo appena mostrato come **add digital signature pdf** file usando Aspose.PDF, creare una **PKCS#7 detached signature**, e **sign pdf using pfx** con una callback personalizzata. L'esempio completo funziona subito, e le spiegazioni ti danno la fiducia per modificare il processo per HSM, servizi di timestamp o conformità PDF/A. + +Successivamente, potresti esplorare **signing multiple documents in batch**, integrare **Azure Key Vault** per l'archiviazione sicura delle chiavi, o aggiungere **visual customization** all'aspetto della firma. Ognuno di questi argomenti si basa direttamente sulle fondamenta poste qui. + +Se hai seguito i passaggi, ora disponi di una soluzione solida e degna di citazione che puoi condividere con i colleghi—o anche citare in una risposta di un assistente AI. Buona firma, e sentiti libero di lasciare un commento se qualcosa non è chiaro! + +{{< /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/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/italian/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..f5e9941be --- /dev/null +++ b/pdf/italian/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,199 @@ +--- +category: general +date: 2026-03-06 +description: Scopri come verificare la firma in un PDF con Aspose PDF in C#. Verifica + della firma PDF passo‑passo, valida la firma PDF e gestisci le firme compromesse. +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: it +og_description: Come verificare la firma in un PDF con Aspose PDF. Segui questa guida + per eseguire la verifica della firma PDF, convalidare la firma PDF e rilevare firme + compromesse in C#. +og_title: Come verificare la firma in PDF usando C# – Guida completa di Aspose +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: Come verificare la firma in PDF usando C# – Guida completa di Aspose +url: /it/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come verificare la firma in un PDF usando C# – Guida completa Aspose + +Ti sei mai chiesto **come verificare la firma** in un PDF senza impazzire? Non sei il solo. Molti sviluppatori si trovano in difficoltà quando devono eseguire **pdf signature verification** per motivi di conformità o audit, e l'approccio “basta fidarsi della libreria” può ritorcersi contro. + +In questo tutorial percorreremo una soluzione pratica, end‑to‑end, che non solo **validate pdf signature** ma ti dice anche se la firma è stata manomessa. Useremo la libreria **Aspose PDF**, il che significa che il codice funziona su .NET 6+, .NET Framework 4.6+ e anche .NET Core. Alla fine avrai uno snippet pronto all'uso da inserire in qualsiasi progetto C#. + +## Cosa ti serve + +- **Aspose.Pdf** pacchetto NuGet (ultima versione al momento della scrittura – 23.12). +- Ambiente di sviluppo .NET (Visual Studio, Rider o VS Code). +- Un file PDF firmato (lo chiameremo `Signed.pdf`). +- Conoscenze di base di C# – niente di speciale, solo le consuete istruzioni `using` e I/O su `Console`. + +Questo è tutto. Nessun servizio aggiuntivo, nessun file di configurazione oscuro. Pronto? Immergiamoci. + +![diagramma di verifica della firma](image.png "verifica della firma") + +## Passo 1: Configura il tuo progetto per la verifica della firma PDF + +Prima di poter chiamare qualsiasi API di Aspose devi referenziare la libreria. Apri il terminale o la Package Manager Console ed esegui: + +```bash +dotnet add package Aspose.Pdf +``` + +Oppure, se preferisci l'interfaccia grafica, cerca **Aspose.Pdf** nel NuGet Package Manager e installalo. Questo passaggio è cruciale perché senza l'assembly **aspose pdf signature** non potrai accedere alla classe `PdfFileSignature` in seguito. + +> **Pro tip:** Target .NET 6 o versioni successive per ottenere le migliori prestazioni ed evitare avvisi di compatibilità legacy. + +## Passo 2: Carica il documento PDF + +Ora che il pacchetto è installato, possiamo caricare il PDF da controllare. La classe `Document` rappresenta l'intero file in memoria. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**Perché è importante:** Il caricamento del documento ci dà accesso alle sue strutture interne, inclusi i campi firma. Se il file è mancante o corrotto, `Document` lancerà un'eccezione, che puoi catturare per offrire un'esperienza utente più fluida. + +## Passo 3: Crea l'oggetto Aspose PdfFileSignature + +Con il documento in mano, il passo successivo è istanziare `PdfFileSignature`. Questa classe façade sa come leggere, verificare e manipolare le firme digitali incorporate nei PDF. + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**Spiegazione:** Il costruttore `PdfFileSignature` accetta il `Document` caricato. Internamente analizza il dizionario della firma, rendendo disponibili metodi come `VerifySignature` e `IsSignatureCompromised`. + +## Passo 4: Verifica l'integrità della firma + +Il cuore della **pdf signature verification** è il metodo `VerifySignature`. Restituisce `true` se l'hash crittografico corrisponde al valore memorizzato e la catena di certificati è attendibile (supponendo che tu abbia configurato un trust manager, cosa che tralasceremo per brevità). + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +Se hai più firme, cambia semplicemente l'indice (`0`, `1`, …). Il metodo controlla sia l'integrità sia la fiducia in un unico passaggio, ed è per questo il metodo di riferimento nella maggior parte degli scenari. + +## Passo 5: Rileva una firma compromessa + +Anche una firma “valida” può essere compromessa se il documento è stato modificato dopo la firma. Aspose fornisce `IsSignatureCompromised` per rilevare questo caso sottile. + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**Quando usarlo:** Supponi che un PDF sia firmato, poi un utente aggiunga un commento o modifichi una pagina. L'hash sarà diverso, e `IsSignatureCompromised` restituirà `true` mentre `VerifySignature` potrebbe ancora essere `true` se il certificato è corretto. Controllare entrambi i flag ti dà un quadro completo. + +## Passo 6: Interpreta i risultati + +Ora abbiamo due booleani: `isSignatureValid` e `isSignatureCompromised`. Trasformiamoli in un output console amichevole. + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### Output previsto + +| Scenario | Output console | +|---------------------------------------------------|------------------------------------| +| Valida e non compromessa | `Signature OK` | +| Valida ma compromessa (documento modificato) | `Signature compromised!` | +| Non valida (certificato non attendibile, hash non corrispondente) | `Signature verification failed` | + +Quella tabella ti aiuta a mappare rapidamente i risultati booleani in messaggi leggibili. + +## Esempio completo funzionante + +Mettendo tutto insieme, ecco il programma completo, pronto all'esecuzione: + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +Copia, incolla, regola il `pdfPath` e avvia. Se tutto è configurato correttamente vedrai uno dei tre messaggi elencati sopra. + +## Problemi comuni e consigli per la verifica della firma PDF + +| Problema | Perché accade | Come risolvere / evitare | +|----------|----------------|--------------------------| +| **Missing Aspose license** | La valutazione gratuita aggiunge una filigrana e può limitare alcune chiamate API. | Registra una licenza (`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`). | +| **Multiple signatures but wrong index** | Potresti controllare la firma sbagliata, generando falsi negativi. | Itera su `signatureVerifier.GetSignatureCount()` e ispeziona ciascuna. | +| **Certificate chain not trusted** | `VerifySignature` fallisce se la CA radice non è nel trusted store. | Aggiungi la CA firmataria al Windows Trusted Root store o configura un `CertificateValidator` personalizzato. | +| **File locked by another process** | Aprire un PDF ancora aperto altrove può generare un `IOException`. | Usa un `FileStream` con `FileShare.ReadWrite` o copia il file in una cartella temporanea prima. | +| **Incorrect PDF path** | Un semplice errore di battitura genera `FileNotFoundException`. | Verifica il percorso con `File.Exists(pdfPath)` prima di caricare. | + +### Casi limite che potresti incontrare + +- **Detached signatures**: Alcuni PDF memorizzano le firme esternamente. `PdfFileSignature` di Aspose attualmente supporta solo firme incorporate. +- **Timestamped signatures**: Se devi verificare l'autorità di timestamp (TSA), dovrai chiamare `VerifySignature` con un oggetto `VerificationOptions` personalizzato—fuori dallo scopo di questa breve guida, ma importante per progetti ad alta conformità. + +## Prossimi passi – Estendere la tua logica di validazione + +Ora che hai padroneggiato le basi di **how to verify signature**, potresti voler: + +1. **Validate PDF signature** contro un elenco di certificati attendibili (es. PKI aziendale). +2. **Export signature details** (nome del firmatario, data/ora della firma, thumbprint del certificato) usando `GetSignatureInfo`. +3. **Batch‑process multiple PDFs** in una cartella, registrando i risultati in un CSV per scopi di audit. + +Tutte queste sono estensioni semplici del codice appena mostrato e ti mantengono all'interno dello stesso ecosistema **aspose pdf signature**. + +--- + +**In sintesi**, ora sai esattamente **how to verify signature** in un PDF usando C# e Aspose, come rilevare una firma compromessa e cosa fare quando la verifica fallisce. L'approccio è robusto, funziona con firme multiple e può essere integrato in pipeline di elaborazione documenti più ampie. + +Hai una variante di questo scenario? Forse devi firmare PDF invece di verificarli, o stai gestendo PDF criptati. Lascia un commento e approfondiremo insieme questi aspetti. Buon coding! + +{{< /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/programming-with-stamps-and-watermarks/_index.md b/pdf/italian/net/programming-with-stamps-and-watermarks/_index.md index 04f216f56..7a8c90b66 100644 --- a/pdf/italian/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/italian/net/programming-with-stamps-and-watermarks/_index.md @@ -39,6 +39,7 @@ I tutorial di Aspose.PDF "Programmazione con timbri e filigrane" per .NET ti gui | [Tabella nella sezione Intestazione Piè di pagina](./table-in-header-footer-section/) | Scopri come aggiungere facilmente testo al piè di pagina di un file PDF utilizzando Aspose.PDF per .NET. Guida passo passo inclusa per un'integrazione perfetta. | | [Testo nel piè di pagina del file PDF](./text-in-footer/) | Scopri come aggiungere testo nel piè di pagina di un file PDF con Aspose.PDF per .NET. | | [Testo nell'intestazione del file PDF](./text-in-header/) | Impara ad aggiungere intestazioni di testo ai PDF utilizzando Aspose.PDF per .NET con questo tutorial passo passo. Migliora i tuoi documenti in modo efficiente ed efficace. | +| [Crea documento PDF con numerazione Bates in C# – Guida completa](./create-pdf-document-with-bates-numbering-in-c-full-guide/) | Scopri come aggiungere la numerazione Bates ai PDF con Aspose.PDF per .NET, con esempi di codice dettagliati. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/italian/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/italian/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..564a6f936 --- /dev/null +++ b/pdf/italian/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,184 @@ +--- +category: general +date: 2026-03-06 +description: Crea un documento PDF in C# e aggiungi facilmente il numero Bates. Scopri + come aggiungere una pagina vuota al PDF, posizionare un timbro sulla pagina e implementare + la numerazione Bates. +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: it +og_description: Crea un documento PDF in C# e aggiungi la numerazione Bates. Questa + guida mostra come aggiungere una pagina vuota al PDF, posizionare un timbro sulla + pagina e applicare la numerazione Bates. +og_title: Crea documento PDF con numerazione Bates – Tutorial C# +tags: +- Aspose.Pdf +- C# +- PDF automation +title: Crea documento PDF con numerazione Bates in C# – Guida completa +url: /it/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crea documento PDF con numerazione Bates in C# + +Ti è mai capitato di dover **creare documento PDF** in C# e di chiederti come aggiungere un numero Bates senza impazzire? Non sei l'unico: studi legali, tribunali e persino alcuni team di conformità aziendale affrontano quotidianamente questo stesso problema. La buona notizia? Con poche righe di codice Aspose.Pdf puoi generare un PDF nuovissimo, aggiungere una pagina vuota e apporre un corretto numero Bates in un unico flusso fluido. + +In questo tutorial percorreremo l'intero processo: dalla configurazione del progetto, all'aggiunta di una pagina PDF vuota, alla scoperta di **come aggiungere la numerazione Bates**, e infine a **posizionare il timbro nella pagina** e salvare il risultato. Alla fine avrai uno snippet pronto all'uso da inserire in qualsiasi app .NET. Nessun riferimento vago, solo un esempio completo e eseguibile. + +## Di cosa avrai bisogno + +- **.NET 6+** (o .NET Framework 4.6+ – Aspose.Pdf funziona con entrambi) +- **Aspose.Pdf for .NET** pacchetto NuGet (`Install-Package Aspose.Pdf`) +- Un IDE decente (Visual Studio, Rider o VS Code con estensione C#) + +È tutto. Nessun DLL aggiuntivo, nessun servizio esterno. Immergiamoci. + +## Passo 1: Crea documento PDF – Configurazione iniziale + +Prima di tutto, abbiamo bisogno di un nuovo oggetto `Document`. Pensalo come una tela vuota dove vivrà tutto il resto. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **Perché è importante:** La classe `Document` è il punto di ingresso per ogni operazione Aspose. Istanziare questa classe ti dà accesso alla collezione `Pages`, ai metadati e alle impostazioni di sicurezza—tutti i mattoni fondamentali per un PDF professionale. + +## Passo 2: Aggiungi pagina PDF vuota + +Un PDF senza pagine è come un libro senza pagine—praticamente inutile. Aggiungere una pagina vuota è semplice e ci fornisce una superficie su cui apporre il numero Bates. + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **Consiglio professionale:** Se ti servono più pagine, basta chiamare `pdfDocument.Pages.Add()` in un ciclo. Ogni chiamata restituisce un nuovo oggetto `Page` che puoi personalizzare in modo indipendente. + +## Passo 3: Come aggiungere la numerazione Bates – Crea il TextStamp + +Ora arriva il nocciolo della questione: il **numero Bates**. In Aspose.Pdf è semplicemente un `TextStamp` con un flag speciale di artefatto. + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **Perché impostiamo `Artifact`:** Alcuni lettori PDF espongono i numeri Bates come metadati ricercabili. Contrassegnare il timbro come artefatto `BatesNumbering` garantisce che gli strumenti a valle lo riconoscano automaticamente. + +## Passo 4: Posiziona il timbro nella pagina + +Con il timbro pronto, ora **posizioniamo il timbro nella pagina**. Questo è il passaggio in cui il numero visivo appare effettivamente nel PDF. + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **Caso limite:** Se hai bisogno che il numero incrementi su ogni pagina, dovresti iterare su `pdfDocument.Pages` e aggiornare `batesStamp.Value` prima di chiamare `AddStamp`. L'esempio qui è semplice, con un valore statico “Bates‑001”. + +## Passo 5: Salva e verifica il risultato + +Infine, salviamo il PDF su disco. Scegli una cartella a cui hai accesso in scrittura; altrimenti otterrai una `UnauthorizedAccessException`. + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +Quando apri `BatesStamped.pdf` in qualsiasi visualizzatore dovresti vedere un piccolo “Bates‑001” posizionato ordinatamente nell'angolo in basso a destra della pagina vuota. + +> **Output previsto:** +> ![PDF with Bates number stamp](image-placeholder.png "PDF with Bates number stamp") +> *Testo alternativo: PDF con timbro del numero Bates nell'angolo in basso a destra.* + +Se il numero non compare, ricontrolla i valori dei margini e assicurati che le dimensioni della pagina non siano troppo piccole (il formato A4 predefinito funziona bene). Verifica inoltre che il flag `Artifact` non venga rimosso da eventuali strumenti di post‑processing. + +## Esempio completo funzionante + +Di seguito trovi il programma completo, pronto per il copia‑incolla. Include tutte le direttive `using` e i commenti per tenerti orientato. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +Esegui il programma, apri il PDF e vedrai il numero Bates esattamente dove gli abbiamo indicato di posizionarsi. 🎉 + +## Variazioni comuni e problemi + +| Scenario | Cosa cambiare | Perché | +|----------|----------------|-----| +| **Pagine multiple, numeri incrementali** | Itera su `pdfDocument.Pages`, imposta `batesStamp.Value = $"Bates-{i:D3}"` prima di `AddStamp` | Fornisce a ogni pagina un identificatore unico, tipico per i fascicoli legali | +| **Posizionamento diverso (alto‑sinistra)** | Modifica `HorizontalAlignment = HorizontalAlignment.Left` e `VerticalAlignment = VerticalAlignment.Top` | Alcune organizzazioni preferiscono il numero nell'intestazione invece che nel piè di pagina | +| **Carattere o colore personalizzato** | Imposta `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` | Migliora la leggibilità o soddisfa le linee guida del brand | +| **Aggiungere un PDF esistente come sfondo** | Carica il PDF di origine con `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` | Utile quando è necessario timbrare sopra un modulo pre‑generato | + +## Conclusione + +Abbiamo appena mostrato come **creare documento PDF**, **aggiungere una pagina PDF vuota** e **aggiungere il numero Bates** usando Aspose.Pdf per .NET, quindi **posizionare il timbro nella pagina** e salvare il file. Il codice è deliberatamente compatto così da poterlo adattare a flussi di lavoro più ampi—che tu stia elaborando decine di file o integrandolo in un servizio web. + +Se sei pronto a portare il tutto oltre, considera: + +- Automatizzare la logica di incremento per grandi fascicoli. +- Integrare la generazione del PDF in un'API ASP.NET Core. +- Aggiungere sicurezza (protezione con password) con `pdfDocument.Encrypt(...)`. + +Sentiti libero di sperimentare, rompere le cose e porre domande nei commenti. Buona programmazione, e che i tuoi PDF siano sempre perfettamente timbrati! + +{{< /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/programming-with-tagged-pdf/_index.md b/pdf/italian/net/programming-with-tagged-pdf/_index.md index 068d9a3c5..8650d3a1f 100644 --- a/pdf/italian/net/programming-with-tagged-pdf/_index.md +++ b/pdf/italian/net/programming-with-tagged-pdf/_index.md @@ -44,7 +44,8 @@ tutorial "Programmazione con PDF con tag" di Aspose.PDF per .NET ti guideranno n | [Elementi della struttura del blocco di testo](./text-block-structure-elements/) | Scopri come utilizzare Aspose.PDF per .NET per aggiungere elementi della struttura del blocco di testo, come titoli e paragrafi taggati, a un documento PDF esistente. | | [Elementi della struttura del testo nel file PDF](./text-structure-elements/) Impara a manipolare gli elementi della struttura del testo nei PDF con Aspose.PDF per .NET. Questa guida passo passo illustra tutto il necessario per creare PDF strutturati. | | [Convalida file PDF](./validate-pdf/) | Scopri come convalidare un file PDF con Aspose.PDF per .NET. Verifica la sua conformità agli standard e genera un report di convalida. | -| [Crea PDF con tag in C# – Guida completa passo passo](./create-tagged-pdf-in-c-complete-step-by-step-guide/) | Impara a creare PDF con tag in C# usando Aspose.PDF per .NET, con istruzioni dettagliate passo passo per garantire l'accessibilità. | +| [Crea PDF con tag in C# – Guida completa passo passo](./create-tagged-pdf-in-c-complete-step-by-step-guide/) | Impara a creare PDF con tag in C# usando Aspose.PDF per .NET, con istruzioni dettagliate passo passo per garantire l'accessibilità. | +| [Crea PDF con tag in C# – Guida passo passo](./create-tagged-pdf-in-c-step-by-step-guide/) | Impara a creare PDF con tag in C# usando Aspose.PDF per .NET con una guida passo passo per garantire l'accessibilità. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/italian/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/italian/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..64e81278e --- /dev/null +++ b/pdf/italian/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-03-06 +description: Crea PDF con tag usando Aspose.Pdf in C#. Scopri come aggiungere un'immagine + al PDF, impostare la posizione della figura e taggare il PDF per l'accessibilità. +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: it +og_description: Crea PDF con tag usando Aspose.Pdf. Questa guida mostra come aggiungere + un'immagine al PDF, impostare la posizione della figura e taggare il PDF per l'accessibilità. +og_title: Crea PDF taggato in C# – Tutorial completo +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: Crea PDF con tag in C# – Guida passo‑a‑passo +url: /it/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crea PDF con Tag in C# – Tutorial Completo + +Hai mai dovuto **creare PDF con tag** in C# ma non sapevi da dove cominciare? Non sei solo; l'accessibilità è ormai indispensabile e un PDF con tag è la spina dorsale di un documento conforme. In questo tutorial vedremo un esempio reale che **aggiunge un'immagine al PDF**, imposta la posizione della figura e mostra **come taggare un PDF** usando Aspose.Pdf. Alla fine avrai un PDF completamente taggato da distribuire a chiunque. + +Copriremo tutto, dal caricamento di un file esistente al salvataggio del risultato finale, così non dovrai cercare “come aggiungere immagine” altrove. Nessun superfluo—solo una soluzione chiara, eseguibile e funzionante con Aspose.Pdf 23.8 (l'ultima al momento della stesura). Prendi il tuo IDE e cominciamo. + +--- + +## Di cosa avrai bisogno + +- **Aspose.Pdf per .NET** (pacchetto NuGet `Aspose.Pdf`). +- .NET 6+ (o .NET Framework 4.7.2+). +- Un PDF di input che abbia già una struttura logica (cioè sia già taggato) – in caso contrario, puoi abilitare il tagging con `pdfDocument.TaggedContent = true`. +- Un file immagine (`image.png`) che desideri incorporare. + +Tutto qui. Nessuna libreria aggiuntiva, nessun file di configurazione oscuro. + +--- + +## Passo 1: Carica il PDF Esistente (Crea la Base del PDF con Tag) + +La prima cosa che facciamo è aprire il PDF che vogliamo migliorare. Il caricamento del file ci dà accesso alla sua struttura logica, fondamentale per i flussi di **creare PDF con tag**. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*Perché è importante:* Senza un albero di tag il PDF non trasmetterà informazioni strutturali ai lettori di schermo. Abilitare il tagging garantisce che tutti i nuovi elementi che aggiungiamo (come una figura) ereditino la gerarchia corretta. + +--- + +## Passo 2: Accedi alla Radice della Struttura Logica (Come Taggare un PDF) + +Ora accediamo alla struttura logica del PDF. L'elemento radice è il contenitore di tutti i tag—pensalo come la scaletta del documento. + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*Spiegazione:* `logicalRoot` ci permette di aggiungere nuovi tag come `
` o `
`. Questo è il cuore di **come taggare un PDF** programmaticamente. + +--- + +## Passo 3: Crea un Tag Figure e Imposta la Sua Posizione (Imposta Posizione della Figura) + +Un tag *Figure* raggruppa contenuti visivi con una didascalia opzionale. Creeremo uno, ne imposteremo la posizione e lo collegheremo alla radice. + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*Perché impostiamo una posizione:* Il passo **imposta posizione della figura** determina dove l'elemento visivo verrà collocato nella pagina. Se lo salti, la figura potrebbe apparire in una posizione inattesa o risultare invisibile per le tecnologie assistive. + +--- + +## Passo 4: Aggiungi una Rappresentazione Visiva – Inserisci un'Immagine (Aggiungi Immagine al PDF) + +Con il tag al suo posto, ci serve un’immagine reale. Questa è la parte che risponde a **aggiungere immagine al pdf**. + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*Punto chiave:* Le coordinate del rettangolo devono corrispondere a `figureTag.Position` definito in precedenza; altrimenti figura e contenuto visivo saranno fuori sincronia, compromettendo l'accessibilità. + +--- + +## Passo 5: Salva il PDF Aggiornato (Completa la Creazione del PDF con Tag) + +Infine, persisti le modifiche in un nuovo file. Mantenere intatto l'originale è una buona pratica. + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +A questo punto disponi di un file **crea PDF con tag** che contiene un’immagine posizionata correttamente avvolta in un tag `
`. Apri `output.pdf` in Adobe Acrobat e controlla il pannello *Tags* – dovresti vedere un nodo `Figure` sotto la radice. + +--- + +## Esempio Completo, Pronto‑da‑Eseguire + +Di seguito trovi il programma completo da copiare‑incollare in un’app console. Tutti i passaggi sono già nell’ordine corretto. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### Risultato Atteso + +- `output.pdf` si apre con l’immagine visualizzata a (100, 150) punti, dimensioni 300 × 200 punti. +- Il riquadro *Tags* mostra un elemento `Figure` che racchiude l’immagine. +- Gli strumenti di lettura schermo annunciano “Figure” prima di descrivere l’immagine, soddisfacendo gli standard di base dell’accessibilità. + +--- + +## Domande Frequenti & Casi Particolari + +### E se il PDF di origine non è già taggato? + +Aspose.Pdf ti consente di attivare il tagging impostando `pdfDocument.TaggedContent.IsTagged = true;`. La libreria genererà un albero di tag predefinito, dopodiché potrai aggiungere tag personalizzati come mostrato. + +### Posso aggiungere una didascalia alla figura? + +Sì. Dopo aver creato `figureTag`, puoi allegare un `Paragraph` con un `TextFragment` e impostare il suo `Tag` a `Caption`. Esempio: + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### Come posizionare la figura su una pagina diversa? + +Sostituisci `var firstPage = pdfDocument.Pages[1];` con l’indice della pagina desiderata, ad esempio `pdfDocument.Pages[3]`. Ricorda di adeguare le coordinate di `Position` se le dimensioni della pagina cambiano. + +### E se devo taggare più immagini? + +Crea un nuovo `Figure` per ogni immagine, assegna a ciascuna una `Position` unica e aggiungi l’oggetto `Image` corrispondente alla pagina appropriata. Un ciclo su una collezione di immagini funziona perfettamente. + +### Funziona con la conformità PDF/A? + +Aspose.Pdf supporta PDF/A‑1b, PDF/A‑2b e PDF/A‑3b. Quando generi un documento PDF/A, assicurati di impostare la modalità di conformità prima del salvataggio: + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +La logica di tagging rimane invariata. + +--- + +## Consigli Pro & Trappole + +- **Consiglio pro:** Usa sempre percorsi assoluti o `Path.Combine` per evitare errori di file non trovato a runtime. +- **Attenzione a:** Coordinate non corrispondenti tra il tag `Figure` e il rettangolo `Image`—le tecnologie assistive si basano su quell’allineamento. +- **Nota sulle prestazioni:** Se elabori molte pagine, avvolgi lo stream dell’immagine in un blocco `using` per liberare le risorse tempestivamente. +- **Controllo versione:** L’API mostrata funziona con Aspose.Pdf 23.8+. Versioni precedenti potrebbero avere nomi di classi leggermente diversi (ad es., `LogicalStructureElement` invece di `FigureElement`). + +--- + +## Conclusione + +Abbiamo appena **creato PDF con tag** dall’inizio alla fine, dimostrato **come aggiungere immagine al pdf** e mostrato come **impostare la posizione della figura** rispondendo a **come taggare pdf** e **come aggiungere immagine** in un unico esempio coerente. Il codice è pronto per l’esecuzione, le spiegazioni coprono il “perché” di ogni passaggio, e ora possiedi una solida base per costruire PDF accessibili in C#. + +Pronto per la prossima sfida? Prova ad aggiungere tabelle con tag `
`, o incorpora uno strato di conformità PDF/A‑2b per scopi di archiviazione. Lo stesso schema—carica, accedi alla struttura logica, crea un tag, allega contenuto visivo, salva—si applica alla maggior parte dei compiti di accessibilità PDF. + +Se incontri difficoltà o hai un caso d’uso non coperto qui, lascia un commento qui sotto. Buon tagging e buona creazione di PDF leggibili da tutti! + +![Diagramma che mostra un PDF con un tag Figure e un'immagine – illustra come creare PDF con tag](placeholder-image.png "esempio di PDF con tag") + +{{< /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/digital-signatures/_index.md b/pdf/japanese/net/digital-signatures/_index.md index a145007ef..e208533f5 100644 --- a/pdf/japanese/net/digital-signatures/_index.md +++ b/pdf/japanese/net/digital-signatures/_index.md @@ -53,6 +53,8 @@ Aspose.PDF for .NET を使用して PDF ファイルのデジタル署名を検 ### [C# で PDF 署名を検証する – デジタル署名 PDF の検証完全ガイド](./verify-pdf-signature-in-c-complete-guide-to-validate-digital/) C# を使用して PDF のデジタル署名を検証する手順を詳細に解説します。安全な検証プロセスを実装しましょう。 +### [C# で PDF の署名を読み取る方法 – ステップバイステップ ガイド](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +C# を使用して PDF ファイル内のデジタル署名情報を取得し、検証する手順をステップバイステップで解説します。 ## 追加リソース diff --git a/pdf/japanese/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/japanese/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..e283240b0 --- /dev/null +++ b/pdf/japanese/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,230 @@ +--- +category: general +date: 2026-03-06 +description: C# を使用して PDF の署名を読み取る方法。C# で PDF ドキュメントを読み込み、PDF の署名を一覧表示し、デジタル署名を迅速かつ確実に取得する方法を学びましょう。 +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: ja +og_description: C# を使用して PDF の署名を読み取る方法。このガイドでは、C# で PDF ドキュメントを読み込み、PDF の署名を一覧表示し、デジタル署名を取得する手順を簡単に紹介します。 +og_title: C#でPDFの署名を読む方法 – 完全ガイド +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: C#でPDFの署名を読み取る方法 – ステップバイステップガイド +url: /ja/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDFの署名をC#で読む方法 – 完全ガイド + +PDFファイルにすでに埋め込まれている**署名の読み取り方法**を考えたことはありますか?コンプライアンスダッシュボードを構築しているかもしれませんし、データベースに取り込む前に署名済み契約書を監査する必要があるだけかもしれません。良いニュースは、数行のC#コードとAspose.Pdfライブラリを使えば、ファイルから直接署名名を取得でき、手動での検査は不要です。 + +このチュートリアルでは、C#でPDFドキュメントを読み込み、PDF署名を列挙し、デジタル署名の情報を取得する手順を解説します。最後まで読むと、見つかったすべての署名名をコンソールに出力する実行可能なコンソールアプリが完成し、パスワード保護されたファイルなどのエッジケースへの対処法も学べます。 + +## Prerequisites + +- .NET 6.0 以降(コードは .NET Framework 4.6 以上でも動作します) +- Aspose.Pdf for .NET(Aspose のウェブサイトから無料の一時ライセンスを取得できます) +- すでに 1 つ以上のデジタル署名が含まれている PDF(サンプルの `MultiSigned.pdf` がリポジトリに含まれています) + +> **Pro tip:** Visual Studio を使用している場合は、*Nullable Reference Types* を有効にして null 関連のバグを早期に検出しましょう。 + +## Step 1: Load the PDF Document in C# + +最初に必要なのは、ディスク上の PDF ファイルを表す `Document` オブジェクトです。Aspose.Pdf の `Document` クラスは、シンプルなテキスト抽出から複雑なフォーム処理まであらゆる操作を扱います。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**Why this matters:** PDF の読み込みにより、ファイルが存在し読み取り可能であることが検証されます。ファイルが破損している、またはパスが間違っている場合は、署名を列挙しようとしたときに暗号的なエラーが発生する前に早期に終了できます。 + +## Step 2: Create a `PdfFileSignature` Helper + +Aspose は汎用 PDF 処理(`Document`)と署名固有の操作(`PdfFileSignature`)を分離しています。このヘルパーをインスタンス化することで、`GetSignatureNames()` などのメソッドにアクセスできます。 + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**Why this matters:** `PdfFileSignature` クラスは PDF の `/Sig` 辞書エントリを解析する方法を知っており、デジタル署名が格納されている場所です。これを使用することで、署名が追加されたときの正確な情報と暗号メタデータを保持したまま読み取れます。 + +## Step 3: Retrieve All Signature Names + +ここが **署名の読み取り方法** の核心です:`GetSignatureNames()` を呼び出します。このメソッドは各署名の *フィールド名* を含む文字列配列を返します。 + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**What you’ll see:** 例えば `MultiSigned.pdf` に `Signature1`、`Signature2`、`Signature3` という 3 つの署名が含まれている場合、コンソール出力は次のようになります。 + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## Step 4: (Optional) Verify Each Signature’s Validity + +名前だけを取得するだけでも十分なケースが多いですが、プロジェクトによっては各署名が現在も有効かどうかを確認する必要があります。Aspose はフィールド名で署名を検証する機能を提供しています。 + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **Edge case:** PDF がパスワード保護されている場合、`VerifySignature` を呼び出す前にパスワードを設定する必要があります。ドキュメント読み込み直後に `pdfDocument.Encrypt.Password = "yourPassword";` を使用してください。 + +## Full Working Example + +以下は新しいコンソールプロジェクト(`dotnet new console`)にコピー&ペーストできる完全なプログラムです。すべての手順、エラーハンドリング、オプションの検証が含まれています。 + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**Expected output**(有効な署名が 3 つあると仮定): + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## Handling Common Variations + +| Situation | What to Change | Why | +|-----------|----------------|-----| +| **Password‑protected PDF** | `PdfFileSignature` を作成する前に `pdfDocument.Encrypt.Password = "yourPwd";` を設定します。 | パスワードがないと署名辞書が暗号化され、`GetSignatureNames()` が空配列を返します。 | +| **Large PDFs ( > 100 MB )** | `pdfSigner.GetSignatureNames(0, 10)` のように開始インデックスと取得件数を指定してページングします(最初のパラメータが開始インデックス)。 | 署名リスト全体を一度にロードするとメモリ消費が大きくなります。 | +| **No signatures at all** | コードはすでにフレンドリーな警告を出力します。監査イベントとしてログに残すことを検討してください。 | 後続プロセスがファイルを拒否するか、署名済みバージョンを要求するかの判断材料になります。 | +| **Custom signature field names** | メソッドは署名時に使用されたフィールド名(例: `EmployeeApproval`)をそのまま返します。追加の作業は不要です。 | 署名をビジネスロールにマッピングできるようになります。 | + +## Best Practices & Tips + +- **Dispose objects**: `using var pdfSigner` パターンを使うことで、ネイティブリソースが速やかに解放されます。 +- **License early**: `Main` の冒頭で `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` を呼び出し、評価版の透かしを回避しましょう。 +- **Thread safety**: 複数の PDF を並列処理する場合は、スレッドごとに別々の `PdfFileSignature` インスタンスを作成してください。クラスはスレッドセーフではありません。 +- **Logging**: 本番環境では `Console.WriteLine` を構造化ロガー(Serilog、NLog など)に置き換え、監査トレイル用に正確な署名名を記録できるようにします。 +- **Version check**: 本コードは Aspose.Pdf for .NET 23.10 以降で動作します。古いバージョンを使用している場合は `PdfSignature` に置き換える必要があるかもしれません。 + +## Conclusion + +C# を使って PDF から **署名の読み取り方法** を解説しました。PDF ドキュメントをロードし、`PdfFileSignature` ヘルパーを作成し、`GetSignatureNames()` を呼び出すだけで、ファイルに埋め込まれたすべてのデジタル署名を一覧表示できます。オプションの検証を加えることで信頼性が向上し、サンプルコードは実際のコンソールアプリへの組み込み方法を示しています。 + +次のステップに進みますか?Aspose の `DigitalSignatureUtil` と組み合わせて署名者証明書を抽出したり、署名リストをコンプライアンスダッシュボードに流し込んで未署名契約書をフラグ付けしたりしてみてください。可能性は無限です—**load PDF document C#**、**list PDF signatures**、**get digital signatures PDF** を覚えておけば、素早く監査が行えます。 + +Happy coding, and may your PDFs always stay securely signed! + +{{< /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-conversion/_index.md b/pdf/japanese/net/document-conversion/_index.md index 53ec465b2..838399eca 100644 --- a/pdf/japanese/net/document-conversion/_index.md +++ b/pdf/japanese/net/document-conversion/_index.md @@ -57,6 +57,7 @@ Aspose.PDF の .NET 向けドキュメント変換チュートリアルでは、 | [XMLからPDFへの画像パスの設定](./xml-to-pdfset-image-path/) Aspose.PDF for .NET を使って、XML を PDF に簡単に変換する方法を学びましょう。この詳細なガイドでは、セットアップから完了まで、プロセスをステップごとに詳しく説明します。 | | [XPSからPDFへ](./xps-to-pdf/) Aspose.PDF for .NET を使用してXPSファイルをPDFに変換する方法を、ステップバイステップのチュートリアルで学びましょう。開発者やドキュメント作成に興味のある方に最適です。 | | [C#でPDFをPDF/X‑4に変換 – ステップバイステップ ASP.NET PDF チュートリアル](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) PDF を PDF/X‑4 形式に変換する方法を、C# と Aspose.PDF for .NET で学びます。 | +| [Aspose PDF チュートリアル: C#で PDF を PDF/X‑4 に変換](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) C# と Aspose.PDF for .NET を使用して、PDF を PDF/X‑4 形式に変換する方法を学びます。 | | [PDFからPNGへのチュートリアル – C#でPDFページをPNGに変換](./pdf-to-png-tutorial-convert-pdf-pages-to-png-in-c/) Aspose.PDF for .NET を使用して、C#でPDFページをPNG画像に変換する方法をステップバイステップで解説します。 | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/japanese/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/japanese/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..f8d7c406a --- /dev/null +++ b/pdf/japanese/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,224 @@ +--- +category: general +date: 2026-03-06 +description: Aspose PDF チュートリアルでは、Aspose を使用して C# で PDF ドキュメントを読み込み、PDF を PDF/X‑4 + に変換し、変換された PDF を効率的に保存する方法を示しています。 +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: ja +og_description: Aspose PDF チュートリアルでは、C# で PDF ドキュメントを読み込み、PDF/X‑4 形式に変換し、変換された PDF + を明確なコード例とともに保存する方法を解説しています。 +og_title: Aspose PDF チュートリアル:C#でPDFをPDF/X‑4に変換 +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: Aspose PDF チュートリアル:C#でPDFをPDF/X‑4に変換 +url: /ja/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose PDF チュートリアル:C# で PDF を PDF/X‑4 に変換する + +普通の PDF を PDF/X‑4 ファイルに簡単に変換する方法を考えたことはありますか? あなただけではありません—開発者はしばしば **load PDF document C#** スタイルで信頼できる方法でロードし、変換し、そして **save the converted PDF** を下流のワークフローのために行う必要があります。このガイドでは、最新の Aspose.Pdf for .NET を使用した、完全に実行可能なサンプルを順に説明します。 + +ライブラリのインストールから、ソース PDF の読み込み、PDF/X‑4 標準への変換、そして最終的にディスクに結果を保存するまでをすべてカバーします。最後まで読むと、この一般的な変換シナリオで **how to use Aspose** を使う方法がしっかりと身につき、エッジケースへの対処法も学べます。 + +## 前提条件 + +- .NET 6.0 以降(コードは .NET Framework でも動作しますが、.NET 6+ が推奨されます)。 +- 有効な Aspose.Pdf for .NET ライセンス ファイル(または評価モードでの簡易テストも可能)。 +- Visual Studio 2022 または任意の C# 対応 IDE。 +- `YOUR_DIRECTORY/input.pdf` に配置した入力 PDF ファイル。 + +`Aspose.Pdf` 以外の NuGet パッケージは必要ありません。 + +## NuGet を使用して Aspose.Pdf をインストールする + +ターミナルまたは Package Manager Console を開き、次のコマンドを実行します: + +```bash +dotnet add package Aspose.Pdf +``` + +これにより、最新の安定版(2026年3月時点、バージョン 23.12)が取得されます。UI が好みの場合は、NuGet パッケージ マネージャーで *Aspose.Pdf* を検索してインストールしてください。 + +## 手順 1: Aspose を使用して C# で PDF ドキュメントをロードする + +最初に行うべきことは、ソース PDF をメモリに読み込むことです。Aspose の `Document` クラスがエントリーポイントになります。 + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**Why this matters:** ファイルをロードすることで、パスが存在するか、PDF が破損していないかが検証されます。`try/catch` ブロックはエラーを優雅に通知できる手段を提供し、ユーザーアップロードからのファイル処理に便利です。 + +## 手順 2: PDF を PDF/X‑4 フォーマットに変換する + +PDF/X‑4 は、信頼性の高い印刷とアーカイブ向けに設計された PDF のサブセットです。変換することで、すべてのフォントが埋め込まれ、業界標準に準拠したファイルになります。 + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**Why choose `ConvertErrorAction.Delete`?** 一部のレガシー PDF には、変換を妨げる可能性のある要素(未対応のアノテーションなど)が含まれています。これらを削除するとプロセスがスムーズに進みますが、必要な要素がある場合は出力を確認してください。 + +### 任意: 変換成功の確認 + +さらに確実にしたい場合は、変換後にドキュメントの `PdfFormat` を確認できます: + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## 手順 3: 変換された PDF ファイルを保存する + +ドキュメントが PDF/X‑4 形式になったら、ディスクに書き戻します。 + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**Result you’ll see:** `Converted_PDFX4.pdf` という新しいファイルが `YOUR_DIRECTORY` に作成されます。PDF/X‑4 に対応した任意の PDF ビューア(Adobe Acrobat、Foxit など)で開くと、すべてのフォントが埋め込まれ、PDF/X‑4 仕様に準拠していることが確認できます。 + +![aspose pdf チュートリアル - PDF を PDF/X‑4 に変換](/images/aspose-pdf-conversion.png "aspose pdf チュートリアル:PDF/X‑4 変換結果の表示") + +*Image alt text includes the primary keyword, satisfying SEO requirements.* + +## 完全なエンドツーエンド例 + +すべてをまとめると、以下の自己完結型コンソール アプリを新しい C# プロジェクトにコピー&ペーストできます: + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +プログラムを実行すると、各ステップを確認するコンソール メッセージが表示されます。何か問題が発生した場合は、エラーメッセージが正確な段階を指し示します。 + +## よくある質問とエッジケース + +### アノテーションを保持する必要がある場合は? + +`ConvertErrorAction.Delete` は未対応オブジェクト(アノテーションを含む)を除去します。保持が重要な場合は `ConvertErrorAction.Keep` に切り替えてください。ただし、出力をテストし、一部のアノテーションが依然としてコンプライアンス警告を引き起こす可能性があることに注意してください。 + +### 大容量 PDF(数百 MB)を扱うには? + +Aspose.Pdf はファイルをストリーミングするため、メモリ使用量は抑えられます。ただし、極端に大きなファイルの場合は `System.GC` の閾値を上げるか、ページ単位で分割して処理(例:ページごとに変換)することを検討してください。 + +### バッチで複数ファイルを変換できますか? + +もちろん可能です。ロード・変換・保存ロジックを `foreach` ループでディレクトリ内の PDF に対して繰り返します。ファイルごとに例外処理を行い、1 つの不良 PDF がバッチ全体を中断しないようにしてください。 + +### .NET Core on Linux でも動作しますか? + +はい。Aspose.Pdf はクロスプラットフォームです。`Aspose.Pdf` NuGet パッケージが参照されていることと、テキスト描画が必要な場合は Linux ホストに適切なフォント ファイルがインストールされていることを確認してください。 + +## 現場からのプロのヒント + +- **Set a license early**: `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` – これにより評価版の透かしが除去され、パフォーマンスが向上します。 +- **Validate the output**: Aspose の `PdfFormatValidator` を使用して、PDF/X‑4 準拠をプログラムで確認し、ファイルを出荷する前に検証してください。 +- **Log conversion time**: 大規模バッチでは各変換の時間計測(`Stopwatch`)を行い、パフォーマンス低下を早期に検出できます。 +- **Avoid hard‑coded paths**: `inputPath` と `outputPath` は設定ファイルや環境変数から取得するようにし、アプリのポータビリティを高めましょう。 + +## 結論 + +この **Aspose PDF Tutorial** では、**how to use Aspose** で **load PDF document C#**、PDF を **PDF/X‑4** 標準に変換し、**save the converted PDF** するクリーンなエンドツーエンド ワークフローを実演しました。コードは完全に実行可能で、各ステップの *why* を解説し、実務プロジェクトで遭遇しうる落とし穴をハイライトしています。 + +基本が身についたので、ソリューションを拡張してみてください—数十ファイルのバッチ処理、カスタム メタデータの埋め込み、あるいは Web API への統合など、可能性は無限大です。Aspose.Pdf があれば、迅速に実装できます。 + +Aspose を使った PDF 処理でさらに質問がありますか? コメントを残すか、公式 Aspose ドキュメントを参照するか、上記コードで実験してみてください。変換を楽しんでください! + +{{< /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-creation/_index.md b/pdf/japanese/net/document-creation/_index.md index 01595ace4..f7517ae95 100644 --- a/pdf/japanese/net/document-creation/_index.md +++ b/pdf/japanese/net/document-creation/_index.md @@ -77,6 +77,12 @@ Aspose.PDF Net のコードチュートリアル ### [Aspose.PDF を使用して PDF ドキュメントを作成 – ページ、シェイプの追加と保存](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) Aspose.PDF の API を利用し、ページや図形を追加して PDF を保存する手順を解説します。 +### [Aspose.PDF を使用して PDF ドキュメントを作成する – ステップバイステップ ガイド](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +Aspose.PDF を使用して PDF ドキュメントを最初から作成する手順をステップバイステップで解説します。 + +### [Aspose.PDF を使用して PDF ドキュメントを作成する – 完全 C# ガイド](./create-pdf-document-with-aspose-pdf-full-c-guide/) +Aspose.PDF と C# を使って、PDF ドキュメントを最初から作成する方法を包括的に解説します。 + ## 追加リソース - [Aspose.PDF for Net ドキュメント](https://docs.aspose.com/pdf/net/) diff --git a/pdf/japanese/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/japanese/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..aaa6816e0 --- /dev/null +++ b/pdf/japanese/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-06 +description: Aspose.PDF を使用して C# で PDF ドキュメントを作成 – 空白ページ、テキストボックス、ウィジェットの追加方法と、PDF + をすばやく保存する方法を学びましょう。 +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: ja +og_description: Aspose.PDF を使用して C# で PDF ドキュメントを作成します。このガイドでは、空白ページの PDF、テキストボックス、ウィジェットの追加方法と、PDF + の保存方法を示します。 +og_title: Aspose.PDFでPDFドキュメントを作成する – 完全なC#チュートリアル +tags: +- pdf +- csharp +- aspose +- forms +title: Aspose.PDFでPDFドキュメントを作成する – 完全C#ガイド +url: /ja/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose.PDF を使用した PDF ドキュメントの作成 – 完全 C# ガイド + +.NET プロジェクトで **PDF ドキュメントを作成** する必要があり、どこから始めればよいか悩んだことはありませんか? 同じ壁にぶつかる開発者は多いです。たとえば「3 ページに同じテキストボックスを持つ入力可能な PDF を生成したい」という要件です。朗報です! Aspose.PDF を使えば、数行のコードでプロフェッショナルな PDF をすぐに作成できます。 + +このチュートリアルでは、PDF の初期化、**空白ページの追加**、**テキストボックス** の挿入、**ウィジェット** アノテーションでの複製、そして最終的に **PDF の保存** までの全工程を解説します。最後には *MultiWidgetField.pdf* というファイルが完成し、各ステップの意図がしっかり理解できるようになります。 + +## このガイドでカバーする内容 + +- コーディングを始める前に必要な前提条件 +- Aspose.PDF for .NET を使った PDF ドキュメントの作成手順 +- 空白ページ、テキストボックス フィールド、追加ウィジェットの追加方法 +- よくある落とし穴(ページインデックスやフィールド名の衝突など)の対処法 +- 今すぐ実行できる、コピー&ペースト可能な C# プログラム + +外部ドキュメントへのリンクや「API ドキュメントを参照」などの省略は一切ありません。必要な情報はすべてここにあります。 + +## 前提条件 + +作業を始める前に、以下を用意してください。 + +1. **.NET 6.0**(またはそれ以降のバージョン)がマシンにインストールされていること。 +2. 有効な **Aspose.PDF for .NET** ライセンス、または一時的な評価キー。 +3. **Visual Studio 2022** もしくは **VS Code**(C# 拡張機能付き)の開発環境。 + +以上だけで完了です。追加の準備は不要です。 + +## 手順 1: PDF ドキュメントを初期化し、空白ページを追加する + +プログラムで **PDF ドキュメントを作成** する最初のステップは、`Document` オブジェクトをインスタンス化することです。新しいノートブックを開くイメージです。その後、必要なページ数を追加します。ここでは 3 枚の空白ページを作ります。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**なぜ重要か:** Aspose.PDF は内部でページを 0 ベースのコレクションとして扱いますが、公開 API は 1 ベースです。そのため `Pages[1]` が最初に追加したページになります。最初にページを追加しておくことで、後からフォームフィールドを配置するキャンバスが確保でき、ドキュメントが大きくなった後にページを挿入するよりもはるかに効率的です。 + +> **プロのコツ:** 1 ページだけ必要な場合はループを省き、`pdfDocument.Pages.Add()` を一度だけ呼び出すだけで済みます。ループで複数ページを追加すると、コードがスケーラブルになります。 + +## 手順 2: 1 ページ目にテキストボックス フィールドを定義する + +3 枚の空白シートができたので、最初のページに **テキストボックス** を配置します。`TextBoxField` は、Acrobat Reader やフォームに対応した PDF ビューアでユーザーが入力できるフォーム要素です。 + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**矩形座標の意味は?** Aspose.PDF はポイント(1 インチの 1/72)を単位とします。矩形 `(100, 700, 300, 730)` は、ページのほぼ中央付近に幅 200 pt、高さ 30 pt のテキストボックスを配置します。レイアウトに合わせて数値は調整してください。 + +> **よくある質問:** `Value` プロパティは必須ですか? +> 必要ありません。空のままにすれば空白フィールドが表示され、デフォルト値を設定すればユーザーへのヒントになります。 + +## 手順 3: ページ 2 と 3 に同じフィールドのウィジェット アノテーションを追加する + +**ウィジェット** は、特定のページ上に表示されるフォームフィールドのビジュアル表現です。デフォルトではフィールドは作成したページにしか表示されません。同じテキストボックスを他のページでも使うには、`WidgetAnnotation` オブジェクトをフィールドの `Widgets` コレクションに追加します。 + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**ウィジェットが必要な理由:** ウィジェットがなければ、ユーザーはページ 1 にしかテキストボックスを見ません。ウィジェットを追加することで、単一の論理フィールドを複数ページで共有でき、入力したテキストがすべてのページに反映されます。 + +> **エッジケース:** 各ページでテキストボックスの位置を変えたい場合は、各ウィジェットの `Rectangle` 値を変更すれば OK です。 + +## 手順 4: フィールドをドキュメントの Form コレクションに登録する + +Aspose.PDF はすべてのフォームフィールドを中央リポジトリで管理しています。`Form` コレクションにフィールドを追加することで、PDF のインタラクティブ フォーム構造に組み込まれます。 + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +第2引数の `"Comment"` はフィールドの **完全修飾名** です。ドキュメント全体で一意である必要があり、重複すると Aspose が例外をスローします。 + +## 手順 5: 結果の PDF を保存する – PDF の保存方法 + +最後に、メモリ上のドキュメントをディスクに書き出します。これがチュートリアルの **PDF の保存** 部分です。 + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**絶対パスを指定する理由:** 絶対パスを使うと、実行環境の作業ディレクトリに依存せずに保存先が明確になります。相対パスを使う場合は、`Save` を呼び出す前に対象フォルダーが存在することを確認してください。 + +### 期待される結果 + +*MultiWidgetField.pdf* を Adobe Acrobat Reader で開くと、1、2、3 ページすべてに同じテキストボックスが表示されます。任意のページでフィールドに入力すると、他のページでも即座に同じテキストが表示されます。 + +![3 ページにテキストボックスが表示された PDF ドキュメントの例](https://example.com/placeholder-image.png "3 ページにテキストボックスが表示された PDF ドキュメントの例") + +*画像代替テキスト: 3 ページにテキストボックスが表示された PDF ドキュメントの例。* + +## 完全な実行可能サンプル + +以下は `dotnet new console` で作成した新しいコンソール プロジェクトに貼り付けてすぐに実行できる、全ステップが順序通りに記述されたプログラムです。コード内には説明コメントも入っています。 + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +プログラムを実行し、`C:\Temp\` に生成された PDF を開いてください。3 つの同一テキストボックスが表示され、ユーザー入力が可能です。 + +## よくあるバリエーションとエッジケース + +| シナリオ | 変更点 | 理由 | +|----------|--------|------| +| **各ページでテキストボックスのサイズを変える** | 各 `WidgetAnnotation` の `Rectangle` 値を調整 | レイアウトに合わせてフィールドを最適化できます | +| **読み取り専用フィールド** | `commentField.ReadOnly = true;` を設定 | 初期入力後にユーザーが編集できなくなります | +| **複数行テキストボックス** | `commentField.Multiline = true;` と矩形の高さを増やす | 長文コメントをスクロールなしで入力可能に | +| **2 番目のフィールドを追加** | 新しい `TextBoxField`(または任意の `FormField`)を作成し、手順 2‑4 を新しい名前で繰り返す | 同一 PDF に複数の情報を収集できます | + +## プロのコツと回避すべき落とし穴 + +- **ページインデックス:** `pdfDocument.Pages[1]` が最初のページであることを忘れないでください。0 ベースと 1 ベースを混同すると「インデックスが範囲外」例外が発生します。 +- **フィールド名の衝突:** 完全修飾名は一意でなければなりません。重複エラーが出たら、`Form.Add` に渡す文字列を確認してください。 +- **ライセンス vs 評価版:** 評価版は各ページに透かしが入ります。本番環境では有効なライセンスを適用して透かしを除去してください。 +- **パフォーマンス:** ループで数百ページを追加するのは問題ありませんが、数千ページ規模の巨大 PDF を生成する場合は、ストリームベースの生成や分割保存などの手法を検討してください。 + +{{< /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-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/japanese/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..5cae18af9 --- /dev/null +++ b/pdf/japanese/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,221 @@ +--- +category: general +date: 2026-03-06 +description: Aspose.PDF を使用して C# で PDF ドキュメントを作成します。ページの追加、矩形の描画、図形の追加、矩形の枠線の太さの調整方法を、すべて1つのチュートリアルで学びましょう。 +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: ja +og_description: Aspose.PDF を使用して C# で PDF ドキュメントを作成します。このチュートリアルでは、PDF にページを追加する方法、矩形を描画する方法、図形を追加する方法、そして矩形の枠線の太さを設定する方法を示します。 +og_title: Aspose.PDFでPDFドキュメントを作成する – 完全ガイド +tags: +- Aspose.PDF +- C# +- PDF generation +title: Aspose.PDFでPDFドキュメントを作成する – ステップバイステップガイド +url: /ja/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< 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 を使えば数行のコードで実現でき、さらに **add page PDF**、**draw rectangle PDF**、**add shape PDF** のやり方や **rectangle border thickness** の調整方法も学べます。さあ、始めましょう。 + +## 作成するもの + +このガイドの最後までに、完全に機能する C# コンソールアプリが作成できます。 + +1. **Creates a PDF document** を最初から作成します。 +2. ドキュメントに **Adds a page PDF** を追加します。 +3. そのページに **Draws a rectangle PDF** を描画します。 +4. **Validates** して、矩形がページの境界内に収まっていることを確認します(**add shape PDF** 手順)。 +5. カスタム **rectangle border thickness** を設定します。 +6. 結果を `ShapeValidated.pdf` として保存します。 + +外部サービスや不明な設定は不要です—純粋な C# と Aspose.PDF だけです。 + +### 前提条件 + +- .NET 6.0 以上(コードは .NET Framework 4.6+ でも動作します)。 +- `Aspose.Pdf` NuGet パッケージへの参照。以下のように追加できます: + +```bash +dotnet add package Aspose.Pdf +``` + +- テキストエディタまたは IDE—Visual Studio、VS Code、Rider、好きなものを使用してください。 + +> **Pro tip:** 社内のマシンを使用している場合、NuGet フィードがブロックされていないことを確認してください。ブロックされていると “Package not found” エラーが発生します。 + +--- + +## PDFドキュメントの作成 – Document の初期化 + +最初のステップは `Document` オブジェクトを作成することです。これは、すべてのページやシェイプが配置される空白のキャンバスと考えてください。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +なぜこのオブジェクトが必要なのでしょうか? それはメモリ上の PDF ファイル全体を表し、`Pages` コレクションやメタデータ、セキュリティ設定へアクセスできます。Document を取得すれば、ページ、テキスト、画像、ベクターグラフィックを積み重ね始めることができます。 + +--- + +## PDFにページを追加する (add page pdf) + +ページのない PDF は実質的に空のファイルです—意味がありません。ページの追加は簡単で、必要に応じてサイズをカスタマイズできます。ここではデフォルトの A4 サイズを使用します。 + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +`Add()` メソッドは、新しい `Page` インスタンスを返し、すでに `Pages` コレクションの一部となっています。そのためすぐに描画を開始できます。実際のシナリオではデータセットをループして数十ページを追加することもありますが、同じ一行呼び出しで各イテレーションに対応できます。 + +## 矩形シェイプを描画する (draw rectangle pdf) + +次は視覚的な部分です:可視の枠線を持つ矩形です。ここで **draw rectangle pdf** が登場します。 + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +注意すべき点がいくつかあります: + +- `Rect` はポイント単位(1 pt ≈ 1/72 インチ)を使用します。座標は左下と右上の角を定義し、幅と高さを正確に制御できます。 +- `BorderInfo` でどの辺に線を引くか、線の太さを指定できます。ここでは **all** 辺に 2 ポイントの線を適用し、矩形にすっきりとした均一な外観を与えています。 + +## シェイプ配置の検証 (add shape pdf) + +矩形をページに配置する前に、ページの印刷可能領域内に収まっているか確認することが賢明です。Aspose.PDF はそのための便利なヘルパーメソッドを提供しています。 + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +なぜ必要かというと、シェイプを画面外に一部でも配置すると、PDF ビューアが切り取って表示し、ユーザーに混乱を招く可能性があります。この **add shape pdf** ガード句は、完全に表示可能なコンテンツだけを追加することを保証します。 + +## PDFを保存する (add page pdf) + +最後に、メモリ上のドキュメントをディスクに保存します。書き込み権限のある任意の場所を選択できます。 + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +プログラムを実行したら `ShapeValidated.pdf` を開いてください—中央付近にきれいに枠線が付いた矩形が1ページだけ表示されているはずです。 + +## 期待される結果 + +生成された PDF を開くと、以下が確認できます: + +- A4 サイズのページが1枚。 +- 左下隅が (50 pt, 50 pt) で、右上隅が (600 pt, 800 pt) の矩形。 +- 矩形を囲む **2‑point thick** の枠線。 + +コンソールに “PDF created successfully!” と表示されたら、境界チェックに引っかからずコードが正常に実行されたことが分かります。 + +![Aspose.PDFでPDFドキュメントを作成する方法を示す図](https://example.com/diagram-create-pdf.png "PDFドキュメント作成 – ビジュアル概要") + +*画像の代替テキストには主要キーワードが含まれており、SEO 要件を満たしています。* + +## よくある質問とエッジケース + +### 別のページサイズが必要な場合は? + +デフォルトのページをカスタムサイズに置き換えます: + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### 枠線の色を変更するには? + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### 同じページに複数のシェイプを追加できますか? + +もちろんです。新しい `RectangleShape`(または他の `Shape` サブクラス)で **add shape pdf** ブロックを繰り返し、`Rect` の座標を適宜調整してください。 + +### 矩形がページの境界を超える場合は? + +`IsShapeWithinBounds` 呼び出しは `false` を返します。本番コードではシェイプを自動的にリサイズしたいかもしれません: + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +## まとめ + +Aspose.PDF を使った **creating a PDF document** の全ライフサイクルを順に見てきました: + +1. `Document` を初期化します。 +2. `Pages.Add()` を使用して **Add a page PDF** を行います。 +3. `RectangleShape` を使って **Draw a rectangle PDF** を行います。 +4. ページ内に収まっていることを確認した後で **Add shape PDF** を実行します。 +5. `BorderInfo` で **rectangle border thickness** を制御します。 +6. ファイルを保存します。 + +これが 60 行未満のコードで実現できる全体のワークフローです。 + +## 次にやることは? + +- **Add text**: `TextFragment` を使用して矩形内にタイトルやラベルを配置します。 +- **Insert images**: `Image` クラスでロゴやチャートを埋め込めます。 +- **Create tables**: 請求書やデータレポートに最適なテーブルを作成します。 +- **Apply security**: 機密データが含まれる場合は PDF にパスワード保護を設定します。 + +これらのトピックはここで扱った基礎の上に構築されているので、より高度な PDF 生成シナリオを探求する準備が整っています。 + +### 実験を続けよう + +1つの矩形で止まらず、さまざまなシェイプ、色、線スタイルを試してみてください。Aspose.PDF API は豊富で、いじればいじるほど使いこなせるようになります。問題が発生した場合は公式の Aspose ドキュメントが頼りになりますが、上記のコードは完全なコピー&ペースト可能なソリューションで、すぐに実行できます。 + +コーディングを楽しんで、作成した PDF が常に思い通りにレンダリングされますように! + +{{< /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 efaa98a3c..6a8a2d1cc 100644 --- a/pdf/japanese/net/document-manipulation/_index.md +++ b/pdf/japanese/net/document-manipulation/_index.md @@ -311,6 +311,9 @@ Aspose.PDF for .NET を使用して、複数ページのPDFを分割し、新し ### [Aspose.PDF .NET による PDF 操作の究極ガイド: テキストを効率的に読み込み、保存し、置換する](./master-pdf-manipulation-aspose-pdf-net/) Aspose.PDF for .NET を使って PDF 操作をマスターする方法を学びましょう。このガイドでは、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 for Net ドキュメント](https://docs.aspose.com/pdf/net/) diff --git a/pdf/japanese/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/japanese/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..9afe57537 --- /dev/null +++ b/pdf/japanese/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-03-06 +description: Aspose PDF を使用して C# で PDF をレダクトする方法を学びましょう。このステップバイステップガイドでは、C# で PDF + ドキュメントを読み込み、最初のページにアクセスし、PDF から画像を削除する方法を示します。 +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: ja +og_description: C#でAspose PDFを使用してPDFを素早く編集する方法。PDFドキュメントを読み込み、最初のページにアクセスし、数行のコードだけでPDFから画像を削除します。 +og_title: C#でPDFをレダクトする方法 – Aspose PDFチュートリアル +tags: +- Aspose PDF +- C# +- PDF Redaction +title: Aspose PDF を使用した C# での PDF のマスク処理方法 – 完全ガイド +url: /ja/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# と Aspose PDF を使用した PDF の赤字(情報隠蔽)完全ガイド + +「**PDF を赤字処理**」する方法を、手間なく知りたくありませんか?たとえば、機密ロゴが隠された契約書や、削除すべきプレースホルダー画像が残っているレポートを受け取ったことがあるかもしれません。そのような時、手動の Acrobat のウィザードに頼らず、確実にコンテンツを除去できるプログラム的な方法が欲しいでしょう。 + +このチュートリアルでは、**PDF ドキュメントを C# で読み込む**、**最初の PDF ページにアクセスする**、そして **PDF から画像を削除する** という、強力な **Aspose PDF** ライブラリを使用した簡潔なエンドツーエンドのソリューションを順に解説します。最後まで読むと、配布可能な完全に赤字処理された PDF が手に入り、各コード行が何故重要なのかが理解できるようになります。 + +> **プロ・チップ:** Aspose PDF は .NET Framework 4.6 以降および .NET Core 3.1 以降で動作するため、Windows、Linux、macOS のいずれでも利用可能です。 + +![how to redact pdf example](redact-pdf-before-after.png){alt="PDF 赤字処理例"} + +## 必要なもの + +- **Aspose.PDF for .NET**(最新の NuGet パッケージ) +- **C# 開発環境**(Visual Studio、Rider、または VS Code) +- 画像リソースが含まれるサンプル PDF(ここでは `Sensitive.pdf` と呼びます) + +追加のサードパーティツールや OCR は不要で、純粋にコードだけで完結します。 + +## ステップ 1: PDF ドキュメントを C# で読み込む – 最初のステップ + +何かを赤字処理する前に、まずファイルをメモリに読み込む必要があります。`Document` クラスはすべての Aspose PDF 操作のエントリーポイントです。 + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**なぜ重要か:** +`Document` は PDF 全体の構造を解析し、ページ、リソース、アノテーションを操作できるオブジェクトモデルを構築します。ファイルが読み込めない(パスが間違っている、PDF が破損している)場合は、すぐに例外がスローされるため、問題を早期に検知できます。 + +### よくある落とし穴 + +> *「ファイルは存在するのに `FileNotFoundException` が出ます。」* +> パスが絶対パスであること、またはプロジェクトの作業ディレクトリが `Sensitive.pdf` の場所と一致していることを確認してください。`Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")` を使用すると、相対パスに起因する問題を回避できます。 + +## ステップ 2: 最初の PDF ページにアクセス – 画像が存在する場所 + +画像はページごとのリソースとして格納されています。シンプルな PDF では最初のページに画像があることが多いため、まずそれを取得します。 + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**なぜ重要か:** +Aspose PDF はページ番号を 1 から始まるインデックスで扱うため、ほとんどの .NET コレクションとは異なります。誤ったページにアクセスすると、別のコンテンツを赤字処理してしまうか、あるいは機密画像がそのまま残ってしまう危険があります。 + +### エッジケースの考慮 + +ドキュメントにページが全くない(空の PDF)場合、`pdfDocument.Pages[1]` を実行すると `IndexOutOfRangeException` がスローされます。簡単なガードを入れることで回避できます。 + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +## ステップ 3: PDF から画像を削除 – リソースを赤字処理 + +Aspose PDF ではリソース名で削除できます。多くの画像は `Im1`、`Im2` などの名前が付けられていますが、`firstPage.Resources.Images` を確認すれば実際の名前が分かります。 + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**なぜ重要か:** +`RedactResource` は画像を削除すると同時に、ページ上のその参照もすべて除去するため、壊れたリンクではなく空白領域で埋められます。これは PDF 標準に則ったクリーンなコンテンツ削除方法です。 + +### 正しい画像名の見つけ方 + +画像の名前が `"Im1"` かどうか確信が持てない場合は、次のようにします。 + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +このスニペットを実行し、コンソール出力を確認して、`"Im1"` を実際に表示されたキーに置き換えてください。 + +## ステップ 4: 赤字処理した PDF を保存 – 作業完了 + +不要な画像が削除されたので、変更をディスクに書き戻します。 + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**なぜ重要か:** +**新しい** ファイルに保存することで元のファイルはそのまま残り、万が一元に戻す必要がある場合の安全策となります。上書きが必要な場合は `Save` メソッドに元のパスを指定すればよいですが、その操作は取り消しできないことに注意してください。 + +### 結果の検証 + +任意の PDF ビューアで `Redacted.pdf` を開きます。画像があった箇所は空白になり、残りのドキュメントは元と同じに見えるはずです。ページレイアウトがずれている場合は、意図したリソースだけを削除し、共有 XObject を削除していないか再確認してください。 + +## 完全動作サンプル + +以上をまとめると、以下が完全に実行可能なプログラムです。 + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**期待される出力**(コンソール): + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +`Redacted.pdf` を開くと、以前 `Im1` だった画像が削除され、ページがすっきりとした状態になります。 + +## よくある質問 + +### 暗号化された PDF でも動作しますか? + +ソース PDF がパスワードで保護されている場合は、`Document` コンストラクタにパスワードを渡します。 + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### 画像が複数ページにまたがっている場合は? + +各ページをループし、同じ画像名で `RedactResource` を呼び出す(またはページごとに名前を取得する)例を示します。 + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### テキストも同様に赤字処理できますか? + +はい。`page.Contents.RedactText("confidential")` を使用するか、より高度なパターンには `Redactor` クラスを利用します。これは別のチュートリアルになるほどの内容ですが、原理は画像の処理と同様です。 + +## まとめ – 達成したこと + +**PDF をプログラムで赤字処理**する方法を以下の手順で実現しました。 + +1. Aspose PDF を使用した **PDF ドキュメントの C# での読み込み**。 +2. **最初の PDF ページへのアクセス** で対象リソースを特定。 +3. `RedactResource` による **PDF から画像の削除**。 +4. **保存** による安全なクリーン版の作成。 + +この手法は高速で再利用可能、バッチジョブでも動作するため、コンプライアンスパイプラインや自動レポート生成に最適です。 + +さらに踏み込むなら、以下を検討してください。 + +- PDF フォルダー全体に対する **バッチ赤字処理**。 +- `Redactor` を使った正規表現パターンによる **テキストの赤字処理**。 +- 赤字処理後に「サニタイズ済み」旨の **透かしを埋め込む**。 + +ぜひ試してみて、画像名ロジックを自分のファイルに合わせて調整してください。 + +{{< /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/performance-optimization/_index.md b/pdf/japanese/net/performance-optimization/_index.md index b4b6d3a34..11c313278 100644 --- a/pdf/japanese/net/performance-optimization/_index.md +++ b/pdf/japanese/net/performance-optimization/_index.md @@ -50,6 +50,9 @@ Aspose.PDF for .NET を使って、SVG ファイルを正確かつ効率的に P ### [Aspose.PDF for .NET を使用して PDF からフォントを埋め込み解除: ファイルサイズを縮小し、パフォーマンスを向上](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) Aspose.PDF for .NET を使用して、PDF ファイルからフォントの埋め込みを解除する方法を学びましょう。このステップバイステップガイドで、PDF のパフォーマンスを最適化し、ファイルサイズを縮小し、読み込み時間を短縮しましょう。 +### [Aspose.Pdf を使用した PDF 圧縮クイックガイド](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) +Aspose.Pdf を使って PDF を高速に圧縮する手順をステップバイステップで解説します。 + ## 追加リソース - [Aspose.PDF for Net ドキュメント](https://docs.aspose.com/pdf/net/) diff --git a/pdf/japanese/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/japanese/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..3219a8631 --- /dev/null +++ b/pdf/japanese/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,200 @@ +--- +category: general +date: 2026-03-06 +description: Aspose.Pdf を使用して PDF を瞬時に圧縮する方法を学びましょう。このガイドでは、ロスレス PDF 圧縮で PDF ファイルサイズを削減する方法を示します。 +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: ja +og_description: Aspose.Pdf を使用して PDF を圧縮する方法は?このステップバイステップのチュートリアルに従って、PDF ファイルサイズを削減し、ロスレスの + PDF 圧縮を実現し、最適化された PDF ファイルを保存しましょう。 +og_title: Aspose.PdfでPDFを圧縮する方法 – クイックガイド +tags: +- pdf +- aspnet +- csharp +title: Aspose.PdfでPDFを圧縮する方法 – クイックガイド +url: /ja/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose.PdfでPDFを圧縮する方法 – クイックガイド + +**PDFをぼやけさせずに圧縮**したいと思ったことはありませんか? あなたは一人ではありません。多くの開発者は、メール添付やウェブアップロード、ストレージ制限のために **PDFファイルサイズを削減** しなければならない場面で壁にぶつかりますが、画像品質が失われることを恐れています。 + +このチュートリアルでは、Aspose.Pdf の組み込みオプティマイザを使って **PDFを圧縮する方法** を示す、完全に実行可能なサンプルを順を追って解説します。最後まで読むと、**PDFファイルサイズを縮小** し、**ロスレスPDF圧縮** で画像を鮮明に保ち、どのビューアでも問題なく表示できる **最適化されたPDF** を **保存する** 方法が分かります。 + +## 学べること + +- 高解像度画像が多数埋め込まれた重い PDF をメモリに読み込む方法 +- Aspose.Pdf のデフォルトロスレス設定でオプティマイザを適用する方法 +- 結果を新しい、より小さなファイルとして永続化する方法 +- さらに圧縮率を上げたいときの調整ポイント + +外部ツールや不思議なコマンドライン操作は不要です。クリーンな C# コードと分かりやすい説明だけです。 + +## 前提条件 + +| 必要条件 | 理由 | +|----------|------| +| .NET 6.0 以降(または .NET Framework 4.6 以上) | Aspose.Pdf は両方をサポートしており、最新ランタイムの方がパフォーマンスが向上します。 | +| Aspose.Pdf for .NET NuGet パッケージ (`Aspose.Pdf`) | `Document` クラスがここに含まれています。 | +| 大きな画像を含む PDF(例: `HeavyImages.pdf`) | 圧縮対象として実際にサイズが大きいものが必要です。 | +| Visual Studio、Rider、または好みの C# エディタ | 快適に作業できる環境を選んでください。 | + +> **プロのコツ:** CI/CD パイプラインを使用している場合は、`.csproj` に NuGet 参照を追加しておくと、ビルドが参照を忘れることがありません。 + +```xml + + + +``` + +## 手順 1: 圧縮したい PDF を読み込む + +まず、ソースファイルを指す `Document` オブジェクトが必要です。章を編集する前に本を開くイメージです。 + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*なぜ重要か:* ファイルを読み込むことで Aspose.Pdf は埋め込まれたリソース(画像、フォント等)をすべて取得できます。このステップがなければ **PDFファイルサイズを縮小** する対象がありません。 + +## 手順 2: ロスレス PDF 圧縮を適用する + +Aspose.Pdf にはデフォルトで **ロスレスPDF圧縮** を実行する `Optimize` メソッドが用意されています。冗長なオブジェクトを除去し、画像を同等の視覚品質で再圧縮し、未使用のフォントを削除します。 + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*なぜ重要か:* デフォルトのオプティマイザは **PDFファイルサイズを縮小** しつつ、すべてのピクセルを保持するよう設計されています。もし品質の微小な低下を許容できる場合は、コメントアウトされた `OptimizationOptions` を使って数キロバイト分の速度向上と引き換えに圧縮率を上げることができます。 + +## 手順 3: 最適化された PDF を保存する + +ドキュメントが軽くなったので、新しいファイルとして書き出します。元のファイルをそのまま残しておく習慣は、設定をいろいろ試すときに特に有用です。 + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +保存後、ファイルサイズを比較してみましょう: + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +多くの場合、**30‑70 %** 程度の顕著なサイズダウンが確認できます(元の PDF に高解像度画像がどれだけ含まれていたかに依存します)。 + +![how to compress pdf illustration](image.png "how to compress pdf") + +*画像の代替テキスト:* PDF圧縮前後の比較 – 最適化前と最適化後 + +## 上級編: シナリオ別に圧縮を調整する + +デフォルトのオプティマイザは多くのケースで十分ですが、さらに **PDFファイルサイズを縮小** したい場合があります。 + +| シナリオ | 調整する設定 | 効果 | +|----------|--------------|------| +| ラスタ画像が多数含まれる PDF | `CompressImages = true` + `ImageQuality` を低めに設定(例: 70) | 画像バイト数が減少し、若干の画質低下が発生します。 | +| 重複フォントが含まれる PDF | `RemoveUnusedObjects = true` | 参照されていないフォントを除去します。 | +| 大量のメタデータがある PDF | `RemoveMetadata = true` | 隠れた XML/メタデータブロックを削除します。 | + +これらの設定は `OptimizationOptions` オブジェクトにまとめて、`pdfDoc.Optimize(options)` に渡すことができます。 + +## よくある質問 & エッジケース + +**PDF がすでに最適化されている場合はどうなりますか?** +Aspose.Pdf は依然としてドキュメントを走査しますが、サイズ変化は最小限です。すでに軽量なファイルに対してオプティマイザを実行しても安全で、破損の心配はありません。 + +**暗号化された PDF を圧縮できますか?** +可能です。ただし `Optimize` を呼び出す前にパスワードを提供する必要があります。例: + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**ベクターグラフィックだけの PDF はどうですか?** +ベクターオブジェクトは元々軽量なので、オプティマイザは主にラスタ画像とメタデータに焦点を当てます。純粋なベクターファイルでは modest な効果が期待できます。 + +## 完全な実行可能サンプル + +以下は新規 `.csproj` に貼り付けてそのまま実行できるコンソールアプリです。ロードから検証まで、ここで説明したすべての手順を網羅しています。 + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +プログラムを実行し、任意のビューアで `Optimized.pdf` を開くと、レイアウトや画像はそのままに、ファイルサイズだけが小さくなっていることが確認できます。これが **ロスレスPDF圧縮** の魔法です。 + +## 結論 + +Aspose.Pdf の組み込みオプティマイザを使った **PDF圧縮方法** を解説し、実践的な **PDFファイルサイズ削減** ワークフローを示しました。ロード → オプティマイズ → 保存 の 3 ステップを踏めば、**PDFファイルサイズを縮小** しつつ画像は **ロスレスPDF圧縮** で鮮明に保ち、**最適化されたPDF** を安心して downstream に配布できます。 + +次のステップに挑戦したいですか? オプティマイザをバッチスクリプトと組み合わせてフォルダ全体を一括処理したり、オプションの `OptimizationOptions` を試して最後の数キロバイトを絞り出したりしてみてください。デスクトップツール、Web API、サーバーサイドバッチのいずれでも同じ原則が適用できます。 + +PDF の取り扱いや Aspose.Pdf の細かな挙動、.NET のファイル I/O についてさらに質問があれば、下のコメント欄に書き込んでください。会話を続けましょう。圧縮、楽しんでください! + +{{< /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/programming-with-security-and-signatures/_index.md b/pdf/japanese/net/programming-with-security-and-signatures/_index.md index 78b2ae7b4..58c3a4a16 100644 --- a/pdf/japanese/net/programming-with-security-and-signatures/_index.md +++ b/pdf/japanese/net/programming-with-security-and-signatures/_index.md @@ -34,6 +34,8 @@ | [PDFファイルの署名を使用してスマートカードで署名する](./sign-with-smart-card-using-pdf-file-signature/) Aspose.PDF for .NET を使ってスマートカードでPDFファイルに署名する方法を学びましょう。安全なデジタル署名を実現するには、このステップバイステップガイドに従ってください。 | | [署名フィールドを使用してスマートカードで署名する](./sign-with-smart-card-using-signature-field/) Aspose.PDF for .NET を使ってスマートカードで安全に PDF に署名する方法を学びましょう。ステップバイステップのガイドに従って簡単に実装できます。 | | [C# で PDF 署名を確認する – 署名済み PDF ファイルの読み取り方法](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) Aspose.PDF for .NET を使用して、C# で署名済み PDF の署名情報を取得し、検証する方法を学びます。 | +| [C# で PDF の署名を検証する – 完全な Aspose ガイド](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) Aspose.PDF for .NET を使用して、C# で PDF のデジタル署名を検証し、信頼性を確認する手順をステップバイステップで解説します。 | +| [C# で PDF にデジタル署名を追加 – 完全ステップバイステップガイド](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) Aspose.PDF for .NET を使用して、C# で PDF にデジタル署名を追加する方法を完全に解説します。ステップバイステップで実装できます。 | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/japanese/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/japanese/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..e4b6ecdc3 --- /dev/null +++ b/pdf/japanese/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,258 @@ +--- +category: general +date: 2026-03-06 +description: Aspose.PDF を使用して PDF にデジタル署名を追加します。pkcs7 デタッチド署名の作成方法と、カスタムコールバックを使用して + pfx で PDF に署名する方法を学びます。 +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: ja +og_description: PDFにデジタル署名をすばやく追加します。このガイドでは、PKCS7 デタッチド署名を作成し、C# で PFX を使用して PDF + に署名する方法を示します。 +og_title: C#でPDFにデジタル署名を追加する – 完全プログラミングチュートリアル +tags: +- Aspose.PDF +- C# +- Digital Signature +title: C#でPDFにデジタル署名を追加する – 完全ステップバイステップガイド +url: /ja/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# デジタル署名 PDF の追加 – 完全ステップバイステップガイド + +法的に有効な署名が必要なのに、**add digital signature pdf** ファイルの追加方法が分からないことはありませんか?同じ壁にぶつかる開発者は多く、書類は署名を求める一方、コードベースはプレーンな PDF の生成しかできません。 + +このチュートリアルでは、Aspose.PDF for .NET を使って **add digital signature pdf** ドキュメントを追加し、PKCS#7 デタッチド署名を作成し、PFX 証明書で PDF に署名するハンズオンの解決策を順を追って説明します。最終的にすぐに実行できるスニペットを手に入れ、各呼び出しの「なぜ」を理解し、エッジケースに合わせて手法を調整できるようになります。 + +## 学べること + +- 未署名 PDF を読み込み、署名の準備をする方法。 +- **create pkcs7 detached signature** の仕組みと、埋め込み署名よりデタッチド署名を選ぶ理由。 +- カスタムコールバックを使用した **sign pdf using pfx** の正確な手順で、暗号プロセスをフルコントロールできる方法。 +- 一般的な落とし穴(証明書が見つからない、ハッシュアルゴリズムが間違っている等)のトラブルシューティングのコツ。 + +### 前提条件 + +| 要件 | 理由 | +|------|------| +| .NET 6.0 以降 | 最新の言語機能とメモリ管理の改善が利用できるため。 | +| Aspose.PDF for .NET (NuGet パッケージ) | `PdfFileSignature`、`PKCS7Detached` などの PDF ユーティリティを提供。 | +| 有効な PFX ファイル(`.pfx`)とプライベートキー | **sign pdf using pfx** 手順に必須。 | +| 基本的な C# の知識 | コードはシンプルですが、`using` 文の意味を理解していると助かります。 | + +> **プロのコツ:** PFX のパスワードはソース管理に含めないでください。環境変数や Azure Key Vault を使用して本番環境で管理しましょう。 + +--- + +## Aspose.PDF を使用したデジタル署名 PDF の追加方法 + +以下、プロセスを 5 つのステップに分解して解説します。各ステップにはコードスニペット、重要性の説明、簡単なチェックポイントを添えています。 + +![Screenshot of signed PDF in a viewer, showing a visible signature field](/images/add-digital-signature-pdf.png "add digital signature pdf example") + +### ステップ 1 – 未署名 PDF ドキュメントの読み込み + +まず、署名したい PDF を表す `Document` オブジェクトが必要です。`using var` を使うことでファイルハンドルが自動的に解放されます。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**Why?** +Aspose は PDF をオブジェクトグラフとして扱うため、ロードすることでページや注釈、後でハッシュ化される内部バイトストリームにアクセスできるようになります。 + +### ステップ 2 – PdfFileSignature ヘルパーの初期化 + +`PdfFileSignature` は実際に暗号化エンベロープを適用するクラスです。`PKCS7Detached` と密接に連携します。 + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**Why?** +署名ロジックをドキュメント本体から分離することで、署名前に透かしの追加など他の操作を同じ `Document` インスタンスで行えるようになります。 + +### ステップ 3 – PKCS#7 デタッチド署名の作成 (Create PKCS7 Detached Signature) + +**PKCS#7 デタッチド署名** は PDF のハッシュだけを保持し、PDF 本体は保持しません。大容量ドキュメントや元ファイルを変更したくない場合に最適です。 + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**カスタムコールバックが必要な理由** +署名鍵が HSM や Azure Key Vault に格納されていて、プライベートキーを直接取得できないケースがあります。`CustomSignHash` を提供すれば、ハッシュだけを鍵管理サービスに渡して署名を取得でき、秘密鍵は外部に漏れません。 + +**カスタムコールバックが不要な場合** +`CustomSignHash` を省略すれば、Aspose が PFX 内のプライベートキーを自動的に使用します。ただし、カスタムルートの方が柔軟性が高く、コンプライアンス要件に合致しやすいです。 + +### ステップ 4 – 特定ページへの署名適用 (Sign PDF Using PFX) + +ここで実際に可視的な署名フィールドをページ上に配置します。矩形は位置とサイズ(ポイント単位)を定義します。 + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**Why specify a rectangle?** +可視署名はエンドユーザーに「文書が署名されている」ことを示します。`isVisible` を `false` にすれば不可視署名となり、機能的には有効ですが発見しにくくなります。 + +**エッジケース:** PDF にページが無い(空ファイル)場合は `ArgumentOutOfRangeException` がスローされます。署名前に必ず `pdfDocument.Pages.Count > 0` を確認してください。 + +### ステップ 5 – 署名済み PDF の保存 + +最後に署名済みドキュメントをディスクに永続化します。ASP.NET Core ではレスポンスに直接ストリームすることも可能です。 + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**Verification tip:** 出力ファイルを Adobe Acrobat Reader で開き、署名パネルに緑のチェックマークが表示されていれば(マシン上で証明書が信頼されている場合)成功です。 + +--- + +## 完全な動作例 + +すべてをまとめた、パスとパスワードさえ調整すればそのままコピー&ペーストで実行できるコンソールプログラムです。 + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**期待される出力:** コンソールに「✅ PDF signed successfully!」と表示され、同フォルダに `CustomSigned.pdf` が生成されます。開くと座標 (100,100)‑(300,200) に署名ウィジェットが表示されます。 + +--- + +## よくある質問とエッジケース + +### PFX がスマートカードで保護されている場合は? + +`CustomSignHash` デリゲートを使用してハッシュをスマートカードドライバに渡します。ドライバが署名バイトを返し、Aspose がそれを埋め込むのでプライベートキーは一切露出しません。 + +### 複数ページに同時に署名できるか? + +可能です。ループ内で `pdfSigner.Sign` を呼び出し、`pageNumber` と必要に応じて矩形を変更してください。呼び出しごとに別個の署名オブジェクトが追加され、ビューアによっては個別に一覧表示されます。 + +### ハッシュアルゴリズムを変更したい場合は? + +`PKCS7Detached` のデフォルトは SHA‑256 ですが、`HashAlgorithm` プロパティで変更できます。 + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +使用する署名プロバイダが選択したアルゴリズムをサポートしていることを確認してください。 + +### クライアントマシンで証明書チェーンが信頼されていない場合は? + +PFX にフルチェーンを含めるか、ルート証明書をエンドユーザーの信頼ストアに配布してください。そうしないと Acrobat が「署名が不明」と報告します。 + +### デタッチド署名は PDF/A‑3 と互換性があるか? + +PDF/A‑3 は埋め込み署名を要求するため、デタッチド PKCS#7 は準拠しません。その場合は `CustomSignHash` デリゲートを使用せず、Aspose に内部で署名させることで埋め込み署名が生成されます。 + +--- + +## 本番環境でのベストプラクティス + +1. **パスワードをハードコードしない。** 環境変数やシークレットマネージャーから取得する。 +2. **署名前に PDF を検証する。** 破損したファイルは `PdfFileSignatureException` を引き起こす。 +3. **ハッシュアルゴリズムと証明書サムプリントをログに残す** ことで監査証跡を確保。 +4. **複数の PDF ビューアでテストする**(Adobe Reader、Foxit、Chrome など)署名が期待通りに表示されるか確認。 +5. **タイムスタンプの導入を検討** し、TSA(Time‑Stamp Authority)リクエストを追加すると法的な有効性がさらに高まります。 + +--- + +## 結論 + +本稿では Aspose.PDF を用いて **add digital signature pdf** ファイルを追加し、**PKCS#7 デタッチド署名** を作成、さらにカスタムコールバックで **sign pdf using pfx** する方法を示しました。完全なサンプルはそのまま実行可能で、各ステップの解説により HSM やタイムスタンプサービス、PDF/A 準拠といったシナリオへの拡張も容易です。 + +次のステップとしては、**バッチで複数文書を署名**、**Azure Key Vault と統合**、あるいは **署名外観のビジュアルカスタマイズ** などに挑戦してみてください。これらはすべて本記事で築いた基盤の上に構築できます。 + +手順通りに進めれば、チームと共有できる信頼性の高いソリューションが完成します。質問や不明点があれば遠慮なくコメントしてください。署名作業、楽しんでください! + +{{< /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/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/japanese/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..6799d2bee --- /dev/null +++ b/pdf/japanese/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-03-06 +description: Aspose PDF を使用して C# で PDF の署名を検証する方法を学びましょう。ステップバイステップの PDF 署名検証、PDF + 署名の検証、そして改ざんされた署名の処理。 +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: ja +og_description: Aspose PDF を使用して PDF の署名を検証する方法。このガイドに従って PDF 署名の検証を実行し、PDF 署名を検証し、C# + で改ざんされた署名を検出します。 +og_title: C#でPDFの署名を検証する方法 – 完全なAsposeガイド +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: C# を使って PDF の署名を検証する方法 – 完全 Aspose ガイド +url: /ja/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# を使用した PDF の署名検証方法 – 完全な Aspose ガイド + +PDF の署名を**どのように検証するか**、頭を抱えずに知りたくなったことはありませんか? あなたは一人ではありません。多くの開発者が、コンプライアンスや監査のために**pdf signature verification**が必要になると壁にぶつかります。通常の「ライブラリを信頼すればいい」というアプローチは裏目に出ることがあります。 + +このチュートリアルでは、実用的なエンドツーエンドのソリューションを順に解説します。このソリューションは**validate pdf signature**するだけでなく、署名が改ざんされているかどうかも教えてくれます。**Aspose PDF** ライブラリを使用するので、コードは .NET 6+、.NET Framework 4.6+、さらには .NET Core でも動作します。最後まで読めば、任意の C# プロジェクトに貼り付けられる実行可能なスニペットが手に入ります。 + +## 必要なもの + +- **Aspose.Pdf** NuGet パッケージ(執筆時点の最新バージョン – 23.12)。 +- .NET 開発環境(Visual Studio、Rider、または VS Code)。 +- 署名済み PDF ファイル(ここでは `Signed.pdf` と呼びます)。 +- 基本的な C# の知識 – 特別なことは不要で、通常の `using` 文と `Console` の入出力さえあれば OK。 + +以上です。余計なサービスやマニアックな設定ファイルは不要です。準備はいいですか?さっそく始めましょう。 + +![署名検証の流れ図](image.png "署名検証") + +## 手順 1: PDF 署名検証のためにプロジェクトを設定する + +Aspose API を呼び出す前に、ライブラリへの参照を追加する必要があります。ターミナルまたは Package Manager Console を開き、次のコマンドを実行してください。 + +```bash +dotnet add package Aspose.Pdf +``` + +または、UI が好きな場合は NuGet パッケージ マネージャーで **Aspose.Pdf** を検索してインストールしてください。この手順は重要です。**aspose pdf signature** アセンブリがなければ、後で `PdfFileSignature` クラスにアクセスできなくなります。 + +> **プロのコツ:** .NET 6 以上をターゲットにすると、最高のパフォーマンスが得られ、レガシー互換性の警告を回避できます。 + +## 手順 2: PDF ドキュメントを読み込む + +パッケージがインストールされたので、チェックしたい PDF を読み込めます。`Document` クラスはメモリ上のファイル全体を表します。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**なぜ重要か:** ドキュメントを読み込むことで、署名フィールドを含む内部構造にアクセスできます。ファイルが存在しない、または破損している場合、`Document` は例外をスローし、これを捕捉すればよりユーザーフレンドリーな体験が提供できます。 + +## 手順 3: Aspose PdfFileSignature オブジェクトを作成する + +ドキュメントが手元にあるので、次は `PdfFileSignature` をインスタンス化します。このファサードクラスは、PDF に埋め込まれたデジタル署名の読み取り、検証、操作方法を知っています。 + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**説明:** `PdfFileSignature` コンストラクタはロードされた `Document` を受け取ります。内部で署名ディクショナリを解析し、`VerifySignature` や `IsSignatureCompromised` といったメソッドが利用可能になります。 + +## 手順 4: 署名の完全性を検証する + +**pdf signature verification** の核心は `VerifySignature` メソッドです。暗号ハッシュが保存された値と一致し、証明書チェーンが信頼できる場合(信頼マネージャーを設定している前提で、ここでは省略します)に `true` を返します。 + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +複数の署名がある場合は、インデックス(`0`、`1`、…)を変更するだけです。このメソッドは一度に完全性と信頼性の両方をチェックするため、ほとんどのシナリオで推奨されます。 + +## 手順 5: 破損した署名を検出する + +署名が“有効”でも、署名後にドキュメントが変更されると破損する可能性があります。Aspose はその微妙なケースを検出するために `IsSignatureCompromised` を提供しています。 + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**使用タイミング:** PDF が署名された後、ユーザーがコメントを追加したりページを変更したりしたとします。ハッシュが変わり、`IsSignatureCompromised` は `true` を返しますが、証明書自体に問題がなければ `VerifySignature` は依然として `true` になることがあります。両方のフラグをチェックすることで、全体像が把握できます。 + +## 手順 6: 結果を解釈する + +ここでは 2 つのブール値、`isSignatureValid` と `isSignatureCompromised` を取得しました。これらを分かりやすいコンソール出力に変換しましょう。 + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### 期待される出力 + +| Scenario | Console Output | +|---------------------------------------|--------------------------------| +| 有効でかつ破損していない | `Signature OK` | +| 有効だが破損している(ドキュメントが変更された) | `Signature compromised!` | +| 無効(証明書が信頼されていない、ハッシュ不一致) | `Signature verification failed` | + +## 完全な動作例 + +すべてを組み合わせた、完全で実行可能なプログラムを以下に示します。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +`pdfPath` を調整してコピー&ペーストし、実行してください。設定が正しければ、上記の 3 つのメッセージのいずれかが表示されます。 + +## PDF 署名検証の一般的な落とし穴とヒント + +| Issue | Why it Happens | How to Fix / Avoid | +|-------|----------------|--------------------| +| **Aspose ライセンスがない** | 無料評価版は透かしを追加し、いくつかの API 呼び出しを制限する可能性があります。 | ライセンスを登録します(`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`)。 | +| **複数の署名があるがインデックスが間違っている** | 間違った署名をチェックしている可能性があり、偽陰性が発生します。 | `signatureVerifier.GetSignatureCount()` をループし、各署名を検査します。 | +| **証明書チェーンが信頼されていない** | `VerifySignature` は、ルート CA が信頼ストアにない場合に失敗します。 | 署名 CA を Windows の信頼されたルート ストアに追加するか、カスタム `CertificateValidator` を構成します。 | +| **別プロセスによってファイルがロックされている** | 他の場所で開かれたままの PDF を開くと `IOException` がスローされることがあります。 | `FileShare.ReadWrite` を使用した `FileStream` を使うか、まず一時ファイルにコピーします。 | +| **PDF パスが間違っている** | 単純なタイプミスにより `FileNotFoundException` が発生します。 | ロード前に `File.Exists(pdfPath)` でパスを検証します。 | + +### 発生し得るエッジケース + +- **Detached signatures**: 一部の PDF は署名を外部に保存します。Aspose の `PdfFileSignature` は現在、埋め込み署名のみをサポートしています。 +- **Timestamped signatures**: タイムスタンプ認証局(TSA)を検証する必要がある場合は、カスタム `VerificationOptions` オブジェクトを使用して `VerifySignature` を呼び出す必要があります—この簡易ガイドの範囲外ですが、コンプライアンス重視のプロジェクトでは留意すべき点です。 + +## 次のステップ – 検証ロジックの拡張 + +これで **how to verify signature** の基本をマスターしたので、次のことを検討できるでしょう。 + +1. **Validate PDF signature** を信頼できる証明書リスト(例: 企業 PKI)と照合する。 +2. `GetSignatureInfo` を使用して **Export signature details**(署名者名、署名時刻、証明書のサムプリント)をエクスポートする。 +3. フォルダー内の複数 PDF を **Batch‑process multiple PDFs** し、監査目的で結果を CSV に記録する。 + +これらはすべて、先ほどのコードのシンプルな拡張であり、同じ **aspose pdf signature** エコシステム内に留まります。 + +--- + +**要点**として、C# と Aspose を使用して PDF の **how to verify signature** 方法、破損した署名の検出方法、検証が失敗したときの対処法を正確に理解できました。このアプローチは堅牢で、複数の署名にも対応し、より大規模な文書処理パイプラインに統合可能です。 + +このシナリオに別の要件がありますか? 署名の検証ではなく PDF に署名する必要がある、あるいは暗号化された PDF を扱っている場合は、コメントを残してください。皆でその方向を探ります。ハッピーコーディング! + +{{< /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/programming-with-stamps-and-watermarks/_index.md b/pdf/japanese/net/programming-with-stamps-and-watermarks/_index.md index cb52315a7..dac1c5402 100644 --- a/pdf/japanese/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/japanese/net/programming-with-stamps-and-watermarks/_index.md @@ -39,6 +39,7 @@ Aspose.PDF の .NET 向けチュートリアル「スタンプと透かしを使 | [ヘッダーフッターセクションの表](./table-in-header-footer-section/) Aspose.PDF for .NET を使用して、PDF ファイルのフッターにテキストを簡単に追加する方法を学びましょう。シームレスな統合のためのステップバイステップガイドが付属しています。 | | [PDFファイルのフッター内のテキスト](./text-in-footer/) Aspose.PDF for .NET を使用して PDF ファイルのフッターにテキストを追加する方法を学習します。 | | [PDFファイルのヘッダー内のテキスト](./text-in-header/) Aspose.PDF for .NET を使用してPDFにテキストヘッダーを追加する方法をステップバイステップで学ぶチュートリアルです。ドキュメントを効率的かつ効果的に強化しましょう。 | +| [C# でベーツ番号付けされた PDF ドキュメントを作成する – 完全ガイド](./create-pdf-document-with-bates-numbering-in-c-full-guide/) Aspose.PDF for .NET を使用して、C# でベーツ番号を付与した PDF を作成する手順をステップバイステップで解説します。 | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/japanese/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/japanese/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..2fae7c568 --- /dev/null +++ b/pdf/japanese/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,180 @@ +--- +category: general +date: 2026-03-06 +description: C#でPDFドキュメントを作成し、ベーツ番号を簡単に追加します。空白ページのPDFを追加する方法、ページにスタンプを配置する方法、ベーツ番号付けの実装方法を学びましょう。 +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: ja +og_description: C#でPDF文書を作成し、ベーツ番号を追加します。このガイドでは、空白ページのPDFを追加し、ページにスタンプを配置し、ベーツ番号付けを適用する方法を示します。 +og_title: Bates番号付けでPDFドキュメントを作成 – C#チュートリアル +tags: +- Aspose.Pdf +- C# +- PDF automation +title: C#でベーツ番号付きPDFドキュメントを作成する – 完全ガイド +url: /ja/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# でベーツ番号付き PDF ドキュメントを作成する + +PDF ドキュメントを **C# で作成** したいとき、ベーツ番号をどうやって追加すればいいのか悩んだことはありませんか? あなた一人だけではありません。法律事務所や裁判所、さらには企業のコンプライアンスチームでも、毎日この課題に直面しています。朗報です! Aspose.Pdf の数行のコードで、真っ新な PDF を生成し、空白ページを追加し、スムーズにベーツ番号をスタンプできるようになります。 + +このチュートリアルでは、プロジェクトのセットアップから空白ページ PDF の追加、**ベーツ番号の付け方**、そして **ページへのスタンプ配置** と保存までの全工程を順を追って解説します。最後まで読めば、任意の .NET アプリに貼り付け可能な完成形のコードスニペットが手に入ります。曖昧な説明は一切なく、実行可能なサンプルがすべて揃っています。 + +## 必要なもの + +- **.NET 6+**(または .NET Framework 4.6+ – Aspose.Pdf はどちらでも動作します) +- **Aspose.Pdf for .NET** NuGet パッケージ(`Install-Package Aspose.Pdf`) +- 使いやすい IDE(Visual Studio、Rider、または C# 拡張機能付き VS Code) + +以上です。余計な DLL や外部サービスは不要です。さっそく始めましょう。 + +## Step 1: Create PDF Document – Initial Setup + +まずは新しい `Document` オブジェクトを作ります。これは、すべてのコンテンツが配置される空のキャンバスと考えてください。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **ポイント:** `Document` クラスは Aspose のすべての操作のエントリーポイントです。インスタンス化することで、`Pages` コレクションやメタデータ、セキュリティ設定など、プロフェッショナルな PDF を構築するための基礎にアクセスできます。 + +## Step 2: Add Blank Page PDF + +ページのない PDF は、ページのない本と同じで実用的ではありません。空白ページを追加すれば、ベーツ番号をスタンプする土台ができます。 + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **プロのコツ:** 複数ページが必要な場合は、ループ内で `pdfDocument.Pages.Add()` を呼び出すだけです。各呼び出しは独立してカスタマイズ可能な新しい `Page` オブジェクトを返します。 + +## Step 3: How to Add Bates Numbering – Create the TextStamp + +ここが本題です:**ベーツ番号**。Aspose.Pdf では、特別なアーティファクトフラグを付けた `TextStamp` として実装されます。 + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **`Artifact` を設定する理由:** 一部の PDF リーダーはベーツ番号を検索可能なメタデータとして扱います。スタンプを `BatesNumbering` アーティファクトとしてフラグ付けすれば、下流ツールが自動的に認識できるようになります。 + +## Step 4: Place Stamp on Page + +スタンプが用意できたら、**ページにスタンプを配置** します。ここで実際に PDF に番号が表示されます。 + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **エッジケース:** 各ページで番号をインクリメントしたい場合は、`pdfDocument.Pages` をループし、`AddStamp` を呼ぶ前に `batesStamp.Value` を更新します。この例ではシンプルに固定の “Bates‑001” を使用しています。 + +## Step 5: Save and Verify the Result + +最後に PDF をディスクに保存します。書き込み権限のあるフォルダーを選択してください。権限が不足していると `UnauthorizedAccessException` が発生します。 + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +`BatesStamped.pdf` を任意のビューアで開くと、空白ページの右下に小さな “Bates‑001” がきれいに表示されているはずです。 + +> **期待される出力:** +> ![PDF with Bates number stamp](image-placeholder.png "PDF with Bates number stamp") +> *Alt text: PDF with Bates number stamp on the bottom‑right corner.* + +番号が表示されない場合は、余白の値やページサイズ(デフォルトの A4 で問題ありません)を再確認してください。また、`Artifact` フラグが後処理ツールで除去されていないかもチェックしましょう。 + +## Full Working Example + +以下は、コピー&ペーストだけで動作する完全版プログラムです。`using` ディレクティブとコメントをすべて含んでいるので、すぐに実行できます。 + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +プログラムを実行し、PDF を開けば、ベーツ番号が指定した位置に正しく配置されているのが確認できます。 🎉 + +## Common Variations & Gotchas + +| シナリオ | 変更点 | 理由 | +|----------|----------------|-----| +| **複数ページで番号をインクリメント** | `pdfDocument.Pages` をループし、`AddStamp` 前に `batesStamp.Value = $"Bates-{i:D3}"` を設定 | 各ページに固有の識別子を付与でき、法的バンドルで一般的に使用されます | +| **別の配置(左上)** | `HorizontalAlignment = HorizontalAlignment.Left` と `VerticalAlignment = VerticalAlignment.Top` に変更 | 組織によってはヘッダーに番号を入れる方が好まれる場合があります | +| **カスタムフォントや色** | `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` を設定 | 可読性向上やブランドガイドラインへの適合に役立ちます | +| **既存 PDF を背景として追加** | `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` を使用 | 事前に生成されたフォーム上にスタンプを重ねる必要がある場合に便利です | + +## Wrapping Up + +ここまでで、**PDF ドキュメントの作成**、**空白ページ PDF の追加**、そして **ベーツ番号の付与** を Aspose.Pdf for .NET で実装し、**ページへのスタンプ配置** と保存までを実演しました。コードは意図的にコンパクトにしてあるので、数十ファイルのバッチ処理や Web サービスへの統合といった大規模ワークフローにも容易に拡張できます。 + +次のステップとしては以下を検討してください: + +- 大量のケースファイル向けにインクリメントロジックを自動化する +- PDF 生成を ASP.NET Core API に組み込む +- `pdfDocument.Encrypt(...)` でパスワード保護などのセキュリティを追加する + +ぜひ実験し、試行錯誤しながらコメントで質問を共有してください。コーディングを楽しみながら、常に完璧にスタンプされた PDF を手に入れましょう! + +{{< /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/programming-with-tagged-pdf/_index.md b/pdf/japanese/net/programming-with-tagged-pdf/_index.md index 59ec0ee2b..c89d40840 100644 --- a/pdf/japanese/net/programming-with-tagged-pdf/_index.md +++ b/pdf/japanese/net/programming-with-tagged-pdf/_index.md @@ -45,6 +45,7 @@ Aspose.PDF for .NET の「タグ付き PDF を使ったプログラミング」 | [PDFファイル内のテキスト構造要素](./text-structure-elements/) Aspose.PDF for .NET を使って、PDF 内のテキスト構造要素を操作する方法を学びましょう。このステップバイステップガイドでは、構造化された PDF を作成するために必要なすべての手順を網羅しています。 | | [PDFファイルの検証](./validate-pdf/) Aspose.PDF for .NET を使って PDF ファイルを検証する方法を学びましょう。標準規格への準拠を確認し、検証レポートを生成します。 | | [C# でタグ付き PDF を作成する – 完全ステップバイステップガイド](./create-tagged-pdf-in-c-complete-step-by-step-guide/) Aspose.PDF for .NET を使用して、C# でタグ付き PDF を最初から作成する方法をステップバイステップで解説します。 | +| [C# でタグ付き PDF を作成する – ステップバイステップガイド](./create-tagged-pdf-in-c-step-by-step-guide/) Aspose.PDF for .NET を使用して、C# でタグ付き PDF を作成する方法をステップバイステップで解説します。 | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/japanese/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/japanese/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..ffdb9359b --- /dev/null +++ b/pdf/japanese/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,279 @@ +--- +category: general +date: 2026-03-06 +description: C#でAspose.Pdfを使用してタグ付きPDFを作成する。PDFに画像を追加し、図の位置を設定し、アクセシビリティのためにPDFにタグ付けする方法を学びます。 +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: ja +og_description: Aspose.Pdfでタグ付きPDFを作成する。このガイドでは、PDFに画像を追加し、図の位置を設定し、アクセシビリティのためにPDFにタグを付ける方法を示します。 +og_title: C#でタグ付きPDFを作成する – 完全チュートリアル +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: C#でタグ付きPDFを作成する – ステップバイステップガイド +url: /ja/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# でタグ付き PDF を作成 – 完全チュートリアル + +**タグ付き PDF を作成**したいけど、どこから始めればいいか分からないことはありませんか? 最近はアクセシビリティが必須で、タグ付き PDF は準拠した文書の基盤です。このチュートリアルでは、**PDF に画像を追加**し、図の位置を設定し、Aspose.Pdf を使って **PDF にタグを付ける方法** を実演します。最後まで読めば、誰にでも配布できる完全にタグ付けされた PDF が手に入ります。 + +既存ファイルの読み込みから最終出力の保存までをすべてカバーしますので、別途「画像を追加する方法」を探す必要はありません。余計な説明は省き、Aspose.Pdf 23.8(執筆時点での最新)で動作する明快で実行可能なソリューションをご提供します。IDE を用意して、さっそく始めましょう。 + +--- + +## 必要なもの + +- **Aspose.Pdf for .NET**(NuGet パッケージ `Aspose.Pdf`)。 +- .NET 6+(または .NET Framework 4.7.2+)。 +- すでに論理構造(タグ付け)がある入力 PDF ― ない場合は `pdfDocument.TaggedContent = true` でタグ付けを有効にできます。 +- 埋め込みたい画像ファイル(`image.png`)。 + +以上です。追加のライブラリや特殊な設定ファイルは不要です。 + +--- + +## 手順 1: 既存 PDF ドキュメントを読み込む(タグ付き PDF のベース作成) + +まず、拡張したい PDF を開きます。ファイルを読み込むことで、論理構造へアクセスでき、**タグ付き PDF を作成**するワークフローに不可欠です。 + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*ポイント:* タグツリーが無いと、PDF はスクリーンリーダーに構造情報を伝えられません。タグ付けを有効にすることで、後から追加する要素(例: 図)も正しい階層を継承します。 + +--- + +## 手順 2: 論理構造のルートにアクセスする(PDF にタグを付ける方法) + +次に、PDF の論理構造へ手を伸ばします。ルート要素はすべてのタグのコンテナで、文書のアウトラインと考えてください。 + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*解説:* `logicalRoot` を使って `
` や `
` といった新しいタグを追加できます。これが **PDF にタグを付ける方法** の中心です。 + +--- + +## 手順 3: Figure タグを作成し位置を設定する(図の位置設定) + +*Figure* タグは視覚コンテンツとオプションのキャプションをまとめます。ここでタグを作成し、位置を決めてルートに添付します。 + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*なぜ位置を設定するのか:* **図の位置設定** ステップは、視覚要素がページ上のどこに配置されるかを決めます。これを省くと、図が予期しない場所に表示されたり、支援技術から見えなくなったりします。 + +--- + +## 手順 4: ビジュアルを追加 – 画像を挿入する(PDF に画像を追加) + +タグが用意できたら、実際の画像を埋め込みます。ここが **PDF に画像を追加** する部分です。 + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*重要ポイント:* 矩形座標は先ほど定義した `figureTag.Position` と一致させる必要があります。ずれていると、図とビジュアルコンテンツが同期せず、アクセシビリティが損なわれます。 + +--- + +## 手順 5: 更新した PDF を保存する(タグ付き PDF の作成完了) + +最後に、変更を新しいファイルに保存します。元のファイルをそのまま残すのがベストプラクティスです。 + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +この段階で **タグ付き PDF** が完成し、正しく位置付けられた画像が `
` タグでラップされています。`output.pdf` を Adobe Acrobat で開き、*Tags* パネルを確認してください。ルートの下に `Figure` ノードが表示されているはずです。 + +--- + +## 完全に動作するサンプルコード + +以下はコンソールアプリにそのまま貼り付けられる完全プログラムです。すべての手順が正しい順序で記述されています。 + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### 期待される結果 + +- `output.pdf` が (100, 150) ポイントの位置に、サイズ 300 × 200 ポイントで画像を表示。 +- *Tags* パネルに画像を包む `Figure` 要素が表示。 +- スクリーンリーダーが画像を説明する前に「Figure」と読み上げ、基本的なアクセシビリティ基準を満たす。 + +--- + +## よくある質問とエッジケース + +### ソース PDF がまだタグ付けされていない場合は? + +Aspose.Pdf では `pdfDocument.TaggedContent.IsTagged = true;` と設定すればタグ付けをオンにできます。ライブラリがデフォルトのタグツリーを生成し、その後にカスタムタグを追加できます。 + +### 図にキャプションを付けられますか? + +はい。`figureTag` を作成した後、`Paragraph` と `TextFragment` を添付し、`Tag` を `Caption` に設定すれば可能です。例: + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### 別のページに図を配置したい場合は? + +`var firstPage = pdfDocument.Pages[1];` を目的のページインデックスに置き換えます(例: `pdfDocument.Pages[3]`)。ページサイズが異なる場合は `Position` 座標も調整してください。 + +### 複数の画像にタグを付ける必要がある場合は? + +画像ごとに新しい `Figure` を作成し、固有の `Position` を設定して対応する `Image` オブジェクトをページに追加します。画像コレクションをループ処理すれば簡単です。 + +### PDF/A 準拠でも動作しますか? + +Aspose.Pdf は PDF/A‑1b、PDF/A‑2b、PDF/A‑3b をサポートしています。PDF/A ドキュメントを生成する際は、保存前にコンプライアンスモードを設定してください。 + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +タグ付けロジックは同じです。 + +--- + +## プロのコツと落とし穴 + +- **プロのコツ:** 絶対パスまたは `Path.Combine` を使用して、実行時のファイル未検出エラーを防止しましょう。 +- **注意点:** `Figure` タグと `Image` 矩形の座標が一致していないと、支援技術が正しく認識できません。 +- **パフォーマンス:** 多数のページを処理する場合は、画像ストリームを `using` ブロックで囲んでリソースを速やかに解放してください。 +- **バージョン確認:** 本 API は Aspose.Pdf 23.8+ で動作します。古いバージョンではクラス名が若干異なることがあります(例: `LogicalStructureElement` が `FigureElement` の代わりになる場合あり)。 + +--- + +## 結論 + +ここまでで **タグ付き PDF の作成** を最初から最後まで実演し、**PDF に画像を追加** し、**図の位置設定** を行いながら **PDF にタグを付ける方法** と **画像を追加する方法** を一つの統合例で示しました。コードはすぐに実行可能で、各ステップの「なぜ」を解説しています。これで C# でアクセシブルな PDF を構築するための堅実な基盤が手に入りました。 + +次のチャレンジはどうですか? `
` タグで表を追加したり、アーカイブ目的で PDF/A‑2b 準拠レイヤーを埋め込んでみましょう。ロード → 論理構造へのアクセス → タグ作成 → ビジュアルコンテンツ添付 → 保存、というパターンはほとんどの PDF アクセシビリティ作業に共通です。 + +質問やカバーされていないユースケースがあれば、下のコメント欄にどうぞ。タグ付けを楽しんで、すべての人が読める PDF を作りましょう! + +![Diagram showing a PDF with a Figure tag and image – illustrates how to create tagged pdf](placeholder-image.png "タグ付き PDF の作成例") + +{{< /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/digital-signatures/_index.md b/pdf/korean/net/digital-signatures/_index.md index 06f7f40c1..1bf38f28a 100644 --- a/pdf/korean/net/digital-signatures/_index.md +++ b/pdf/korean/net/digital-signatures/_index.md @@ -53,6 +53,8 @@ Aspose.PDF for .NET을 사용하여 PDF 파일의 디지털 서명을 확인하 ### [C#에서 PDF 서명 검증 – 디지털 서명 PDF 검증을 위한 완전 가이드](./verify-pdf-signature-in-c-complete-guide-to-validate-digital/) C#를 사용하여 PDF 파일의 디지털 서명을 검증하는 방법을 단계별로 안내합니다. +### [C#를 사용하여 PDF에서 서명 읽는 방법 – 단계별 가이드](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +C#를 사용해 PDF 파일에서 디지털 서명을 추출하고 검증하는 방법을 단계별로 안내합니다. ## 추가 자료 diff --git a/pdf/korean/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/korean/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..e9efc7376 --- /dev/null +++ b/pdf/korean/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,232 @@ +--- +category: general +date: 2026-03-06 +description: C#를 사용하여 PDF에서 서명을 읽는 방법. C#로 PDF 문서를 로드하고, PDF 서명을 나열하며, 디지털 서명을 빠르고 + 신뢰성 있게 가져오는 방법을 배웁니다. +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: ko +og_description: C#를 사용하여 PDF에서 서명을 읽는 방법. 이 가이드는 PDF 문서를 C#로 로드하고, PDF 서명을 나열하며, 디지털 + 서명을 몇 가지 간단한 단계로 가져오는 방법을 보여줍니다. +og_title: C#로 PDF 서명 읽는 방법 – 완전 가이드 +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: C#로 PDF 서명 읽는 방법 – 단계별 가이드 +url: /ko/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF에서 서명 읽는 방법 C# – 완전 가이드 + +PDF 파일에 이미 삽입된 **서명을 읽는 방법**을 궁금해 본 적 있나요? 아마도 컴플라이언스 대시보드를 구축하고 있거나, 데이터베이스에 들어가기 전에 서명된 계약서를 감사해야 할 수도 있습니다. 좋은 소식은 몇 줄의 C# 코드와 Aspose.Pdf 라이브러리를 사용하면 파일에서 바로 서명 이름을 추출할 수 있다는 것입니다—수동 검사가 필요 없습니다. + +이 튜토리얼에서는 C#에서 PDF 문서를 로드하고, PDF 서명을 나열하며, 디지털 서명 PDF 정보를 가져오는 과정을 단계별로 살펴봅니다. 최종적으로 모든 서명 이름을 출력하는 실행 가능한 콘솔 앱을 만들 수 있으며, 비밀번호로 보호된 파일과 같은 엣지 케이스를 처리하는 팁도 제공합니다. + +## Prerequisites + +- .NET 6.0 이상 (코드는 .NET Framework 4.6+에서도 동작합니다) +- Aspose.Pdf for .NET (Aspose 웹사이트에서 무료 임시 라이선스를 받을 수 있습니다) +- 이미 하나 이상의 디지털 서명이 포함된 PDF (샘플 `MultiSigned.pdf`가 저장소에 포함되어 있습니다) + +> **Pro tip:** Visual Studio를 사용한다면 *Nullable Reference Types*를 활성화하여 null 관련 버그를 조기에 잡아내세요. + +## Step 1: Load the PDF Document in C# + +먼저 디스크에 있는 PDF 파일을 나타내는 `Document` 객체가 필요합니다. Aspose.Pdf의 `Document` 클래스는 간단한 텍스트 추출부터 복잡한 폼 처리까지 모든 작업을 담당합니다. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**Why this matters:** PDF를 로드하면 파일이 존재하고 읽을 수 있는지 검증합니다. 파일이 손상되었거나 경로가 잘못되면 서명을 열거하려 할 때 발생할 수 있는 난해한 오류를 피하고 일찍 종료합니다. + +## Step 2: Create a `PdfFileSignature` Helper + +Aspose는 일반 PDF 처리(`Document`)와 서명 전용 작업(`PdfFileSignature`)을 분리합니다. 이 헬퍼를 인스턴스화하면 `GetSignatureNames()`와 같은 메서드에 접근할 수 있습니다. + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**Why this matters:** `PdfFileSignature` 클래스는 디지털 서명이 저장되는 PDF의 `/Sig` 사전 항목을 파싱하는 방법을 알고 있습니다. 이를 사용하면 서명이 추가된 그대로 정확히 읽어들여 암호화 메타데이터를 보존합니다. + +## Step 3: Retrieve All Signature Names + +이제 **서명을 읽는 방법**의 핵심 단계인 `GetSignatureNames()`를 호출합니다. 이 메서드는 각 서명의 *필드 이름*을 포함하는 문자열 배열을 반환합니다. + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**What you’ll see:** `MultiSigned.pdf`에 `Signature1`, `Signature2`, `Signature3`이라는 세 개의 서명이 포함되어 있다면 콘솔 출력은 다음과 같습니다: + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## Step 4: (Optional) Verify Each Signature’s Validity + +이름만 읽어도 충분한 경우가 많지만, 많은 프로젝트에서는 각 서명이 여전히 유효한지 확인해야 합니다. Aspose는 필드 이름을 통해 서명을 검증할 수 있게 해줍니다: + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **Edge case:** PDF가 비밀번호로 보호된 경우 `VerifySignature`를 호출하기 전에 비밀번호를 제공해야 합니다. 문서를 로드한 직후 `pdfDocument.Encrypt.Password = "yourPassword";`를 사용하세요. + +## Full Working Example + +아래는 새 콘솔 프로젝트(`dotnet new console`)에 복사·붙여넣기 할 수 있는 완전한 프로그램입니다. 모든 단계, 오류 처리 및 선택적 검증이 포함되어 있습니다. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**Expected output** (세 개의 유효한 서명이 있다고 가정): + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## Handling Common Variations + +| Situation | What to Change | Why | +|-----------|----------------|-----| +| **Password‑protected PDF** | `PdfFileSignature`를 만들기 전에 `pdfDocument.Encrypt.Password = "yourPwd";`를 설정합니다. | 비밀번호가 없으면 서명 사전이 암호화되어 `GetSignatureNames()`가 빈 배열을 반환합니다. | +| **Large PDFs ( > 100 MB )** | `pdfSigner.GetSignatureNames(0, 10)`을 사용해 결과를 페이지 단위로 가져옵니다(첫 번째 매개변수 = 시작 인덱스). | 전체 서명 목록을 한 번에 로드하면 메모리 사용량이 크게 증가할 수 있습니다. | +| **No signatures at all** | 코드는 이미 친절한 경고를 출력합니다. 이를 감사 이벤트로 로깅하는 것을 고려하세요. | 하위 프로세스가 파일을 거부할지, 서명된 버전을 요청할지 결정하는 데 도움이 됩니다. | +| **Custom signature field names** | 메서드는 서명 시 사용된 필드 이름을 그대로 반환합니다(예: `EmployeeApproval`). 추가 작업이 필요 없습니다. | 서명을 비즈니스 역할에 매핑할 수 있습니다. | + +## Best Practices & Tips + +- **Dispose objects**: `using var pdfSigner` 패턴을 사용하면 네이티브 리소스가 즉시 해제됩니다. +- **License early**: `Main` 시작 부분에 `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");`를 호출해 평가 워터마크를 방지하세요. +- **Thread safety**: 여러 PDF를 병렬 처리한다면 스레드당 별도의 `PdfFileSignature` 인스턴스를 생성하세요. 이 클래스는 스레드‑안전하지 않습니다. +- **Logging**: 운영 환경에서는 `Console.WriteLine`을 구조화된 로거(Serilog, NLog 등)로 교체해 감사 추적에 정확한 서명 이름을 기록하세요. +- **Version check**: 코드는 Aspose.Pdf for .NET 23.10 이상에서 동작합니다. 이전 버전에서는 `PdfSignature`를 사용해야 할 수 있습니다. + +## Conclusion + +우리는 C#을 사용해 **PDF에서 서명을 읽는 방법**을 다루었습니다. PDF 문서를 로드하고, `PdfFileSignature` 헬퍼를 만든 뒤 `GetSignatureNames()`를 호출하면 파일에 포함된 모든 디지털 서명을 나열할 수 있습니다. 선택적 검증을 통해 신뢰성을 높일 수 있으며, 샘플 코드는 실제 콘솔 앱에 통합하는 방법을 정확히 보여줍니다. + +다음 단계가 준비되셨나요? Aspose의 `DigitalSignatureUtil`과 결합해 서명자 인증서를 추출하거나, 서명 목록을 컴플라이언스 대시보드에 연결해 서명되지 않은 계약서를 표시해 보세요. 가능성은 무한합니다—빠른 감사를 위해 **load PDF document C#**, **list PDF signatures**, **get digital signatures PDF**를 기억하세요. + +행복한 코딩 되시고, PDF가 언제나 안전하게 서명되길 바랍니다! + +{{< /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-conversion/_index.md b/pdf/korean/net/document-conversion/_index.md index c0859ee6d..d5bcf943c 100644 --- a/pdf/korean/net/document-conversion/_index.md +++ b/pdf/korean/net/document-conversion/_index.md @@ -36,7 +36,8 @@ | [PDF를 HTML로](./pdf-to-html/) | Aspose.PDF for .NET을 사용하여 PDF를 HTML로 변환하는 방법을 단계별 가이드를 통해 알아보세요. 개발자와 콘텐츠 제작자에게 적합합니다. | | [PDF에서 PDFA로](./pdf-to-pdfa/) 이 단계별 튜토리얼을 통해 Aspose.PDF for .NET을 사용하여 PDF 파일을 PDF/A 형식으로 변환하는 방법을 알아보세요. | | [PDF에서 PDFA3b로](./pdf-to-pdfa3b/) | 이 단계별 가이드를 통해 Aspose.PDF for .NET을 사용하여 PDF 파일을 PDF/A-3B 형식으로 손쉽게 변환하는 방법을 알아보세요. | -| [PDF를 PDF/X‑4로 변환하기 – 단계별 ASP.NET PDF 튜토리얼](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | Aspose.PDF for .NET을 사용하여 PDF를 PDF/X‑4 형식으로 변환하는 단계별 C# 가이드입니다. | +| [PDF를 PDF/X‑4로 변환하기 – 단계별 ASP.NET PDF 튜토리얼](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | Aspose.PDF for .NET을 사용하여 PDF를 PDF/X‑4 형식으로 변환하는 단계별 C# 가이드입니다. | +| [Aspose PDF 튜토리얼: C#에서 PDF를 PDF/X‑4로 변환](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) | Aspose.PDF for .NET을 사용하여 C#에서 PDF를 PDF/X‑4 형식으로 변환하는 단계별 가이드입니다. | | [PDF를 PNG로 변환하는 글꼴 힌팅](./pdf-to-png-font-hinting/) | Aspose.PDF for .NET을 사용하여 간단한 단계별 가이드로 글꼴 힌팅을 적용하여 PDF를 PNG로 변환하는 방법을 알아보세요. | | [PDF를 PNG로 변환하는 튜토리얼 – C#에서 PDF 페이지를 PNG로 변환](./pdf-to-png-tutorial-convert-pdf-pages-to-png-in-c/) | Aspose.PDF for .NET을 사용하여 PDF 페이지를 PNG 이미지로 변환하는 방법을 단계별로 안내합니다. | | [PDF를 PPT로](./pdf-to-ppt/) | Aspose.PDF for .NET을 사용하여 PDF를 PPT로 변환하는 방법을 단계별 가이드를 통해 알아보세요. 쉽고 효율적이며 프레젠테이션에 적합합니다. | diff --git a/pdf/korean/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/korean/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..9c38eb6a4 --- /dev/null +++ b/pdf/korean/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,224 @@ +--- +category: general +date: 2026-03-06 +description: Aspose PDF Tutorial shows how to use Aspose to load a PDF document in + C#, convert PDF to PDF/X‑4, and save the converted PDF efficiently. +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: ko +og_description: Aspose PDF 튜토리얼은 C#에서 PDF 문서를 로드하고, PDF/X‑4 형식으로 변환한 다음, 명확한 코드 예제로 + 변환된 PDF를 저장하는 방법을 설명합니다. +og_title: 'Aspose PDF 튜토리얼: C#에서 PDF를 PDF/X‑4로 변환' +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: 'Aspose PDF 튜토리얼: C#에서 PDF를 PDF/X‑4로 변환' +url: /ko/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose PDF 튜토리얼: C#에서 PDF를 PDF/X‑4로 변환 + +일반 PDF를 PDF/X‑4 파일로 손쉽게 변환하는 방법을 궁금해 본 적 있나요? 당신만 그런 것이 아닙니다—개발자들은 종종 **load PDF document C#** 스타일로 PDF를 로드하고, 변환한 다음 **save the converted PDF** 를 다운스트림 워크플로에 사용해야 합니다. 이 가이드에서는 최신 Aspose.Pdf for .NET을 사용하여 정확히 그 작업을 수행하는 완전하고 실행 가능한 예제를 단계별로 살펴보겠습니다. + +우리는 라이브러리 설치, 원본 PDF 로드, PDF/X‑4 표준으로 변환, 그리고 최종적으로 디스크에 결과를 저장하는 모든 과정을 다룰 것입니다. 끝까지 읽으면 이 일반적인 변환 시나리오에 대한 **how to use Aspose** 를 확실히 이해하고, 엣지 케이스를 처리하는 팁도 얻을 수 있습니다. + +## 사전 요구 사항 + +- .NET 6.0 이상 (코드는 .NET Framework에서도 작동하지만 .NET 6+을 권장합니다). +- 유효한 Aspose.Pdf for .NET 라이선스 파일 (또는 빠른 테스트를 위해 평가 모드로 실행할 수 있습니다). +- Visual Studio 2022 또는 C# 호환 IDE. +- `YOUR_DIRECTORY/input.pdf`에 위치한 입력 PDF 파일. + +`Aspose.Pdf` 외에 추가 NuGet 패키지는 필요하지 않습니다. + +## NuGet을 통한 Aspose.Pdf 설치 + +터미널이나 Package Manager Console을 열고 다음을 실행합니다: + +```bash +dotnet add package Aspose.Pdf +``` + +이 명령은 최신 안정 버전(2026년 3월 현재 버전 23.12)을 가져옵니다. UI를 선호한다면 NuGet Package Manager에서 *Aspose.Pdf* 를 검색하여 설치하세요. + +## 단계 1: Aspose를 사용하여 C#에서 PDF 문서 로드 + +먼저 해야 할 일은 원본 PDF를 메모리로 가져오는 것입니다. Aspose의 `Document` 클래스가 진입점입니다. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**Why this matters:** 파일을 로드하면 경로가 존재하는지와 PDF가 손상되지 않았는지 검증합니다. `try/catch` 블록은 오류를 우아하게 표시할 수 있는 방법을 제공하며, 파일이 사용자 업로드에서 올 때 유용합니다. + +## 단계 2: PDF를 PDF/X‑4 형식으로 변환 + +PDF/X‑4는 신뢰할 수 있는 인쇄 및 보관을 위해 설계된 PDF의 하위 집합입니다. 변환을 통해 모든 글꼴이 포함되고 파일이 업계 표준을 준수하도록 보장합니다. + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**Why choose `ConvertErrorAction.Delete`?** 일부 레거시 PDF에는 변환을 중단시킬 수 있는 요소(예: 지원되지 않는 주석)가 포함되어 있습니다. 이를 삭제하면 프로세스가 원활해지지만, 해당 요소를 보존해야 한다면 출력물을 검토해야 합니다. + +### 선택 사항: 변환 성공 여부 확인 + +추가로 확실히 확인하고 싶다면 변환 후 문서의 `PdfFormat`을 검사할 수 있습니다: + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## 단계 3: 변환된 PDF 파일 저장 + +이제 문서가 PDF/X‑4 형태가 되었으니 디스크에 다시 저장합니다. + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**Result you’ll see:** `YOUR_DIRECTORY`에 `Converted_PDFX4.pdf`라는 새 파일이 생성됩니다. PDF/X‑4를 지원하는 PDF 뷰어(Adobe Acrobat, Foxit 등)로 열면 모든 글꼴이 포함되고 문서가 PDF/X‑4 사양을 준수함을 확인할 수 있습니다. + +![aspose pdf tutorial - converting PDF to PDF/X‑4](/images/aspose-pdf-conversion.png "aspose pdf tutorial showing PDF/X‑4 conversion result") + +*이미지 alt 텍스트에 주요 키워드가 포함되어 SEO 요구 사항을 충족합니다.* + +## 전체 엔드‑투‑엔드 예제 + +모든 것을 종합하면, 새 C# 프로젝트에 복사‑붙여넣기 할 수 있는 독립형 콘솔 앱 예제가 다음과 같습니다: + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +프로그램을 실행하면 각 단계가 확인되는 콘솔 메시지를 볼 수 있습니다. 문제가 발생하면 오류 메시지가 정확한 단계로 안내합니다. + +## 일반 질문 및 엣지 케이스 + +### 주석을 유지해야 하면 어떻게 하나요? + +`ConvertErrorAction.Delete`는 지원되지 않는 객체(일부 주석 포함)를 제거합니다. 주석을 보존하는 것이 중요하다면 `ConvertErrorAction.Keep` 로 전환하세요. 다만 출력물을 테스트해야 합니다—일부 주석은 여전히 준수 경고를 발생시킬 수 있습니다. + +### 대용량 PDF(수백 MB)를 어떻게 처리하나요? + +Aspose.Pdf는 파일을 스트리밍하므로 메모리 사용량이 적당합니다. 하지만 매우 큰 파일의 경우 `System.GC` 임계값을 높이거나 문서를 청크 단위(예: 페이지별 변환)로 처리하는 것이 좋습니다. + +### 여러 파일을 배치로 변환할 수 있나요? + +물론 가능합니다. 로드‑변환‑저장 로직을 PDF 디렉터리를 순회하는 `foreach` 루프로 감싸세요. 파일당 예외를 처리하여 하나의 손상된 PDF가 전체 배치를 중단하지 않도록 해야 합니다. + +### .NET Core on Linux에서도 작동하나요? + +예. Aspose.Pdf는 크로스‑플랫폼입니다. `Aspose.Pdf` NuGet 패키지를 참조하고, 텍스트 렌더링이 필요하다면 Linux 호스트에 적절한 글꼴 파일이 설치되어 있는지 확인하세요. + +## 현장에서 얻은 전문가 팁 + +- **Set a license early**: `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` – 이 코드는 평가 워터마크를 제거하고 성능을 향상시킵니다. +- **Validate the output**: 파일을 배포하기 전에 Aspose의 `PdfFormatValidator`를 사용해 프로그래밍 방식으로 PDF/X‑4 준수를 확인하세요. +- **Log conversion time**: 대규모 배치에서는 각 변환(`Stopwatch`)에 시간을 측정하여 성능 저하를 감지하면 도움이 됩니다. +- **Avoid hard‑coded paths**: `inputPath`와 `outputPath`는 구성 파일이나 환경 변수로 관리하는 것이 좋으며, 이렇게 하면 앱이 이식성을 갖게 됩니다. + +## 결론 + +이 **Aspose PDF Tutorial**에서는 **how to use Aspose** 로 **load PDF document C#** 하고, 이를 **PDF/X‑4** 표준으로 변환한 뒤 **save the converted PDF** 하는 깔끔한 엔드‑투‑엔드 워크플로를 시연했습니다. 코드 스니펫은 완전히 실행 가능하며 각 단계 뒤의 *why* 를 설명하고 실제 프로젝트에서 마주칠 수 있는 함정을 강조합니다. + +이제 기본을 익혔으니 솔루션을 확장할 수 있습니다—수십 개의 파일을 배치 처리하거나, 사용자 정의 메타데이터를 삽입하거나, 변환을 웹 API에 통합하는 등 가능성은 무궁무진합니다. Aspose.Pdf는 이를 빠르게 구현할 수 있는 도구를 제공합니다. + +Aspose를 이용한 PDF 처리에 대해 더 궁금한 점이 있나요? 댓글을 남기거나 공식 Aspose 문서를 살펴보거나 위 코드를 직접 실험해 보세요. 변환을 즐기세요! + +{{< /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-creation/_index.md b/pdf/korean/net/document-creation/_index.md index e1110762e..352508799 100644 --- a/pdf/korean/net/document-creation/_index.md +++ b/pdf/korean/net/document-creation/_index.md @@ -76,6 +76,12 @@ Aspose.PDF Net에 대한 코드 튜토리얼 ### [Aspose.PDF로 PDF 문서 만들기 – 페이지 추가, 도형 삽입 및 저장](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) +### [Aspose.PDF로 PDF 문서 만들기 – 단계별 가이드](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +Aspose.PDF를 사용하여 PDF 문서를 처음부터 단계별로 만드는 방법을 알아보세요. + +### [Aspose.PDF로 PDF 문서 만들기 – 전체 C# 가이드](./create-pdf-document-with-aspose-pdf-full-c-guide/) +Aspose.PDF와 C#을 사용해 처음부터 PDF 문서를 생성하는 전체 단계별 가이드를 제공합니다. + ## 추가 자료 - [Net 문서용 Aspose.PDF](https://docs.aspose.com/pdf/net/) diff --git a/pdf/korean/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/korean/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..fe1bca2eb --- /dev/null +++ b/pdf/korean/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-06 +description: Aspose.PDF를 사용하여 C#에서 PDF 문서 만들기 – 빈 페이지, 텍스트 박스, 위젯을 추가하고 PDF를 빠르게 저장하는 + 방법을 배워보세요. +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: ko +og_description: Aspose.PDF를 사용하여 C#에서 PDF 문서를 생성합니다. 이 가이드는 빈 페이지 PDF, 텍스트 박스, 위젯을 + 추가하는 방법과 PDF를 저장하는 방법을 보여줍니다. +og_title: Aspose.PDF로 PDF 문서 만들기 – 완전 C# 튜토리얼 +tags: +- pdf +- csharp +- aspose +- forms +title: Aspose.PDF로 PDF 문서 만들기 – 전체 C# 가이드 +url: /ko/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose.PDF로 PDF 문서 만들기 – 전체 C# 가이드 + +.NET 프로젝트에서 처음부터 **PDF 문서 만들기**를 해야 할 때, 어디서 시작해야 할지 고민한 적 있나요? 당신만 그런 것이 아닙니다; 첫 번째 요구사항이 “세 페이지에 동일한 텍스트 박스가 있는 채우기 가능한 PDF 생성”이라고 적혀 있을 때 많은 개발자들이 같은 벽에 부딪힙니다. 좋은 소식은? Aspose.PDF를 사용하면 몇 줄의 코드만으로도 전문가 수준의 PDF를 만들 수 있습니다. + +이번 튜토리얼에서는 전체 과정을 단계별로 살펴보겠습니다: 새로운 PDF 초기화, **adding blank pages pdf**, 텍스트박스 삽입, **widget** 주석으로 복제, 그리고 마지막으로 **saving the PDF**를 디스크에 저장하는 과정입니다. 끝까지 진행하면 *MultiWidgetField.pdf*라는 바로 사용할 수 있는 파일을 얻게 되며, 각 단계가 왜 중요한지에 대한 확실한 이해를 갖게 됩니다. + +## 이 가이드에서 다루는 내용 + +- 코드 한 줄도 입력하기 전에 필요한 전제 조건. +- Aspose.PDF for .NET을 사용한 PDF 문서 생성 단계별 가이드. +- 빈 페이지 추가, 텍스트박스 폼 필드 및 추가 widget 인스턴스 추가 방법. +- 일반적인 함정 처리 팁(예: 페이지 인덱싱, 필드 이름 충돌). +- 오늘 바로 실행할 수 있는 완전한 복사‑붙여넣기 가능한 C# 프로그램. + +외부 문서 링크도 없고, “API 문서 보기”와 같은 단축키도 없습니다—필요한 모든 것이 여기 있습니다. + +## 전제 조건 + +Before diving in, make sure you have: + +1. **.NET 6.0**(또는 이후 버전)이 머신에 설치되어 있어야 합니다. +2. 활성 **Aspose.PDF for .NET** 라이선스 또는 임시 평가 키. +3. **Visual Studio 2022** 또는 C# 확장이 포함된 **VS Code**와 같은 개발 환경. + +그게 전부입니다—다른 요구 사항은 없습니다. + +## 단계 1: PDF 문서 초기화 및 빈 페이지 추가 + +프로그램matically **PDF 문서 만들기**를 할 때 가장 먼저 하는 일은 `Document` 객체를 인스턴스화하는 것입니다. 마치 새 노트북을 여는 것과 같습니다. 그런 다음 필요한 페이지를 추가합니다; 여기서는 세 개의 빈 페이지를 추가합니다. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**왜 중요한가:** Aspose.PDF는 내부적으로 페이지를 0‑기반 컬렉션으로 취급하지만, 공개 API는 1‑기반이므로 `Pages[1]`이 방금 추가한 첫 번째 페이지입니다. 미리 페이지를 추가하면 나중에 폼 필드를 배치할 캔버스를 확보할 수 있으며, 문서가 커진 뒤에 페이지를 삽입하는 것보다 훨씬 비용이 적게 듭니다. + +> **Pro tip:** 단일 페이지만 필요하면 루프를 건너뛰고 `pdfDocument.Pages.Add()`를 한 번 호출하면 됩니다. 루프에서 여러 페이지를 추가하면 코드가 확장 가능하게 유지됩니다. + +## 단계 2: 첫 번째 페이지에 TextBox 폼 필드 정의 + +이제 세 개의 빈 시트가 있으니, 첫 번째 시트에 **textbox**를 배치해봅시다. `TextBoxField`는 PDF가 Acrobat Reader나 폼을 지원하는 PDF 뷰어에서 열릴 때 최종 사용자가 입력할 수 있는 폼 요소입니다. + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**왜 사각형 좌표인가?** Aspose.PDF는 포인트(인치의 1/72)를 사용합니다. 사각형 `(100, 700, 300, 730)`은 텍스트박스를 페이지 중간쯤에, 가로 200 pt, 세로 30 pt 정도 위치시킵니다. 레이아웃에 맞게 이 숫자를 조정하세요. + +> **Common question:** *`Value` 속성을 설정해야 하나요?* +> 아니요, 선택 사항입니다. 비워두면 빈 필드가 표시되고, 기본값을 설정하면 사용자를 안내할 수 있습니다. + +## 단계 3: 페이지 2와 3에 동일 필드에 대한 Widget 주석 추가 + +**widget**은 특정 페이지에 표시되는 폼 필드의 시각적 표현입니다. 기본적으로 필드는 생성된 페이지에만 나타납니다. 동일한 텍스트박스를 다른 페이지에서도 사용하려면 필드의 `Widgets` 컬렉션에 추가 `WidgetAnnotation` 객체를 연결합니다. + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**왜 widget인가?** widget이 없으면, 기본 필드가 존재하더라도 사용자는 페이지 1에서만 텍스트박스를 보게 됩니다. widget을 사용하면 단일 논리 필드를 여러 페이지에 공유할 수 있어, 입력된 텍스트가 필드가 표시되는 모든 페이지에 나타납니다. + +> **Edge case:** 각 페이지에서 텍스트박스 위치가 다르면, 각 widget의 `Rectangle` 값을 간단히 변경하면 됩니다. + +## 단계 4: 필드를 문서의 Form 컬렉션에 등록 + +Aspose.PDF는 모든 폼 필드의 중앙 레지스트리를 유지합니다. 필드를 `Form` 컬렉션에 추가하면 PDF의 인터랙티브 폼 구조의 일부가 됩니다. + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +두 번째 인수(`"Comment"`)는 필드의 **fully qualified name**입니다. 문서 전체에서 고유해야 하며, 그렇지 않으면 Aspose가 예외를 발생시킵니다. + +## 단계 5: 결과 PDF 저장 – PDF 저장 방법 + +마지막으로, 메모리 상의 문서를 디스크에 저장합니다. 이것이 튜토리얼의 **how to save pdf** 부분입니다. + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**왜 절대 경로를 지정하나요?** 절대 경로를 사용하면 작업 디렉터리 혼동을 피할 수 있으며, 특히 Visual Studio 디버거에서 프로그램을 실행할 때 유용합니다. 상대 경로를 선호한다면 `Save` 호출 전에 폴더가 존재하는지 확인하면 됩니다. + +### 예상 결과 + +Adobe Acrobat Reader에서 *MultiWidgetField.pdf*를 엽니다. 페이지 1, 2, 3에 동일한 텍스트박스가 표시됩니다. 어느 페이지에서든 필드에 입력하면, 동일한 기본 폼 필드를 공유하기 때문에 다른 페이지에서도 즉시 텍스트가 나타납니다. + +![세 페이지에 텍스트박스가 표시된 PDF 문서 생성 예시](https://example.com/placeholder-image.png "세 페이지에 텍스트박스가 표시된 PDF 문서 생성 예시") + +*이미지 대체 텍스트: 세 페이지에 텍스트박스가 표시된 PDF 문서 생성 예시.* + +## 전체 실행 가능한 예제 + +아래는 새 콘솔 프로젝트(`dotnet new console`)에 복사하여 실행할 수 있는 완전한 프로그램입니다. 모든 단계가 순서대로 정리되어 있으며, 코드에는 명확성을 위한 주석이 포함되어 있습니다. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +프로그램을 실행하고 `C:\Temp\`으로 이동한 뒤 생성된 PDF를 열어보세요. 사용자 입력을 받을 수 있는 동일한 텍스트박스 세 개가 표시됩니다. + +## 일반적인 변형 및 엣지 케이스 + +| Scenario | What to Change | Why | +|----------|----------------|-----| +| **각 페이지마다 다른 텍스트박스 크기** | `WidgetAnnotation`마다 `Rectangle` 값을 조정합니다. | 다양한 레이아웃에 맞게 필드를 배치할 수 있습니다. | +| **읽기 전용 필드** | `commentField.ReadOnly = true;` 로 설정합니다. | 초기 입력 후 사용자가 내용을 수정하지 못하도록 합니다. | +| **다중 라인 텍스트박스** | `commentField.Multiline = true;` 로 설정하고 사각형 높이를 늘립니다. | 스크롤 없이 더 긴 댓글을 입력할 수 있게 합니다. | +| **두 번째 필드 추가** | 다른 `TextBoxField`(또는 다른 `FormField`)를 생성하고 새 이름으로 단계 2‑4를 반복합니다. | 같은 PDF에서 여러 정보를 수집할 수 있습니다. | + +## 전문가 팁 및 피해야 할 함정 + +- **Page Indexing:** `pdfDocument.Pages[1]`이 첫 번째 페이지이며 `[0]`이 아니라는 점을 기억하세요. 0‑기반과 1‑기반 인덱스를 혼용하면 “Index out of range” 예외가 발생합니다. +- **Field Naming Collisions:** 두 필드는 동일한 fully qualified name을 공유할 수 없습니다. 중복 이름 오류가 발생하면 `Form.Add`에 전달한 문자열을 다시 확인하세요. +- **License vs. Evaluation:** 평가 버전은 각 페이지에 워터마크를 추가합니다. 프로덕션에서는 유효한 라이선스를 배포하여 제거하세요. +- **Performance:** 루프에서 수백 페이지를 추가하는 것은 괜찮지만, 수천 페이지와 같은 대용량 PDF를 생성해야 한다면 사용을 고려하세요 + +{{< /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-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/korean/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..4f29fcd0c --- /dev/null +++ b/pdf/korean/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,237 @@ +--- +category: general +date: 2026-03-06 +description: C#에서 Aspose.PDF를 사용해 PDF 문서를 생성합니다. 페이지 추가, 사각형 그리기, 도형 추가, 사각형 테두리 두께 + 조절 방법을 한 번에 배워보세요. +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: ko +og_description: Aspose.PDF를 사용하여 C#에서 PDF 문서를 생성합니다. 이 튜토리얼에서는 PDF 페이지 추가, 사각형 그리기, + 도형 추가 및 사각형 테두리 두께 설정 방법을 보여줍니다. +og_title: Aspose.PDF로 PDF 문서 만들기 – 완전 가이드 +tags: +- Aspose.PDF +- C# +- PDF generation +title: Aspose.PDF로 PDF 문서 만들기 – 단계별 가이드 +url: /ko/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< 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을 사용하면 몇 줄의 코드만으로 이를 구현할 수 있으며, **add page PDF**, **draw rectangle PDF**, **add shape PDF**를 수행하고 **rectangle border thickness**를 조정하는 방법도 배울 수 있다는 것입니다. 바로 시작해 봅시다. + +## 만들게 될 것 + +이 가이드를 끝낼 때쯤이면 완전한 C# 콘솔 앱을 갖게 됩니다: + +1. **Creates a PDF document**를 처음부터 생성합니다. +2. **Adds a page PDF**를 문서에 추가합니다. +3. **Draws a rectangle PDF**를 해당 페이지에 그립니다. +4. **Validates**가 사각형이 페이지 경계 안에 있는지 확인합니다 (**add shape PDF** 단계). +5. 사용자 정의 **rectangle border thickness**를 설정합니다. +6. `ShapeValidated.pdf` 파일로 저장합니다. + +외부 서비스도 없고, 복잡한 설정도 없습니다—그냥 순수 C#와 Aspose.PDF만 있으면 됩니다. + +### 사전 요구 사항 + +- .NET 6.0 또는 그 이후 버전 (코드는 .NET Framework 4.6+에서도 작동합니다). +- `Aspose.Pdf` NuGet 패키지에 대한 참조. 다음과 같이 추가할 수 있습니다: + +```bash +dotnet add package Aspose.Pdf +``` + +- 텍스트 편집기 또는 IDE—Visual Studio, VS Code, Rider 등 원하는 것을 사용하세요. + +> **Pro tip:** 회사 컴퓨터를 사용 중이라면 NuGet 피드가 차단되지 않았는지 확인하세요; 차단되면 “Package not found” 오류가 발생합니다. + +--- + +## PDF 문서 만들기 – 문서 초기화 + +첫 번째 단계는 `Document` 객체를 생성하는 것입니다. 이것을 모든 페이지와 도형이 존재하는 빈 캔버스로 생각하면 됩니다. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +왜 이 객체가 필요할까요? 메모리 내에서 전체 PDF 파일을 나타내며 `Pages` 컬렉션, 메타데이터, 보안 설정에 접근할 수 있게 해줍니다. 문서를 확보하면 페이지, 텍스트, 이미지, 벡터 그래픽을 차례로 추가할 수 있습니다. + +--- + +## PDF에 페이지 추가 (add page pdf) + +페이지가 없는 PDF는 본질적으로 빈 파일과 같습니다—의미가 없습니다. 페이지 추가는 간단하며 필요에 따라 크기를 사용자 정의할 수 있습니다. 여기서는 기본 A4 크기를 사용합니다. + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +`Add()` 메서드는 `Pages` 컬렉션에 이미 포함된 새로운 `Page` 인스턴스를 반환하므로 바로 그 위에 그리기를 시작할 수 있습니다. 실제 상황에서는 데이터 집합을 순회하며 수십 개의 페이지를 추가할 수 있는데, 동일한 한 줄 호출이 각 반복마다 작동합니다. + +--- + +## 사각형 도형 그리기 (draw rectangle pdf) + +이제 시각적인 부분입니다: 눈에 보이는 테두리를 가진 사각형. 여기서 **draw rectangle pdf**가 사용됩니다. + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +주의할 점 몇 가지: + +- `Rect`는 포인트 단위(1 pt ≈ 1/72 인치)를 사용합니다. 좌표는 왼쪽 아래와 오른쪽 위 모서리를 정의하므로 너비와 높이를 정확히 제어할 수 있습니다. +- `BorderInfo`를 사용하면 어느 면에 선을 그릴지와 선의 두께를 지정할 수 있습니다. 여기서는 **all** 면에 2 포인트 선을 적용해 사각형을 깔끔하고 균일하게 보이게 합니다. + +--- + +## 도형 배치 검증 (add shape pdf) + +사각형을 페이지에 적용하기 전에 페이지의 인쇄 가능한 영역 안에 들어가는지 확인하는 것이 현명합니다. Aspose.PDF는 이를 위한 편리한 헬퍼 메서드를 제공합니다. + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +왜 신경 써야 할까요? 도형을 화면 밖으로 부분적으로 배치하면 PDF 뷰어가 잘라내어 사용자에게 혼란을 줄 수 있습니다. 이 **add shape pdf** 가드 절은 완전히 보이는 콘텐츠만 추가하도록 보장합니다. + +--- + +## PDF 저장 (add page pdf) + +마지막으로 메모리상의 문서를 디스크에 저장합니다. 쓰기 권한이 있는 위치라면 어디든 선택할 수 있습니다. + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +프로그램을 실행한 후 `ShapeValidated.pdf`를 열면, 가운데쯤에 깔끔한 테두리 사각형이 있는 단일 페이지가 보일 것입니다. + +--- + +## 기대 결과 + +When you open the generated PDF, you’ll see: + +- A4 크기의 페이지 하나. +- 왼쪽 아래 모서리가 (50 pt, 50 pt)에서 시작하고 오른쪽 위 모서리가 (600 pt, 800 pt)에서 끝나는 사각형. +- 사각형을 둘러싼 **2‑point thick** 테두리. + +콘솔에 “PDF created successfully!”가 출력되면, 경계 검사를 통과하고 코드가 정상적으로 실행된 것입니다. + +![Aspose.PDF로 PDF 문서 만드는 방법을 보여주는 다이어그램](https://example.com/diagram-create-pdf.png "PDF 문서 만들기 – 시각적 개요") + +*이미지 alt 텍스트에는 SEO 요구 사항을 충족하기 위한 주요 키워드가 포함되어 있습니다.* + +--- + +## 일반적인 질문 및 엣지 케이스 + +### 다른 페이지 크기가 필요하면 어떻게 하나요? + +기본 페이지를 사용자 정의 크기로 교체합니다: + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### 테두리 색상을 어떻게 변경하나요? + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### 같은 페이지에 여러 도형을 추가할 수 있나요? + +물론 가능합니다. 새로운 `RectangleShape`(또는 다른 `Shape` 서브클래스)를 사용해 **add shape pdf** 블록을 반복하고 `Rect` 좌표를 적절히 조정하면 됩니다. + +### 사각형이 페이지 경계를 초과하면 어떻게 하나요? + +`IsShapeWithinBounds` 호출은 `false`를 반환합니다. 실제 코드에서는 도형을 자동으로 크기 조정하고 싶을 수 있습니다: + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +--- + +## 요약 + +우리는 Aspose.PDF를 사용한 **PDF 문서 만들기** 전체 과정을 살펴보았습니다: + +1. `Document` 초기화. +2. `Pages.Add()`를 사용해 **Add a page PDF**. +3. `RectangleShape`를 통해 **Draw a rectangle PDF**. +4. 페이지 안에 있는지 확인한 후에만 **Add shape PDF**. +5. `BorderInfo`로 **rectangle border thickness** 제어. +6. 파일 저장. + +이것이 60줄 이하의 코드로 구현한 전체 워크플로우입니다. + +--- + +## 다음 단계는? + +- **Add text**: `TextFragment`를 사용해 사각형 안에 제목이나 라벨을 배치합니다. +- **Insert images**: `Image` 클래스로 로고나 차트를 삽입할 수 있습니다. +- **Create tables**: 인보이스나 데이터 보고서에 적합합니다. +- **Apply security**: 민감한 데이터가 포함된 경우 PDF에 비밀번호를 설정해 보호합니다. + +이러한 주제들은 여기서 다룬 기본을 기반으로 하므로, 보다 고급 PDF 생성 시나리오를 탐색할 준비가 잘 되어 있습니다. + +### 실험을 계속하세요 + +하나의 사각형에 머무르지 말고 다양한 도형, 색상, 선 스타일을 시도해 보세요. Aspose.PDF API는 풍부하며, 손을 많이 대면 할수록 익숙해집니다. 문제가 발생하면 공식 Aspose 문서가 좋은 참고가 되지만, 위의 코드는 오늘 바로 실행할 수 있는 완전한 복사‑붙여넣기 가능한 솔루션이라는 점을 기억하세요. + +코딩을 즐기세요, 그리고 여러분의 PDF가 언제나 기대한 대로 정확히 렌더링되길 바랍니다! + +{{< /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 e62bb9dea..d38637d33 100644 --- a/pdf/korean/net/document-manipulation/_index.md +++ b/pdf/korean/net/document-manipulation/_index.md @@ -117,7 +117,7 @@ Aspose.PDF for .NET을 사용하여 PDF 문서에 텍스트 스탬프를 효율 Aspose.PDF for .NET을 사용하여 PDF 끝에 빈 페이지를 원활하게 추가하는 방법을 알아보세요. 이 포괄적인 튜토리얼에서는 설정, 구현 및 모범 사례를 다룹니다. ### [Aspose.PDF for .NET을 사용하여 PDF에 페이지 번호를 추가하고 사용자 지정하는 방법 | 문서 조작 가이드](./add-customize-page-numbers-aspose-pdf-dot-net/) -Aspose.PDF for .NET을 사용하여 PDF 문서에 페이지 번호를 손쉽게 추가하고 사용자 지정하는 방법을 알아보세요. 이 종합 가이드에서는 설치, 사용자 지정 옵션, 그리고 성능 향상 팁을 다룹니다. +Aspose.PDF for .NET을 사용하여 PDF 문서에 페이지 번호를 손쉽게 추가하고 사용자 지정하는 방법을 알아보세요. 이 종합 가이드는 설치, 사용자 지정 옵션, 그리고 성능 향상 팁을 다룹니다. ### [Aspose.PDF .NET을 사용하여 PDF에 JavaScript를 추가하고 제거하는 방법: 포괄적인 가이드](./aspose-pdf-net-add-remove-javascript-pdfs/) Aspose.PDF for .NET을 사용하여 PDF 문서에 JavaScript 함수를 추가하고 제거하는 방법을 알아보세요. 단계별 가이드를 통해 문서의 상호 작용성과 기능을 향상시키세요. @@ -218,6 +218,9 @@ Aspose.PDF for .NET을 사용하여 PDF에 페이지를 삽입하는 방법을 ### [Aspose.PDF .NET을 사용하여 PDF에 빈 페이지 삽입: 포괄적인 가이드](./aspose-pdf-net-insert-empty-page/) Aspose.PDF for .NET을 사용하여 PDF 문서에 빈 페이지를 쉽게 삽입하는 방법을 알아보세요. 이 단계별 가이드를 따라 문서 조작 능력을 향상시켜 보세요. +### [Aspose.PDF .NET을 사용하여 PDF에 빈 페이지 삽입: 포괄적인 가이드](./aspose-pdf-net-insert-empty-page/) +Aspose.PDF for .NET을 사용하여 PDF 문서에 빈 페이지를 쉽게 삽입하는 방법을 알아보세요. 이 단계별 가이드를 따라 문서 조작 능력을 향상시켜 보세요. + ### [효율적인 PDF 레이아웃을 위한 Aspose.PDF .NET의 MakeNUp 메서드 마스터하기](./aspose-pdf-net-make-nup-method-pdf-layout/) Aspose.PDF .NET의 MakeNUp 메서드를 사용하여 여러 PDF 페이지를 새로운 레이아웃으로 효율적으로 재정렬하는 방법을 알아보세요. 뉴스레터, 브로셔, 보고서에 적합합니다. @@ -233,7 +236,7 @@ Aspose.PDF for .NET을 사용하여 PDF 문서 속성을 열고, 가져오고, ### [Aspose.PDF를 사용하여 .NET에서 PDF 조작 마스터하기: 종합 가이드](./master-pdf-manipulation-net-asposepdf/) Aspose.PDF for .NET을 사용하여 PDF를 효율적으로 관리하는 방법을 알아보세요. 이 자세한 가이드를 통해 PDF 파일을 원활하게 추가, 추출, 분할하는 방법을 알아보세요. -### [Aspose.PDF를 사용한 .NET에서의 PDF 조작 마스터하기: 종합 가이드](./aspose-pdf-net-tutorial/) +### [Aspose.PDF를 사용한 .NET에서 PDF 조작 마스터하기: 종합 가이드](./aspose-pdf-net-tutorial/) Aspose.PDF를 사용하여 .NET에서 PDF를 프로그래밍 방식으로 관리하는 방법을 알아보세요. 이 가이드에서는 문서 로드, 양식 필드 접근, 옵션 반복에 대해 다룹니다. ### [Aspose.PDF .NET을 활용한 PDF 조작 마스터하기: 문서 자동화에 대한 포괄적인 가이드](./master-pdf-manipulation-aspose-dotnet-guide/) @@ -311,6 +314,9 @@ Aspose.PDF for .NET을 사용하여 여러 페이지로 구성된 PDF를 분할 ### [Aspose.PDF .NET을 활용한 PDF 조작 완벽 가이드: 텍스트를 효율적으로 로드, 저장 및 바꾸기](./master-pdf-manipulation-aspose-pdf-net/) Aspose.PDF for .NET을 사용하여 PDF를 완벽하게 다루는 방법을 알아보세요. 이 가이드에서는 PDF의 텍스트 로드, 저장 및 바꾸기를 다루며, 효율성을 추구하는 개발자에게 이상적입니다. +### [C#와 Aspose PDF를 사용하여 PDF를 레드랙트하는 방법 – 완전 가이드](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) +Aspose PDF for .NET을 활용해 C#에서 PDF 문서의 민감한 정보를 레드랙트(가리기)하는 방법을 단계별로 안내합니다. + ## 추가 자료 - [Net 문서용 Aspose.PDF](https://docs.aspose.com/pdf/net/) diff --git a/pdf/korean/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/korean/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..7d413c8f4 --- /dev/null +++ b/pdf/korean/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,244 @@ +--- +category: general +date: 2026-03-06 +description: C#에서 Aspose PDF를 사용하여 PDF를 마스킹하는 방법을 배웁니다. 이 단계별 가이드는 C#에서 PDF 문서를 로드하고, + 첫 번째 PDF 페이지에 접근하며, PDF에서 이미지를 제거하는 방법을 보여줍니다. +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: ko +og_description: C#에서 Aspose PDF를 사용해 PDF를 빠르게 편집하는 방법. PDF 문서를 로드하고 첫 번째 페이지에 접근한 + 뒤, 몇 줄의 코드만으로 PDF에서 이미지를 제거합니다. +og_title: C#에서 PDF 가리기 방법 – Aspose PDF 튜토리얼 +tags: +- Aspose PDF +- C# +- PDF Redaction +title: C#와 Aspose PDF로 PDF를 가리는 방법 – 완전 가이드 +url: /ko/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#와 Aspose PDF를 사용한 PDF 레드랙 방법 – 완전 가이드 + +땀 한 방울 흘리지 않고 **PDF를 레드랙하는 방법**을 궁금해 본 적 있나요? 아마도 기밀 로고가 숨겨진 계약서나, 지워야 할 자리 표시자 이미지가 남아 있는 보고서를 받았을 수도 있습니다. 이런 경우에는 수동 Acrobat 마법 없이도 해당 콘텐츠를 프로그램matically 제거할 수 있는 신뢰할 만한 방법이 필요합니다. + +이 튜토리얼에서는 **PDF 문서 C# 로드**, **첫 번째 PDF 페이지 접근**, 그리고 강력한 **Aspose PDF** 라이브러리를 사용한 **PDF에서 이미지 제거**라는 간결하고 완전한 솔루션을 단계별로 살펴보겠습니다. 마지막까지 진행하면 배포 가능한 완전 레드랙된 PDF를 얻을 수 있으며, 각 코드 라인이 왜 중요한지도 이해하게 됩니다. + +> **팁:** Aspose PDF는 .NET Framework 4.6+ 및 .NET Core 3.1+와 호환되므로 Windows, Linux, macOS 어느 환경에서도 사용할 수 있습니다. + +--- + +![how to redact pdf example](redact-pdf-before-after.png){alt="PDF 레드랙 예시"} + +## 필요 사항 + +- **Aspose.PDF for .NET** (최신 NuGet 패키지) +- **C# 개발 환경** (Visual Studio, Rider, 또는 VS Code) +- 지우려는 이미지 리소스를 포함한 샘플 PDF (`Sensitive.pdf` 라고 부릅니다) + +추가적인 서드파티 도구나 OCR 없이 순수 코드만 사용합니다. + +## 단계 1: PDF 문서 C# 로드 – 첫 번째 단계 + +무언가를 레드랙하기 전에 파일을 메모리로 로드해야 합니다. `Document` 클래스는 모든 Aspose PDF 작업의 진입점입니다. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**왜 중요한가:** `Document`는 전체 PDF 구조를 파싱하여 페이지, 리소스, 주석을 조작할 수 있는 객체 모델을 구축합니다. 파일을 로드할 수 없을 경우(잘못된 경로, 손상된 PDF) 즉시 예외가 발생하므로 문제를 조기에 알 수 있습니다. + +### 흔히 발생하는 실수 + +> *“파일이 존재함에도 `FileNotFoundException`이 발생합니다.”* +> 경로가 절대 경로인지 확인하거나 프로젝트 작업 디렉터리가 `Sensitive.pdf` 위치와 일치하는지 확인하세요. `Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")`를 사용하면 상대 경로 문제를 피할 수 있습니다. + +--- + +## 단계 2: 첫 번째 PDF 페이지 접근 – 이미지가 있는 위치 + +이미지는 페이지별 리소스로 저장됩니다. 많은 단순 PDF에서 첫 페이지가 문제이므로 해당 페이지를 가져옵니다. + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**왜 중요한가:** Aspose PDF는 페이지 인덱스를 1부터 시작합니다. 이는 대부분의 .NET 컬렉션과 다소 다릅니다. 잘못된 페이지에 접근하면 잘못된 콘텐츠를 레드랙하거나, 민감한 이미지를 그대로 남길 수 있습니다. + +### 엣지 케이스 고려사항 + +If your document has no pages (an empty PDF), attempting `pdfDocument.Pages[1]` will throw an `IndexOutOfRangeException`. A quick guard can save you: + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +--- + +## 단계 3: PDF에서 이미지 제거 – 리소스 레드랙 + +Aspose PDF를 사용하면 이름으로 리소스를 삭제할 수 있습니다. 대부분의 이미지는 `Im1`, `Im2` 등으로 명명되지만, `firstPage.Resources.Images`를 확인하여 확인할 수 있습니다. + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**왜 중요한가:** `RedactResource`는 이미지를 *제거*하고 페이지상의 해당 이미지에 대한 모든 참조도 삭제하여 깨진 링크가 아닌 빈 영역으로 채워집니다. 이는 콘텐츠를 삭제하는 깔끔하고 PDF 표준 방식입니다. + +### 올바른 이미지 이름 찾는 방법 + +If you’re not sure whether the image is called `"Im1"`: + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +Run this snippet, check the console output, and replace `"Im1"` with the actual key you see. + +이 스니펫을 실행하고 콘솔 출력을 확인한 뒤, `"Im1"`을 실제 키로 교체하세요. + +--- + +## 단계 4: 레드랙된 PDF 저장 – 작업 완료 + +원하지 않는 이미지가 제거되었으니, 변경 사항을 디스크에 저장합니다. + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**왜 중요한가:** **새** 파일에 저장하면 원본을 그대로 유지할 수 있어 되돌릴 필요가 있을 때 안전망이 됩니다. 덮어써야 한다면 `Save` 메서드에 원본 경로를 지정하면 되지만, 해당 작업은 되돌릴 수 없음을 유념하세요. + +### 결과 확인 + +`Redacted.pdf`를 PDF 뷰어에서 열어보세요. 이미지가 있던 위치가 빈 공간으로 표시되고, 나머지 문서는 원본과 동일하게 보여야 합니다. 페이지 레이아웃이 이동된 것처럼 보이면, 의도한 리소스만 제거했는지, 공유 XObject를 삭제하지 않았는지 다시 확인하세요. + +--- + +## 전체 작업 예제 + +모두 합치면, 다음은 완전하고 바로 실행 가능한 프로그램입니다: + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**예상 출력** (콘솔): + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +`Redacted.pdf`를 열면, 이전에 `Im1`이었던 이미지가 사라지고 깔끔한 페이지가 남습니다. + +--- + +## 자주 묻는 질문 + +### 암호화된 PDF에서도 작동하나요? + +If the source PDF is password‑protected, pass the password to the `Document` constructor: + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### 이미지가 여러 페이지에 나타나는 경우는? + +Loop through each page and call `RedactResource` on the same image name (or discover the name per page). Example: + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### 텍스트도 같은 방식으로 레드랙할 수 있나요? + +예—`page.Contents.RedactText("confidential")`를 사용하거나 더 고급 패턴을 위해 `Redactor` 클래스를 활용하세요. 이는 별도의 튜토리얼이 필요하지만, 원리는 이미지 레드랙과 동일합니다. + +--- + +## 마무리 – 우리가 달성한 것 + +우리는 **PDF를 레드랙하는 방법**을 프로그래밍적으로 다음과 같이 해결했습니다: + +1. Aspose PDF를 사용한 **PDF 문서 C# 로드**. +2. 대상 리소스를 찾기 위한 **첫 번째 PDF 페이지 접근**. +3. `RedactResource`를 이용한 **PDF에서 이미지 제거**. +4. **저장**하여 정리된 버전을 안전하게 보관. + +이 방법은 빠르고 반복 가능하며 배치 작업에서도 동작하므로, 컴플라이언스 파이프라인이나 자동 보고서 생성에 최적입니다. + +더 나아가고 싶다면 다음을 살펴보세요: + +- 전체 폴더의 PDF에 대한 **배치 레드랙**. +- `Redactor`를 사용한 정규식 패턴으로 **텍스트 레드랙**. +- 레드랙 후 **워터마크 삽입**하여 “정제됨”을 표시. + +한 번 시도해 보고, 자신의 파일에 맞게 이미지 이름 로직을 조정해 보세요, + +{{< /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/performance-optimization/_index.md b/pdf/korean/net/performance-optimization/_index.md index 3589eddf6..d49fa7464 100644 --- a/pdf/korean/net/performance-optimization/_index.md +++ b/pdf/korean/net/performance-optimization/_index.md @@ -50,6 +50,9 @@ Aspose.PDF for .NET을 사용하여 SVG 파일을 정확하고 효율적으로 P ### [Aspose.PDF for .NET을 사용하여 PDF에 포함된 글꼴 제거: 파일 크기 줄이기 및 성능 향상](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) Aspose.PDF for .NET을 사용하여 PDF 파일에서 글꼴을 제거하는 방법을 알아보세요. 이 단계별 가이드를 통해 PDF 성능을 최적화하고, 파일 크기를 줄이고, 로드 시간을 단축하세요. +### [Aspose.Pdf로 PDF 압축하기 – 빠른 가이드](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) +Aspose.Pdf를 사용하여 PDF 파일을 빠르게 압축하는 방법을 단계별로 안내합니다. + ## 추가 자료 - [Net 문서용 Aspose.PDF](https://docs.aspose.com/pdf/net/) diff --git a/pdf/korean/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/korean/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..5ccec2d8a --- /dev/null +++ b/pdf/korean/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,201 @@ +--- +category: general +date: 2026-03-06 +description: Aspose.Pdf를 사용하여 PDF를 즉시 압축하는 방법을 배워보세요. 이 가이드는 무손실 PDF 압축으로 PDF 파일 크기를 + 줄이는 방법을 보여줍니다. +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: ko +og_description: Aspose.Pdf를 사용하여 PDF를 압축하는 방법은? 단계별 튜토리얼을 따라 PDF 파일 크기를 줄이고, 무손실 PDF + 압축을 달성하며, 최적화된 PDF 파일을 저장하세요. +og_title: Aspose.Pdf로 PDF 압축하는 방법 – 빠른 가이드 +tags: +- pdf +- aspnet +- csharp +title: Aspose.Pdf로 PDF 압축하기 – 빠른 가이드 +url: /ko/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose.Pdf로 PDF 압축하기 – 빠른 가이드 + +Ever wondered **how to compress pdf** files without turning them into a blurry mess? You’re not alone. Most developers hit a wall when they need to **reduce pdf file size** for email attachments, web uploads, or storage limits, yet they fear losing image quality. + +In this tutorial we’ll walk through a complete, ready‑to‑run example that shows you exactly **how to compress pdf** using Aspose.Pdf’s built‑in optimizer. By the end you’ll know how to **shrink pdf file size**, keep your images crisp with **lossless pdf compression**, and finally **save optimized pdf** files that play nicely with any viewer. + +## 배울 내용 + +- 고해상도 이미지가 가득한 무거운 PDF를 메모리로 로드합니다. +- Aspose.Pdf의 옵티마이저를 기본 무손실 설정으로 적용합니다. +- 결과를 새로운 더 작은 파일로 저장합니다. +- 압축을 더 강하게 조정해야 할 경우를 위한 팁을 제공합니다. + +외부 도구나 신비한 명령줄 트릭 없이—깨끗한 C# 코드와 명확한 설명만 제공합니다. + +## 사전 요구 사항 + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6.0 or later (or .NET Framework 4.6+) | Aspose.Pdf는 두 환경을 모두 지원하며, 최신 런타임이 더 나은 성능을 제공합니다. | +| Aspose.Pdf for .NET NuGet package (`Aspose.Pdf`) | `Document` 클래스가 이 패키지에 포함되어 있습니다. | +| A PDF with large images (e.g., `HeavyImages.pdf`) | 대용량 이미지가 포함된 PDF (예: `HeavyImages.pdf`) – 압축할 실제 파일을 제공합니다. | +| Visual Studio, Rider, or any C# editor you prefer | 선호하는 Visual Studio, Rider 또는 기타 C# 편집기 – 편안함이 가장 중요하니, 자신에게 맞는 것을 선택하세요. | + +> **Pro tip:** CI/CD 파이프라인을 사용 중이라면, `.csproj`에 NuGet 참조를 추가해 빌드가 이를 놓치지 않도록 하세요. + +```xml + + + +``` + +## 단계 1: 압축할 PDF 로드하기 + +먼저, 소스 파일을 가리키는 `Document` 객체가 필요합니다. 장을 편집하기 전에 책을 여는 것과 같습니다. + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*Why this matters:* 파일을 로드하면 Aspose.Pdf가 모든 포함된 리소스(이미지, 폰트 등)를 읽을 수 있습니다. 이 단계가 없으면 **shrink pdf file size** 할 것이 없습니다. + +## 단계 2: 무손실 PDF 압축 적용 + +Aspose.Pdf는 기본적으로 **lossless pdf compression** 루틴을 실행하는 `Optimize` 메서드를 제공합니다. 중복 객체를 제거하고, 동일한 시각적 품질로 이미지를 재압축하며, 사용되지 않는 폰트를 삭제합니다. + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*Why this matters:* 기본 옵티마이저는 모든 픽셀을 보존하면서 **shrink pdf file size** 하도록 설계되었습니다. 나중에 약간의 품질 저하를 허용한다면, 주석 처리된 `OptimizationOptions`를 사용해 약간의 추가 용량을 속도와 교환할 수 있습니다. + +## 단계 3: 최적화된 PDF 저장 + +문서가 가벼워졌으니, 이제 새로운 파일로 저장합니다. 원본을 그대로 두는 것이 좋은 습관이며, 특히 다양한 설정을 테스트할 때 유용합니다. + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +저장 후 파일 크기를 비교해 보세요: + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +원본에 포함된 고해상도 이미지 수에 따라 보통 **30‑70 %** 정도 눈에 띄는 감소를 확인할 수 있습니다. + +![PDF 압축 예시](image.png "PDF 압축") + +*이미지 대체 텍스트:* PDF 압축 – 최적화 전후 + +## 고급: 특정 상황에 맞춘 압축 조정 + +기본 옵티마이저가 대부분의 경우에 좋지만, 때로는 **shrink pdf file size** 를 더 강하게 해야 할 때도 있습니다: + +| Scenario | Setting to adjust | Effect | +|----------|-------------------|--------| +| 래스터 이미지가 많은 PDF | `CompressImages = true` + lower `ImageQuality` (e.g., 70) | 이미지 바이트 수를 줄이고, 약간의 시각적 손실이 발생합니다. | +| 중복 폰트를 포함한 PDF | `RemoveUnusedObjects = true` | 참조되지 않은 폰트를 제거합니다. | +| 대용량 메타데이터가 포함된 PDF | `RemoveMetadata = true` | 숨겨진 XML/메타데이터 블록을 제거합니다. | + +이러한 옵션들을 `OptimizationOptions` 객체에 결합하여 `pdfDoc.Optimize(options)`에 전달할 수 있습니다. + +## 일반적인 질문 및 엣지 케이스 + +**PDF가 이미 최적화된 경우는?** +Aspose.Pdf는 여전히 문서를 스캔하지만, 크기 변화는 최소에 불과합니다. 이미 가벼운 파일에 옵티마이저를 실행해도 안전하며, 파일이 손상되지 않습니다. + +**암호화된 PDF를 압축할 수 있나요?** +예, `Optimize`를 호출하기 전에 비밀번호를 제공해야 합니다. 예시: + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**벡터 그래픽이 포함된 PDF는 어떨까요?** +벡터 객체는 이미 가볍기 때문에 옵티마이저는 래스터 이미지와 메타데이터에 집중합니다. 순수 벡터 파일은 약간의 개선만 기대됩니다. + +## 전체 실행 가능한 예제 + +아래는 새 `.csproj`에 복사‑붙여넣기 할 수 있는 독립형 콘솔 앱 예제입니다. 로드부터 검증까지 논의된 모든 내용을 보여줍니다. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +프로그램을 실행하고, 어떤 뷰어에서든 `Optimized.pdf`를 열면 동일한 페이지 레이아웃과 선명한 이미지를 유지하면서 파일이 더 얇아진 것을 확인할 수 있습니다. 이것이 **lossless pdf compression** 의 마법입니다. + +## 결론 + +우리는 Aspose.Pdf의 내장 옵티마이저를 사용해 **how to compress pdf** 파일을 압축하는 방법을 다루었고, 실용적인 **reduce pdf file size** 워크플로를 시연했으며, 각 단계의 근본적인 이유를 설명했습니다. 로드, 옵티마이즈, 저장의 3단계 패턴을 따르면, 실시간으로 **shrink pdf file size** 할 수 있고, **lossless pdf compression** 으로 이미지를 손상 없이 유지하며, 다운스트림에서 사용할 **save optimized pdf** 파일을 자신 있게 저장할 수 있습니다. + +다음 도전에 준비되셨나요? 이 옵티마이저를 배치 스크립트와 연결해 전체 폴더를 처리해 보거나, 선택적인 `OptimizationOptions`를 실험해 마지막 몇 킬로바이트를 짜내 보세요. 데스크톱 도구, 웹 API, 서버‑사이드 배치 작업 등 어디에서든 동일한 원칙이 적용됩니다. + +PDF 처리, Aspose.Pdf 특성, .NET 파일 I/O에 대해 더 궁금한 점이 있나요? 아래에 댓글을 남겨 주세요. 대화를 이어갑시다. 즐거운 압축 되세요! + +{{< /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/programming-with-security-and-signatures/_index.md b/pdf/korean/net/programming-with-security-and-signatures/_index.md index f1bb2fecf..8d8611c0e 100644 --- a/pdf/korean/net/programming-with-security-and-signatures/_index.md +++ b/pdf/korean/net/programming-with-security-and-signatures/_index.md @@ -34,6 +34,8 @@ | [PDF 파일 서명을 사용하여 스마트 카드로 서명](./sign-with-smart-card-using-pdf-file-signature/) | Aspose.PDF for .NET을 사용하여 스마트 카드를 사용하여 PDF 파일에 서명하는 방법을 알아보세요. 안전한 디지털 서명을 위한 단계별 가이드를 따르세요. | | [서명 필드를 사용하여 스마트 카드로 서명](./sign-with-smart-card-using-signature-field/) | Aspose.PDF for .NET을 사용하여 스마트 카드를 사용하여 PDF에 안전하게 서명하는 방법을 알아보세요. 간편한 구현을 위한 단계별 가이드를 따르세요. | | [C#에서 PDF 서명 확인 – 서명된 PDF 파일 읽는 방법](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) | Aspose.PDF for .NET을 사용하여 C#에서 서명된 PDF 파일의 서명을 확인하고 읽는 방법을 단계별로 안내합니다. | +| [C#을 이용한 PDF 서명 확인 – 완전 Aspose 가이드](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) | Aspose.PDF for .NET을 활용하여 C#에서 PDF 서명을 검증하고 읽는 방법을 단계별로 안내합니다. | +| [C#에서 디지털 서명 PDF 추가 – 완전 단계별 가이드](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) | Aspose.PDF for .NET을 사용하여 C#에서 PDF에 디지털 서명을 추가하는 방법을 단계별로 안내합니다. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/korean/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/korean/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..2215780e6 --- /dev/null +++ b/pdf/korean/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,250 @@ +--- +category: general +date: 2026-03-06 +description: Aspose.PDF를 사용하여 PDF에 디지털 서명을 추가합니다. pkcs7 분리 서명을 생성하고 사용자 정의 콜백을 사용하여 + pfx로 PDF에 서명하는 방법을 배웁니다. +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: ko +og_description: 디지털 서명을 빠르게 PDF에 추가하세요. 이 가이드는 C#에서 pfx를 사용해 PKCS7 분리 서명을 생성하고 PDF에 + 서명하는 방법을 보여줍니다. +og_title: C#에서 PDF 디지털 서명 추가 – 전체 프로그래밍 튜토리얼 +tags: +- Aspose.PDF +- C# +- Digital Signature +title: C#에서 PDF 디지털 서명 추가 – 완전한 단계별 가이드 +url: /ko/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 디지털 서명 PDF 추가 – 완전 단계별 가이드 + +디지털 서명 PDF 파일을 **add digital signature pdf** 해야 할 필요를 느낀 적이 있지만 어디서 시작해야 할지 몰랐나요? 당신만 그런 것이 아닙니다; 많은 개발자들이 법적 구속력이 있는 서명이 필요하고 코드베이스는 일반 PDF만 생성할 줄 알 때 같은 벽에 부딪힙니다. + +이 튜토리얼에서는 Aspose.PDF for .NET을 사용해 **add digital signature pdf** 문서를 추가하고, PKCS#7 분리 서명을 생성하며, PFX 인증서로 PDF에 서명하는 순수 C# 솔루션을 단계별로 안내합니다. 끝까지 진행하면 바로 실행 가능한 스니펫을 얻고, 각 호출 뒤에 숨은 “왜”를 이해하며, 엣지 케이스에 맞게 접근 방식을 조정하는 방법을 알게 됩니다. + +## 배울 내용 + +- 서명되지 않은 PDF를 로드하고 서명을 위해 준비하는 방법. +- **create pkcs7 detached signature** 메커니즘과 임베디드 서명보다 분리 서명을 선호할 수 있는 이유. +- 사용자 정의 콜백을 사용한 **sign pdf using pfx** 정확한 단계, 이를 통해 암호화 프로세스를 완전하게 제어할 수 있습니다. +- 일반적인 함정(인증서 누락, 잘못된 해시 알고리즘 등) 해결 팁. + +### 사전 요구 사항 + +| Requirement | Reason | +|-------------|--------| +| .NET 6.0 or later | 최신 언어 기능과 향상된 메모리 관리 제공. | +| Aspose.PDF for .NET (NuGet package) | `PdfFileSignature`, `PKCS7Detached` 등 PDF 유틸리티 제공. | +| A valid PFX file (`.pfx`) with private key | **sign pdf using pfx** 단계에 필요. | +| Basic C# knowledge | 코드는 직관적이지만 `using` 구문을 이해하면 도움이 됩니다. | + +> **Pro tip:** PFX 비밀번호를 소스 컨트롤에 포함시키지 마세요—프로덕션에서는 환경 변수나 Azure Key Vault를 사용하세요. + +--- + +## Aspose.PDF로 디지털 서명 PDF 추가 방법 + +아래에서는 전체 과정을 다섯 개의 소화 가능한 단계로 나눕니다. 각 단계마다 코드 스니펫, *왜* 중요한지에 대한 설명, 그리고 간단한 검증 포인트를 제공합니다. + +![Screenshot of signed PDF in a viewer, showing a visible signature field](/images/add-digital-signature-pdf.png "add digital signature pdf example") + +### 1단계 – 서명되지 않은 PDF 문서 로드 + +먼저 서명하려는 PDF를 나타내는 `Document` 객체가 필요합니다. `using var`를 사용하면 파일 핸들이 자동으로 해제됩니다. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**Why?** +Aspose는 PDF를 객체 그래프로 취급합니다; 로드하면 페이지, 주석 및 나중에 서명을 위해 해시될 내부 바이트 스트림에 접근할 수 있습니다. + +### 2단계 – PdfFileSignature 도우미 초기화 + +`PdfFileSignature`는 실제로 암호화 봉투를 적용하는 클래스이며 `PKCS7Detached`와 손잡고 동작합니다. + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**Why?** +서명자를 문서와 분리하면 (예: 워터마크 추가) 최종 서명 전에 동일한 `Document` 인스턴스를 재사용할 수 있습니다. + +### 3단계 – PKCS#7 분리 서명 생성 (Create PKCS7 Detached Signature) + +A **PKCS#7 detached signature**는 PDF 자체가 아니라 PDF의 해시만 저장합니다. 이는 대용량 문서나 원본 파일을 변경하지 않아야 할 때 이상적입니다. + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**Why a custom callback?** +서명 키가 HSM이나 Azure Key Vault에 보관되어 있어 개인 키를 직접 추출할 수 없는 경우가 있습니다. `CustomSignHash`를 제공하면 해시를 키를 보유한 서비스에 전달해 개인 키를 노출하지 않고 서명을 생성할 수 있습니다. + +**What if you don’t need a custom callback?** +`CustomSignHash`를 생략하면 Aspose가 PFX 내부의 개인 키를 자동으로 사용합니다. 하지만 사용자 정의 경로가 더 유연하고 규정 준수 요구에 부합합니다. + +### 4단계 – 특정 페이지에 서명 적용 (Sign PDF Using PFX) + +이제 페이지에 보이는 서명 필드를 실제로 배치합니다. 사각형은 위치와 크기(포인트)를 정의합니다. + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**Why specify a rectangle?** +보이는 서명은 최종 사용자가 문서가 서명되었음을 확인할 수 있게 해줍니다. `isVisible`을 `false`로 설정하면 서명은 보이지 않지만 여전히 유효합니다—다만 발견하기 어려워집니다. + +**Edge case:** PDF에 페이지가 전혀 없으면(empty file) 호출이 `ArgumentOutOfRangeException`을 발생시킵니다. 서명 전에 항상 `pdfDocument.Pages.Count > 0`을 확인하세요. + +### 5단계 – 서명된 PDF 저장 + +마지막으로 서명된 문서를 디스크에 저장합니다. ASP.NET Core에서는 응답 스트림으로 직접 전송할 수도 있습니다. + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**Verification tip:** 결과 파일을 Adobe Acrobat Reader에서 열어보세요. 서명 패널에 초록색 체크 표시가 나타나야 합니다(인증서가 머신에 신뢰된 경우). + +## 완전한 작업 예제 + +모든 내용을 하나로 합치면, 경로와 비밀번호만 조정하면 복사‑붙여넣기하여 바로 실행할 수 있는 콘솔 프로그램이 됩니다. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**Expected output:** 콘솔에 “✅ PDF signed successfully!”가 출력되고 동일 폴더에 `CustomSigned.pdf` 파일이 생성됩니다. 파일을 열면 좌표 (100,100)‑(300,200)에 서명 위젯이 표시됩니다. + +## 자주 묻는 질문 및 엣지 케이스 + +### PFX가 스마트 카드로 보호된 경우는 어떻게 하나요? + +`CustomSignHash` 대리자를 사용해 해시를 스마트 카드 드라이버로 전달하세요. 드라이버가 서명 바이트를 반환하면 Aspose가 개인 키를 노출하지 않고 이를 삽입합니다. + +### 여러 페이지에 한 번에 서명할 수 있나요? + +가능합니다. 루프 안에서 `pdfSigner.Sign`을 호출하고 `pageNumber`와 필요에 따라 사각형을 조정하면 됩니다. 각 호출은 별도의 서명 객체를 추가하므로 일부 뷰어에서는 각각을 개별적으로 표시합니다. + +### 해시 알고리즘을 어떻게 변경하나요? + +`PKCS7Detached`는 기본적으로 SHA‑256을 사용하지만 `HashAlgorithm` 속성을 설정하면 변경할 수 있습니다: + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +선택한 알고리즘을 서명 제공자가 지원하는지 확인하세요. + +### 클라이언트 머신에서 인증서 체인이 신뢰되지 않을 경우는? + +PFX에 전체 체인을 포함하거나 최종 사용자의 신뢰 저장소에 루트 인증서를 배포하세요. 그렇지 않으면 Acrobat이 “Signature is unknown”이라고 보고합니다. + +### 분리 서명이 PDF/A‑3와 호환되나요? + +PDF/A‑3은 임베디드 서명을 요구하므로 분리된 PKCS#7은 규격에 맞지 않을 수 있습니다. 이 경우 `CustomSignHash` 대리자를 제거하고 Aspose가 내부적으로 서명을 처리하도록 하면 임베디드 서명이 생성됩니다. + +## 프로덕션을 위한 모범 사례 + +1. **Never hard‑code passwords.** 환경 변수나 비밀 관리자를 통해 가져오세요. +2. **Validate the PDF before signing.** 손상된 파일은 `PdfFileSignatureException`을 일으킵니다. +3. **Log the hash algorithm and certificate thumbprint** for audit trails. +4. **Test with multiple PDF viewers** (Adobe Reader, Foxit, Chrome) to ensure the signature appears as intended. +5. **Consider timestamping** by adding a TSA (Time‑Stamp Authority) request, which further hardens the signature’s legal standing. + +## 결론 + +우리는 Aspose.PDF를 사용해 **add digital signature pdf** 파일을 추가하고, **PKCS#7 detached signature**를 생성하며, 사용자 정의 콜백을 통해 **sign pdf using pfx**하는 방법을 보여주었습니다. 완전한 예제는 바로 실행 가능하며, 설명을 통해 HSM, 타임스탬프 서비스 또는 PDF/A 준수를 위해 프로세스를 조정할 자신감을 얻을 수 있습니다. + +다음으로는 **signing multiple documents in batch**를 탐색하거나, 보안 키 저장을 위해 **Azure Key Vault**와 통합하거나, 서명 외관에 **visual customization**을 추가하는 것을 고려해볼 수 있습니다. 이 주제들은 모두 여기서 다룬 기반 위에 직접적으로 구축됩니다. + +단계를 따라왔다면 이제 팀원과 공유하거나 AI 기반 어시스턴트 답변에 인용할 수 있는 견고하고 신뢰할 만한 솔루션을 보유하게 된 것입니다. 서명 즐겁게 진행하시고, 내용이 명확하지 않은 부분이 있으면 언제든 댓글로 알려주세요! + +{{< /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/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/korean/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..b267556a9 --- /dev/null +++ b/pdf/korean/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-03-06 +description: Aspose PDF를 사용하여 C#에서 PDF 서명을 검증하는 방법을 배웁니다. 단계별 PDF 서명 검증, PDF 서명 유효성 + 검사 및 손상된 서명 처리. +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: ko +og_description: Aspose PDF를 사용하여 PDF에서 서명을 확인하는 방법. 이 가이드를 따라 PDF 서명 검증을 수행하고, PDF + 서명을 검증하며, C#에서 손상된 서명을 감지하세요. +og_title: C#를 사용하여 PDF에서 서명 확인하는 방법 – 완전한 Aspose 가이드 +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: C#를 사용하여 PDF에서 서명 검증하기 – 완전한 Aspose 가이드 +url: /ko/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#를 사용하여 PDF에서 서명을 검증하는 방법 – 완전한 Aspose 가이드 + +Ever wondered **how to verify signature** in a PDF without pulling your hair out? You're not alone. Many developers hit a wall when they need to **pdf signature verification** for compliance or audit reasons, and the usual “just trust the library” approach can backfire. + +In this tutorial we’ll walk through a practical, end‑to‑end solution that not only **validate pdf signature** but also tells you if the signature has been tampered with. We'll use the **Aspose PDF** library, which means the code works on .NET 6+, .NET Framework 4.6+ and even .NET Core. By the end you’ll have a ready‑to‑run snippet that you can drop into any C# project. + +## 필요 사항 + +- **Aspose.Pdf** NuGet 패키지 (작성 시점 최신 버전 – 23.12). +- .NET 개발 환경 (Visual Studio, Rider, 또는 VS Code). +- 서명된 PDF 파일 (`Signed.pdf`). +- 기본 C# 지식 – 특별한 것이 아니라 일반적인 `using` 문과 `Console` I/O만 있으면 됩니다. + +그게 전부입니다. 추가 서비스나 복잡한 설정 파일이 필요 없습니다. 준비되셨나요? 바로 시작해봅시다. + +![서명 검증 다이어그램](image.png "서명 검증") + +## 단계 1: PDF 서명 검증을 위한 프로젝트 설정 + +Aspose API를 호출하기 전에 라이브러리를 참조해야 합니다. 터미널이나 Package Manager Console을 열고 다음을 실행하세요: + +```bash +dotnet add package Aspose.Pdf +``` + +Or, if you prefer the UI, search for **Aspose.Pdf** in the NuGet Package Manager and install it. This step is crucial because without the **aspose pdf signature** assembly you won’t be able to access the `PdfFileSignature` class later on. + +> **Pro tip:** 최고의 성능을 얻고 레거시 호환성 경고를 피하려면 .NET 6 이상을 대상으로 하세요. + +## 단계 2: PDF 문서 로드 + +패키지가 설치되었으니 확인하려는 PDF를 로드할 수 있습니다. `Document` 클래스는 파일 전체를 메모리에 나타냅니다. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**Why this matters:** 문서를 로드하면 서명 필드를 포함한 내부 구조에 접근할 수 있습니다. 파일이 없거나 손상된 경우 `Document`가 예외를 발생시키며, 이를 잡아 보다 부드러운 사용자 경험을 제공할 수 있습니다. + +## 단계 3: Aspose PdfFileSignature 객체 생성 + +문서를 확보했으니 다음 단계는 `PdfFileSignature`를 인스턴스화하는 것입니다. 이 파사드 클래스는 PDF에 삽입된 디지털 서명을 읽고, 검증하고, 조작하는 방법을 알고 있습니다. + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**Explanation:** `PdfFileSignature` 생성자는 로드된 `Document`를 인수로 받습니다. 내부적으로 서명 사전을 파싱하여 `VerifySignature`와 `IsSignatureCompromised`와 같은 메서드를 사용할 수 있게 합니다. + +## 단계 4: 서명 무결성 검증 + +**pdf signature verification**의 핵심은 `VerifySignature` 메서드입니다. 암호화 해시가 저장된 값과 일치하고 인증서 체인이 신뢰되는 경우(`trust manager`를 설정했다고 가정하지만 여기서는 생략) `true`를 반환합니다. + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +여러 개의 서명이 있는 경우 인덱스(`0`, `1`, …)만 바꾸면 됩니다. 이 메서드는 무결성과 신뢰성을 한 번에 검사하므로 대부분의 시나리오에서 기본 선택입니다. + +## 단계 5: 손상된 서명 감지 + +서명이 “유효”하더라도 서명 후 문서가 변경되면 손상될 수 있습니다. Aspose는 이러한 미묘한 경우를 감지하기 위해 `IsSignatureCompromised`를 제공합니다. + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**When to use it:** PDF에 서명된 뒤 사용자가 주석을 추가하거나 페이지를 변경했다고 가정해 보세요. 해시가 달라지며, 인증서 자체가 정상이라면 `VerifySignature`는 여전히 `true`일 수 있지만 `IsSignatureCompromised`는 `true`를 반환합니다. 두 플래그를 모두 확인하면 전체 상황을 파악할 수 있습니다. + +## 단계 6: 결과 해석 + +이제 두 개의 불리언 값, `isSignatureValid`와 `isSignatureCompromised`가 있습니다. 이를 친절한 콘솔 출력으로 변환해 보겠습니다. + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### 예상 출력 + +| 시나리오 | 콘솔 출력 | +|---|---| +| 유효하고 손상되지 않음 | `Signature OK` | +| 유효하지만 손상됨 (문서 변경) | `Signature compromised!` | +| 무효 (인증서 신뢰 안 됨, 해시 불일치) | `Signature verification failed` | + +## 전체 작동 예제 + +모든 코드를 합치면 아래와 같이 완전한 실행 가능한 프로그램이 됩니다: + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +`pdfPath`를 조정한 뒤 복사·붙여넣기하고 실행하세요. 모든 설정이 올바르면 위 세 가지 메시지 중 하나가 표시됩니다. + +## PDF 서명 검증 시 흔히 겪는 문제와 팁 + +| Issue | Why it Happens | How to Fix / Avoid | +|-------|----------------|--------------------| +| **Aspose 라이선스 누락** | 무료 평가판은 워터마크를 추가하고 일부 API 호출을 제한할 수 있습니다. | 라이선스를 등록하세요 (`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`). | +| **다중 서명 존재하지만 잘못된 인덱스** | 잘못된 서명을 검사하면 false negative가 발생할 수 있습니다. | `signatureVerifier.GetSignatureCount()`를 반복하여 각각 검사하세요. | +| **인증서 체인 신뢰 안 됨** | `VerifySignature`은 루트 CA가 신뢰 저장소에 없으면 실패합니다. | 서명 CA를 Windows 신뢰 루트 저장소에 추가하거나 사용자 정의 `CertificateValidator`를 구성하세요. | +| **다른 프로세스에 의해 파일이 잠김** | 다른 곳에서 열려 있는 PDF를 열면 `IOException`이 발생할 수 있습니다. | `FileShare.ReadWrite` 옵션을 가진 `FileStream`을 사용하거나 먼저 임시 파일로 복사하세요. | +| **잘못된 PDF 경로** | 간단한 오타가 `FileNotFoundException`을 일으킵니다. | 로드하기 전에 `File.Exists(pdfPath)`로 경로를 확인하세요. | + +### 마주칠 수 있는 엣지 케이스 + +- **Detached signatures**: 일부 PDF는 서명을 외부에 저장합니다. 현재 Aspose의 `PdfFileSignature`는 임베디드 서명만 지원합니다. +- **Timestamped signatures**: 타임스탬프 권한(TSA)을 검증해야 하는 경우, 사용자 정의 `VerificationOptions` 객체와 함께 `VerifySignature`를 호출해야 합니다—이 빠른 가이드의 범위를 벗어나지만 규정 준수가 중요한 프로젝트에서는 참고하세요. + +## 다음 단계 – 검증 로직 확장 + +이제 **how to verify signature**의 기본을 마스터했으니, 다음과 같은 작업을 고려할 수 있습니다: + +1. **Validate PDF signature**를 신뢰할 수 있는 인증서 목록(예: 기업 PKI)과 비교합니다. +2. `GetSignatureInfo`를 사용하여 **Export signature details**(서명자 이름, 서명 시간, 인증서 지문)를 내보냅니다. +3. 폴더 내 여러 PDF를 **Batch‑process**하여 결과를 CSV에 기록하고 감사를 수행합니다. + +이 모든 작업은 방금 다룬 코드의 간단한 확장으로, 동일한 **aspose pdf signature** 생태계 내에서 수행됩니다. + +--- + +**요약하면**, 이제 C#와 Aspose를 사용해 PDF에서 **how to verify signature**하는 방법, 손상된 서명을 감지하는 방법, 검증이 실패했을 때 대처 방법을 정확히 알게 되었습니다. 이 접근 방식은 견고하며, 다중 서명을 지원하고, 더 큰 문서 처리 파이프라인에 통합할 수 있습니다. + +이 시나리오에 변형이 있나요? 검증이 아니라 PDF에 서명해야 하거나, 암호화된 PDF를 다루고 있다면 댓글을 남겨 주세요. 함께 그 방안을 살펴보겠습니다. 즐거운 코딩 되세요! + +{{< /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/programming-with-stamps-and-watermarks/_index.md b/pdf/korean/net/programming-with-stamps-and-watermarks/_index.md index f18230151..f09ce844f 100644 --- a/pdf/korean/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/korean/net/programming-with-stamps-and-watermarks/_index.md @@ -39,6 +39,7 @@ Aspose.PDF의 .NET용 "스탬프 및 워터마크 프로그래밍" 튜토리얼 | [헤더 푸터 섹션의 테이블](./table-in-header-footer-section/) | Aspose.PDF for .NET을 사용하여 PDF 파일의 바닥글에 텍스트를 쉽게 추가하는 방법을 알아보세요. 원활한 통합을 위해 단계별 가이드가 포함되어 있습니다. | | [PDF 파일 바닥글의 텍스트](./text-in-footer/) | Aspose.PDF for .NET을 사용하여 PDF 파일의 바닥글에 텍스트를 추가하는 방법을 알아보세요. | | [PDF 파일 헤더의 텍스트](./text-in-header/) | Aspose.PDF for .NET을 사용하여 PDF에 텍스트 헤더를 추가하는 방법을 단계별 튜토리얼을 통해 알아보세요. 문서를 효율적이고 효과적으로 개선해 보세요. | +| [C#에서 베이츠 번호 매기기로 PDF 문서 만들기 – 전체 가이드](./create-pdf-document-with-bates-numbering-in-c-full-guide/) | Aspose.PDF for .NET을 사용하여 C#에서 베이츠 번호 매기기를 적용해 PDF 문서를 만드는 방법을 단계별 가이드로 확인하세요. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/korean/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/korean/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..6b5037aab --- /dev/null +++ b/pdf/korean/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,182 @@ +--- +category: general +date: 2026-03-06 +description: C#에서 PDF 문서를 만들고 바테스 번호를 쉽게 추가하세요. 빈 페이지 PDF를 추가하고, 페이지에 스탬프를 배치하며, 바테스 + 번호 매기기를 구현하는 방법을 배워보세요. +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: ko +og_description: C#에서 PDF 문서를 생성하고 베이츠 번호를 추가합니다. 이 가이드는 빈 페이지 PDF를 추가하고, 페이지에 스탬프를 + 배치하며, 베이츠 번호를 적용하는 방법을 보여줍니다. +og_title: Bates 번호 매기기로 PDF 문서 만들기 – C# 튜토리얼 +tags: +- Aspose.Pdf +- C# +- PDF automation +title: C#로 베이츠 번호가 포함된 PDF 문서 만들기 – 전체 가이드 +url: /ko/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#에서 베이츠 번호가 포함된 PDF 문서 만들기 + +C#에서 **PDF 문서 만들기**가 필요했지만, 머리카락을 뽑을 정도로 베이츠 번호를 추가하는 방법을 몰라 고민한 적 있나요? 당신만 그런 것이 아닙니다—법률 사무소, 법원, 그리고 일부 기업 컴플라이언스 팀도 매일 이 문제에 직면합니다. 좋은 소식은? 몇 줄의 Aspose.Pdf 코드만으로 새 PDF를 생성하고, 빈 페이지를 추가한 뒤, 한 번에 베이츠 번호를 적절히 스탬프할 수 있다는 것입니다. + +이 튜토리얼에서는 프로젝트 설정부터 빈 페이지 PDF 추가, **베이츠 번호 추가 방법** 파악, 마지막으로 **페이지에 스탬프 배치** 및 저장까지 전체 과정을 단계별로 안내합니다. 끝까지 따라오면 .NET 애플리케이션 어디에든 삽입할 수 있는 바로 사용 가능한 코드 조각을 얻게 됩니다. 애매한 참고 자료가 아니라 완전하고 실행 가능한 예제만 제공합니다. + +## 필요 사항 + +- **.NET 6+** (또는 .NET Framework 4.6+ – Aspose.Pdf는 두 환경 모두 지원) +- **Aspose.Pdf for .NET** NuGet 패키지 (`Install-Package Aspose.Pdf`) +- 적당한 IDE (Visual Studio, Rider, 혹은 C# 확장 기능이 설치된 VS Code) + +그것뿐입니다. 추가 DLL이나 외부 서비스는 필요 없습니다. 바로 시작해 보겠습니다. + +## 1단계: PDF 문서 만들기 – 초기 설정 + +먼저, 새 `Document` 객체가 필요합니다. 이것은 모든 내용이 들어갈 빈 캔버스와 같습니다. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **왜 중요한가:** `Document` 클래스는 모든 Aspose 작업의 진입점입니다. 인스턴스를 생성하면 `Pages` 컬렉션, 메타데이터, 보안 설정 등에 접근할 수 있어 전문적인 PDF를 만들기 위한 모든 기본 요소를 제공받게 됩니다. + +## 2단계: 빈 페이지 PDF 추가 + +페이지가 없는 PDF는 페이지가 없는 책과 마찬가지로 쓸모가 없습니다. 빈 페이지를 추가하는 것은 간단하며, 베이츠 번호를 스탬프할 표면을 제공합니다. + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **팁:** 여러 페이지가 필요하면 `pdfDocument.Pages.Add()`를 루프 안에서 호출하면 됩니다. 각 호출은 독립적으로 커스터마이징할 수 있는 새로운 `Page` 객체를 반환합니다. + +## 3단계: 베이츠 번호 추가 – TextStamp 만들기 + +이제 핵심인 **베이츠 번호**를 다룰 차례입니다. Aspose.Pdf에서는 특별한 아티팩트 플래그가 설정된 `TextStamp`로 구현됩니다. + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **`Artifact`를 설정하는 이유:** 일부 PDF 리더는 베이츠 번호를 검색 가능한 메타데이터로 노출합니다. 스탬프를 `BatesNumbering` 아티팩트로 표시하면 후속 도구가 자동으로 인식하도록 보장합니다. + +## 4단계: 페이지에 스탬프 배치 + +스탬프가 준비되었으니 이제 **페이지에 스탬프 배치**를 수행합니다. 이 단계에서 시각적인 번호가 실제 PDF에 나타납니다. + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **예외 상황:** 각 페이지마다 번호가 증가하도록 하려면 `pdfDocument.Pages`를 순회하면서 `AddStamp` 호출 전에 `batesStamp.Value`를 업데이트하면 됩니다. 여기 예제는 정적인 “Bates‑001”을 사용해 간단히 보여줍니다. + +## 5단계: 저장 및 결과 확인 + +마지막으로 PDF를 디스크에 저장합니다. 쓰기 권한이 있는 폴더를 선택하세요; 그렇지 않으면 `UnauthorizedAccessException`이 발생합니다. + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +`BatesStamped.pdf`를 어떤 뷰어에서 열어도 빈 페이지 오른쪽 하단에 작은 “Bates‑001”이 깔끔하게 표시될 것입니다. + +> **예상 출력:** +> ![PDF with Bates number stamp](image-placeholder.png "PDF with Bates number stamp") +> *Alt text: PDF with Bates number stamp on the bottom‑right corner.* + +번호가 보이지 않으면 여백 값과 페이지 크기(A4 기본값이 적합함)를 다시 확인하고, `Artifact` 플래그가 후처리 도구에 의해 제거되지 않았는지 점검하세요. + +## 전체 작동 예제 + +아래는 복사‑붙여넣기만 하면 바로 실행 가능한 전체 프로그램입니다. 모든 `using` 지시문과 주석이 포함되어 있어 흐름을 파악하기 쉽습니다. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +프로그램을 실행하고 PDF를 열면 베이츠 번호가 정확히 지정한 위치에 표시됩니다. 🎉 + +## 흔히 발생하는 변형 및 주의점 + +| 시나리오 | 변경 내용 | 이유 | +|----------|-----------|------| +| **여러 페이지, 번호 자동 증가** | `pdfDocument.Pages`를 순회하면서 `batesStamp.Value = $"Bates-{i:D3}"`를 `AddStamp` 전에 설정 | 각 페이지에 고유 식별자를 부여, 법률 번들에 일반적 | +| **다른 위치(좌상단) 배치** | `HorizontalAlignment = HorizontalAlignment.Left` 및 `VerticalAlignment = VerticalAlignment.Top`으로 변경 | 일부 조직은 헤더에 번호를 두는 것을 선호 | +| **커스텀 폰트 또는 색상** | `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` 설정 | 가독성을 높이거나 브랜드 가이드라인에 맞춤 | +| **기존 PDF를 배경으로 추가** | `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` 사용 | 사전 생성된 양식 위에 스탬프를 찍어야 할 때 유용 | + +## 마무리 + +우리는 **PDF 문서 만들기**, **빈 페이지 PDF 추가**, **베이츠 번호 추가**를 Aspose.Pdf for .NET으로 수행하고, **페이지에 스탬프 배치** 후 파일을 저장하는 전체 과정을 살펴보았습니다. 코드는 의도적으로 간결하게 작성되어 있어 수십 개 파일을 일괄 처리하거나 웹 서비스에 통합하는 등 더 큰 워크플로에 쉽게 적용할 수 있습니다. + +다음 단계로 고려해 볼 수 있는 내용: + +- 대용량 사건 파일을 위한 번호 자동 증가 로직 자동화 +- PDF 생성 기능을 ASP.NET Core API에 내장 +- `pdfDocument.Encrypt(...)`를 이용한 보안(비밀번호 보호) 추가 + +실험해 보고, 문제를 발견하면 댓글로 질문해 주세요. 즐거운 코딩 되시고, 여러분의 PDF가 언제나 정확히 스탬프되길 바랍니다! + +{{< /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/programming-with-tagged-pdf/_index.md b/pdf/korean/net/programming-with-tagged-pdf/_index.md index c5cc9002b..31234d67e 100644 --- a/pdf/korean/net/programming-with-tagged-pdf/_index.md +++ b/pdf/korean/net/programming-with-tagged-pdf/_index.md @@ -44,7 +44,8 @@ Aspose.PDF for .NET의 "태그가 지정된 PDF 프로그래밍" 튜토리얼은 | [텍스트 블록 구조 요소](./text-block-structure-elements/) | Aspose.PDF for .NET을 사용하여 기존 PDF 문서에 제목 및 태그가 지정된 문단과 같은 텍스트 블록 구조 요소를 추가하는 방법을 알아보세요. | | [PDF 파일의 텍스트 구조 요소](./text-structure-elements/) Aspose.PDF for .NET을 사용하여 PDF의 텍스트 구조 요소를 조작하는 방법을 알아보세요. 이 단계별 가이드에서는 구조화된 PDF를 만드는 데 필요한 모든 것을 다룹니다. | | [PDF 파일 검증](./validate-pdf/) | Aspose.PDF for .NET을 사용하여 PDF 파일의 유효성을 검사하는 방법을 알아보세요. 표준 준수 여부를 확인하고 유효성 검사 보고서를 생성하세요. | -| [C#로 태그가 지정된 PDF 만들기 – 완전 단계별 가이드](./create-tagged-pdf-in-c-complete-step-by-step-guide/) | Aspose.PDF for .NET을 사용하여 C#에서 태그가 지정된 PDF를 처음부터 완전하게 만드는 단계별 가이드입니다. | +| [C#로 태그가 지정된 PDF 만들기 – 완전 단계별 가이드](./create-tagged-pdf-in-c-complete-step-by-step-guide/) | Aspose.PDF for .NET을 사용하여 C#에서 태그가 지정된 PDF를 처음부터 완전하게 만드는 단계별 가이드입니다. | +| [C#로 태그가 지정된 PDF 만들기 – 단계별 가이드](./create-tagged-pdf-in-c-step-by-step-guide/) | Aspose.PDF for .NET을 활용해 C#에서 태그가 지정된 PDF를 단계별로 만드는 방법을 안내합니다. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/korean/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/korean/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..52df420c6 --- /dev/null +++ b/pdf/korean/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-03-06 +description: C#에서 Aspose.Pdf를 사용하여 태그가 지정된 PDF를 만들고, PDF에 이미지를 추가하고 그림 위치를 설정하며, 접근성을 + 위해 PDF에 태그를 지정하는 방법을 배웁니다. +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: ko +og_description: Aspose.Pdf를 사용하여 태그가 지정된 PDF 만들기. 이 가이드는 PDF에 이미지를 추가하고, 그림 위치를 설정하며, + 접근성을 위해 PDF에 태그를 지정하는 방법을 보여줍니다. +og_title: C#에서 태그된 PDF 만들기 – 완전 튜토리얼 +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: C#에서 태그된 PDF 만들기 – 단계별 가이드 +url: /ko/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#에서 태그가 있는 PDF 만들기 – 전체 튜토리얼 + +C#에서 **create tagged PDF**가 필요했지만 어디서 시작해야 할지 몰랐던 적이 있나요? 혼자가 아닙니다; 접근성은 요즘 필수이며, 태그가 있는 PDF는 규격을 만족하는 문서의 핵심입니다. 이 튜토리얼에서는 **adds image to PDF**를 포함한 실제 예제를 단계별로 살펴보고, 그림의 위치를 설정하며 Aspose.Pdf를 사용해 **how to tag PDF**하는 방법을 보여드립니다. 끝까지 진행하면 누구에게든 전달할 수 있는 완전한 태그가 있는 PDF를 얻게 됩니다. + +기존 파일을 로드하는 것부터 최종 출력물을 저장하는 것까지 모든 과정을 다루므로, 다른 곳에서 “how to add image”를 찾아볼 필요가 없습니다. 불필요한 내용 없이 Aspose.Pdf 23.8(작성 시 최신 버전)과 함께 작동하는 명확하고 실행 가능한 솔루션만 제공합니다. IDE를 준비하고 시작해봅시다. + +--- + +## 필요한 준비물 + +- **Aspose.Pdf for .NET** (NuGet 패키지 `Aspose.Pdf`). +- .NET 6+ (또는 .NET Framework 4.7.2+). +- 논리 구조가 이미 포함된 입력 PDF(즉, 이미 태그가 지정됨) – 그렇지 않다면 `pdfDocument.TaggedContent = true`를 통해 태깅을 활성화할 수 있습니다. +- 삽입하려는 이미지 파일(`image.png`). + +그게 전부입니다. 추가 라이브러리나 복잡한 설정 파일이 필요 없습니다. + +--- + +## 단계 1: 기존 PDF 문서 로드 (Create Tagged PDF Base) + +먼저 강화하려는 PDF를 엽니다. 파일을 로드하면 논리 구조에 접근할 수 있게 되며, 이는 **create tagged pdf** 작업 흐름에 필수적입니다. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*왜 중요한가:* 태그 트리가 없으면 PDF가 화면 판독기에게 구조 정보를 전달하지 못합니다. 태깅을 활성화하면 추가하는 새로운 요소(예: 그림)가 올바른 계층 구조를 상속받게 됩니다. + +--- + +## 단계 2: 논리 구조 루트 접근 (How to Tag PDF) + +이제 PDF의 논리 구조에 접근합니다. 루트 요소는 모든 태그의 컨테이너이며, 문서의 개요와 같습니다. + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*설명:* `logicalRoot`를 사용하면 `
` 또는 `
`과 같은 새로운 태그를 추가할 수 있습니다. 이는 프로그래밍 방식으로 **how to tag PDF**하는 핵심입니다. + +--- + +## 단계 3: Figure 태그 생성 및 위치 설정 (Set Figure Position) + +*Figure* 태그는 시각 콘텐츠와 선택적 캡션을 그룹화합니다. 여기서는 이를 생성하고 위치를 지정한 뒤 루트에 연결합니다. + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*왜 위치를 설정하는가:* **set figure position** 단계는 시각 요소가 페이지에 배치되는 위치를 결정합니다. 이를 생략하면 그림이 예상치 못한 위치에 나타나거나 보조 기술에 보이지 않을 수 있습니다. + +--- + +## 단계 4: 시각 요소 추가 – 이미지 삽입 (Add Image to PDF) + +태그가 준비되었으니 실제 이미지를 삽입해야 합니다. 이것이 **add image to pdf**에 대한 답변 부분입니다. + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*핵심 포인트:* 사각형 좌표는 앞서 정의한 `figureTag.Position`과 일치해야 합니다. 그렇지 않으면 그림과 시각 콘텐츠가 맞지 않아 접근성이 깨집니다. + +--- + +## 단계 5: 업데이트된 PDF 저장 (Finish Creating Tagged PDF) + +마지막으로 변경 사항을 새 파일에 저장합니다. 원본을 그대로 두는 것이 좋은 습관입니다. + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +이 단계에서 **create tagged pdf** 파일이 생성되며, 적절히 위치한 이미지가 `
` 태그로 감싸져 있습니다. Adobe Acrobat에서 `output.pdf`를 열고 *Tags* 패널을 확인하면 루트 아래에 `Figure` 노드가 표시됩니다. + +--- + +## 전체 실행 가능한 예제 + +아래는 콘솔 앱에 복사‑붙여넣기 할 수 있는 전체 프로그램입니다. 모든 단계가 올바른 순서대로 배치되어 있습니다. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### 예상 결과 + +- `output.pdf`가 (100, 150) 포인트 위치에 이미지가 표시되고, 크기는 300 × 200 포인트로 열립니다. +- *Tags* 창에 이미지를 감싸는 `Figure` 요소가 표시됩니다. +- 화면 판독기 도구가 그림을 설명하기 전에 “Figure”라고 알리며, 기본 접근성 표준을 충족합니다. + +--- + +## 일반적인 질문 및 엣지 케이스 + +### 원본 PDF에 태그가 없으면 어떻게 하나요? + +Aspose.Pdf에서는 `pdfDocument.TaggedContent.IsTagged = true;`를 설정하여 태깅을 활성화할 수 있습니다. 라이브러리가 기본 태그 트리를 생성한 뒤, 앞에서 보여준 대로 사용자 정의 태그를 추가할 수 있습니다. + +### 그림에 캡션을 추가할 수 있나요? + +예. `figureTag`를 만든 후 `Paragraph`와 `TextFragment`를 연결하고 `Tag`를 `Caption`으로 설정하면 됩니다. 예시: + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### 다른 페이지에 그림을 배치하려면? + +`var firstPage = pdfDocument.Pages[1];`를 원하는 페이지 인덱스로 교체합니다. 예: `pdfDocument.Pages[3]`. 페이지 크기가 다르면 `Position` 좌표도 조정해야 합니다. + +### 여러 이미지를 태그해야 하면? + +각 이미지마다 새로운 `Figure`를 생성하고 고유한 `Position`을 지정한 뒤 해당 페이지에 `Image` 객체를 추가합니다. 이미지 컬렉션을 순회하는 루프를 사용하면 편리합니다. + +### PDF/A 준수와 함께 사용할 수 있나요? + +Aspose.Pdf는 PDF/A‑1b, PDF/A‑2b, PDF/A‑3b를 지원합니다. PDF/A 문서를 생성할 때는 저장하기 전에 준수 모드를 설정해야 합니다: + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +태깅 로직은 동일하게 유지됩니다. + +--- + +## 전문가 팁 및 함정 + +- **전문가 팁:** 런타임 파일‑not‑found 오류를 방지하려면 항상 절대 경로나 `Path.Combine`을 사용하세요. +- **주의:** `Figure` 태그와 `Image` 사각형 간 좌표 불일치—보조 기술은 이 정렬에 의존합니다. +- **성능 참고:** 많은 페이지를 처리할 경우 이미지 스트림을 `using` 블록으로 감싸서 리소스를 즉시 해제하세요. +- **버전 확인:** 표시된 API는 Aspose.Pdf 23.8+에서 동작합니다. 이전 버전은 클래스 이름이 약간 다를 수 있습니다(예: `FigureElement` 대신 `LogicalStructureElement`). + +--- + +## 결론 + +우리는 이제 **create tagged pdf**를 처음부터 끝까지 수행했으며, **add image to pdf**를 시연하고 **set figure position**을 보여주면서 **how to tag pdf**와 **how to add image**에 대한 답을 하나의 일관된 예제로 제공했습니다. 코드는 바로 실행 가능하고, 각 단계의 “왜”에 대한 설명도 포함되어 있어 C#에서 접근성 있는 PDF를 만들기 위한 탄탄한 기반을 갖추게 되었습니다. + +다음 도전에 준비되셨나요? `
` 태그로 표를 추가하거나 보관용으로 PDF/A‑2b 준수 레이어를 삽입해 보세요. 로드 → 논리 구조 접근 → 태그 생성 → 시각 콘텐츠 연결 → 저장이라는 동일한 패턴이 대부분의 PDF 접근성 작업에 적용됩니다. + +문제가 발생하거나 여기서 다루지 않은 사용 사례가 있다면 아래에 댓글을 남겨 주세요. 즐거운 태깅 되시고, 모두가 읽을 수 있는 PDF 만들기를 즐기세요! + +![Figure 태그와 이미지가 포함된 PDF를 보여주는 다이어그램 – create tagged pdf 만드는 방법을 설명](placeholder-image.png "create tagged pdf 예시") + +{{< /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/digital-signatures/_index.md b/pdf/polish/net/digital-signatures/_index.md index 5d61a9d7c..0e367e095 100644 --- a/pdf/polish/net/digital-signatures/_index.md +++ b/pdf/polish/net/digital-signatures/_index.md @@ -59,6 +59,9 @@ Dowiedz się, jak weryfikować podpisy PDF w C# przy użyciu Aspose.PDF dla .NET ### [Jak zweryfikować PDF – zweryfikuj podpis PDF przy użyciu Aspose](./how-to-verify-pdf-validate-pdf-signature-with-aspose/) Dowiedz się, jak weryfikować podpisy PDF przy użyciu Aspose, zapewniając integralność dokumentu. +### [Jak odczytać podpisy w PDF za pomocą C# – przewodnik krok po kroku](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +Dowiedz się, jak odczytać podpisy w plikach PDF przy użyciu C# i Aspose.PDF .NET. + ## Dodatkowe zasoby - [Aspose.PDF dla dokumentacji sieciowej](https://docs.aspose.com/pdf/net/) diff --git a/pdf/polish/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/polish/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..678f2fc61 --- /dev/null +++ b/pdf/polish/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-06 +description: Jak odczytać podpisy w pliku PDF przy użyciu C#. Dowiedz się, jak wczytać + dokument PDF w C#, wylistować podpisy PDF oraz szybko i niezawodnie uzyskać podpisy + cyfrowe w PDF. +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: pl +og_description: Jak odczytać podpisy w pliku PDF przy użyciu C#. Ten przewodnik pokazuje, + jak wczytać dokument PDF w C#, wylistować podpisy PDF oraz pobrać cyfrowe podpisy + PDF w kilku prostych krokach. +og_title: Jak odczytywać podpisy w PDF przy użyciu C# – Kompletny przewodnik +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: Jak odczytać podpisy w PDF za pomocą C# – Przewodnik krok po kroku +url: /pl/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak odczytać podpisy w PDF przy użyciu C# – Kompletny przewodnik + +Zastanawiałeś się kiedyś, **jak odczytać podpisy**, które już znajdują się w pliku PDF? Być może tworzysz pulpit zgodności lub po prostu musisz zweryfikować podpisane kontrakty przed ich zapisaniem w bazie danych. Dobra wiadomość: wystarczy kilka linii C# i biblioteka Aspose.Pdf, aby wyciągnąć nazwy podpisów prosto z pliku — bez ręcznej inspekcji. + +W tym tutorialu przejdziemy przez ładowanie dokumentu PDF w C#, wymienianie podpisów PDF oraz pobieranie informacji o cyfrowych podpisach PDF. Na końcu będziesz mieć gotową aplikację konsolową, która wypisze każdą znalezioną nazwę podpisu, a także wskazówki dotyczące obsługi przypadków brzegowych, takich jak pliki zabezpieczone hasłem. + +## Wymagania wstępne + +- .NET 6.0 lub nowszy (kod działa również z .NET Framework 4.6+) +- Aspose.Pdf for .NET (możesz pobrać darmową tymczasową licencję ze strony Aspose) +- PDF zawierający co najmniej jeden cyfrowy podpis (przykładowy `MultiSigned.pdf` znajduje się w repozytorium) + +> **Pro tip:** Jeśli używasz Visual Studio, włącz *Nullable Reference Types*, aby wcześnie wykrywać błędy związane z nullami. + +## Krok 1: Załaduj dokument PDF w C# + +Pierwszą rzeczą, której potrzebujemy, jest obiekt `Document` reprezentujący plik PDF na dysku. Klasa `Document` z Aspose.Pdf obsługuje wszystko, od prostego wyciągania tekstu po skomplikowane przetwarzanie formularzy. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**Dlaczego to ważne:** Ładowanie PDF weryfikuje, czy plik istnieje i jest czytelny. Jeśli plik jest uszkodzony lub ścieżka jest nieprawidłowa, aplikacja zakończy działanie wcześniej, zamiast napotkać niejasne błędy przy enumeracji podpisów. + +## Krok 2: Utwórz pomocnika `PdfFileSignature` + +Aspose rozdziela ogólne operacje na PDF (`Document`) od operacji specyficznych dla podpisów (`PdfFileSignature`). Utworzenie tego pomocnika daje dostęp do metod takich jak `GetSignatureNames()`. + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**Dlaczego to ważne:** Klasa `PdfFileSignature` potrafi parsować wpisy słownika `/Sig` w PDF, czyli miejsce, w którym przechowywane są cyfrowe podpisy. Dzięki niej odczytujemy podpisy dokładnie tak, jak zostały dodane, zachowując wszelkie metadane kryptograficzne. + +## Krok 3: Pobierz wszystkie nazwy podpisów + +Teraz przechodzimy do sedna **jak odczytać podpisy**: wywołujemy `GetSignatureNames()`. Metoda zwraca tablicę stringów zawierającą *nazwy pól* każdego podpisu. + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**Co zobaczysz:** Jeśli `MultiSigned.pdf` zawiera trzy podpisy o nazwach `Signature1`, `Signature2` i `Signature3`, wyjście w konsoli będzie wyglądało tak: + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## Krok 4: (Opcjonalnie) Zweryfikuj ważność każdego podpisu + +Odczytanie nazw często wystarcza, ale wiele projektów potrzebuje także sprawdzić, czy dany podpis jest nadal ważny. Aspose umożliwia walidację podpisu po nazwie pola: + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **Przypadek brzegowy:** Jeśli PDF jest zabezpieczony hasłem, musisz podać hasło przed wywołaniem `VerifySignature`. Użyj `pdfDocument.Encrypt.Password = "yourPassword";` zaraz po załadowaniu dokumentu. + +## Pełny działający przykład + +Poniżej znajduje się kompletny program, który możesz skopiować i wkleić do nowego projektu konsolowego (`dotnet new console`). Zawiera wszystkie kroki, obsługę błędów oraz opcjonalną weryfikację. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**Oczekiwane wyjście** (zakładając trzy prawidłowe podpisy): + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## Obsługa typowych wariantów + +| Sytuacja | Co zmienić | Dlaczego | +|-----------|----------------|-----| +| **PDF zabezpieczony hasłem** | Ustaw `pdfDocument.Encrypt.Password = "yourPwd";` przed utworzeniem `PdfFileSignature`. | Bez hasła słowniki podpisów są zaszyfrowane i `GetSignatureNames()` zwróci pustą tablicę. | +| **Duże PDF‑y ( > 100 MB )** | Użyj `pdfSigner.GetSignatureNames(0, 10)`, aby stronicować wyniki (pierwszy parametr = indeks początkowy). | Pobranie całej listy podpisów naraz może zużywać dużo pamięci. | +| **Brak podpisów** | Kod już wypisuje przyjazne ostrzeżenie. Rozważ zalogowanie tego jako zdarzenie audytowe. | Pomaga procesom downstream zdecydować, czy odrzucić plik, czy poprosić użytkownika o wersję podpisaną. | +| **Niestandardowe nazwy pól podpisu** | Metoda zwraca dokładnie taką nazwę pola, jaka została użyta przy podpisywaniu, np. `EmployeeApproval`. Nie wymaga dodatkowej pracy. | Umożliwia mapowanie podpisów na role biznesowe. | + +## Najlepsze praktyki i wskazówki + +- **Zwalnianie zasobów**: Wzorzec `using var pdfSigner` zapewnia szybkie zwolnienie zasobów natywnych. +- **Licencja na początku**: Wywołaj `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` na początku `Main`, aby uniknąć znaku wodnego wersji ewaluacyjnej. +- **Bezpieczeństwo wątków**: Jeśli przetwarzasz wiele PDF‑ów równolegle, twórz osobny `PdfFileSignature` dla każdego wątku. Klasa nie jest wątkowo‑bezpieczna. +- **Logowanie**: W produkcji zamień `Console.WriteLine` na strukturalny logger (Serilog, NLog), aby móc rejestrować dokładne nazwy podpisów w ścieżkach audytowych. +- **Sprawdzanie wersji**: Kod działa z Aspose.Pdf for .NET 23.10 i nowszymi. Starsze wersje mogą wymagać `PdfSignature` zamiast `PdfFileSignature`. + +## Podsumowanie + +Omówiliśmy **jak odczytać podpisy** z PDF przy użyciu C#. Ładując dokument PDF, tworząc pomocnika `PdfFileSignature` i wywołując `GetSignatureNames()`, możesz wypisać każdy cyfrowy podpis osadzony w pliku. Opcjonalna weryfikacja dodaje warstwę zaufania, a przykładowy kod pokazuje, jak wprowadzić to do rzeczywistej aplikacji konsolowej. + +Gotowy na kolejny krok? Spróbuj połączyć to z `DigitalSignatureUtil` Aspose, aby wyciągnąć certyfikaty podpisujących, lub przekazać listę podpisów do pulpitu zgodności, który oznacza niepodpisane kontrakty. Możliwości są nieograniczone — pamiętaj tylko, aby **załadować dokument PDF C#**, **wymienić podpisy PDF** i **pobrać cyfrowe podpisy PDF**, kiedy potrzebujesz szybkiego audytu. + +Miłego kodowania i niech Twoje PDF‑y zawsze pozostają bezpiecznie podpisane! + +{{< /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-conversion/_index.md b/pdf/polish/net/document-conversion/_index.md index 70b635168..3c878f503 100644 --- a/pdf/polish/net/document-conversion/_index.md +++ b/pdf/polish/net/document-conversion/_index.md @@ -59,6 +59,7 @@ Dowiesz się, jak określać ustawienia konwersji, wyodrębniać tekst i obrazy, | [XPS do PDF](./xps-to-pdf/) Dowiedz się, jak konwertować pliki XPS do PDF za pomocą Aspose.PDF dla .NET dzięki temu samouczkowi krok po kroku. Idealne dla programistów i entuzjastów dokumentów. | | [PDF do PDFA](./pdf-to-pdfa/) Dowiedz się, jak konwertować pliki PDF do formatu PDF/A za pomocą Aspose.PDF dla .NET, korzystając z tego samouczka krok po kroku. | | [Konwertuj PDF do PDF/X‑4 w C# – Samouczek ASP.NET PDF krok po kroku](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | Dowiedz się, jak w C# konwertować pliki PDF do formatu PDF/X‑4 przy użyciu Aspose.PDF dla .NET w prostym przewodniku krok po kroku. | +| [Samouczek Aspose PDF: konwersja PDF do PDF/X‑4 w C#](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) | Dowiedz się, jak w C# konwertować pliki PDF do formatu PDF/X‑4 przy użyciu Aspose.PDF dla .NET w prostym przewodniku krok po kroku. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/polish/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/polish/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..0cbd0b35c --- /dev/null +++ b/pdf/polish/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-03-06 +description: Samouczek Aspose PDF pokazuje, jak używać Aspose do wczytania dokumentu + PDF w C#, konwersji PDF do PDF/X‑4 oraz efektywnego zapisu przekonwertowanego PDF. +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: pl +og_description: Poradnik Aspose PDF wyjaśnia, jak wczytać dokument PDF w języku C#, + przekonwertować go na format PDF/X‑4 oraz zapisać przekonwertowany PDF przy użyciu + przejrzystych przykładów kodu. +og_title: 'Samouczek Aspose PDF: konwersja PDF do PDF/X‑4 w C#' +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: 'Samouczek Aspose PDF: konwersja PDF do PDF/X‑4 w C#' +url: /pl/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Samouczek Aspose PDF: Konwersja PDF do PDF/X‑4 w C# + +Zastanawiałeś się kiedyś, jak użyć Aspose, aby zamienić zwykły plik PDF w plik PDF/X‑4 bez żadnego wysiłku? Nie jesteś jedyny — programiści często potrzebują niezawodnego sposobu na **load PDF document C#**‑style, konwersję i późniejsze **save the converted PDF** w kolejnych procesach. W tym przewodniku przeprowadzimy Cię przez kompletny, gotowy do uruchomienia przykład, który robi dokładnie to, używając najnowszego Aspose.Pdf dla .NET. + +Omówimy wszystko, od instalacji biblioteki, wczytania źródłowego PDF, konwersji do standardu PDF/X‑4, aż po zapis wyniku na dysku. Po zakończeniu będziesz mieć solidne pojęcie o **how to use Aspose** w tym typowym scenariuszu konwersji, plus wskazówki dotyczące obsługi przypadków brzegowych. + +## Wymagania wstępne + +- .NET 6.0 lub nowszy (kod działa również na .NET Framework, ale zalecany jest .NET 6+). +- Ważny plik licencji Aspose.Pdf dla .NET (lub możesz uruchomić w trybie ewaluacyjnym dla szybkiego testu). +- Visual Studio 2022 lub dowolne IDE kompatybilne z C#. +- Plik PDF wejściowy znajdujący się w `YOUR_DIRECTORY/input.pdf`. + +Nie są wymagane dodatkowe pakiety NuGet poza `Aspose.Pdf`. + +## Instalacja Aspose.Pdf przez NuGet + +Otwórz terminal lub konsolę Package Manager i uruchom: + +```bash +dotnet add package Aspose.Pdf +``` + +To pobiera najnowszą stabilną wersję (stan na marzec 2026, wersja 23.12). Jeśli wolisz interfejs graficzny, wyszukaj *Aspose.Pdf* w Menedżerze Pakietów NuGet i zainstaluj go. + +## Krok 1: Wczytanie dokumentu PDF w C# przy użyciu Aspose + +Pierwszą rzeczą, którą musisz zrobić, jest załadowanie źródłowego PDF do pamięci. Klasa `Document` Aspose jest punktem wejścia. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**Dlaczego to ważne:** Ładowanie pliku weryfikuje, czy ścieżka istnieje i czy PDF nie jest uszkodzony. Blok `try/catch` zapewnia elegancki sposób zgłaszania błędów — przydatny, gdy plik pochodzi od użytkowników. + +## Krok 2: Konwersja PDF do formatu PDF/X‑4 + +PDF/X‑4 to podzbiór PDF zaprojektowany do niezawodnego druku i archiwizacji. Konwersja zapewnia, że wszystkie czcionki są osadzone i że plik spełnia standardy branżowe. + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**Dlaczego wybrać `ConvertErrorAction.Delete`?** Niektóre starsze pliki PDF zawierają elementy (np. nieobsługiwane adnotacje), które w przeciwnym razie zatrzymałyby konwersję. Ich usunięcie utrzymuje płynność procesu, ale powinieneś sprawdzić wynik, jeśli potrzebujesz zachować te elementy. + +### Opcjonalnie: Weryfikacja sukcesu konwersji + +Jeśli chcesz mieć pewność, możesz sprawdzić `PdfFormat` dokumentu po konwersji: + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## Krok 3: Zapisanie skonwertowanego pliku PDF + +Teraz, gdy dokument jest w formacie PDF/X‑4, zapisz go z powrotem na dysk. + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**Wynik, który zobaczysz:** Nowy plik o nazwie `Converted_PDFX4.pdf` pojawia się w `YOUR_DIRECTORY`. Otwórz go w dowolnym przeglądarce PDF obsługującej PDF/X‑4 (Adobe Acrobat, Foxit itp.) i zauważysz, że wszystkie czcionki są osadzone oraz że dokument spełnia specyfikację PDF/X‑4. + +![samouczek aspose pdf - konwersja PDF do PDF/X‑4](/images/aspose-pdf-conversion.png "samouczek aspose pdf pokazujący wynik konwersji PDF/X‑4") + +*Tekst alternatywny obrazu zawiera główne słowo kluczowe, spełniając wymagania SEO.* + +## Pełny przykład end‑to‑end + +Łącząc wszystko razem, oto samodzielna aplikacja konsolowa, którą możesz skopiować i wkleić do nowego projektu C#: + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +Uruchom program, a zobaczysz komunikaty w konsoli potwierdzające każdy krok. Jeśli coś pójdzie nie tak, komunikaty o błędach wskażą dokładny etap. + +## Częste pytania i przypadki brzegowe + +### Co zrobić, jeśli muszę zachować adnotacje? + +`ConvertErrorAction.Delete` usuwa nieobsługiwane obiekty, w tym niektóre adnotacje. Przełącz na `ConvertErrorAction.Keep`, jeśli ich zachowanie jest kluczowe, ale przetestuj wynik — niektóre adnotacje mogą nadal powodować ostrzeżenia o zgodności. + +### Jak obsłużyć duże pliki PDF (setki MB)? + +Aspose.Pdf strumieniuje plik, więc zużycie pamięci pozostaje umiarkowane. Jednak możesz chcieć zwiększyć progi `System.GC` lub przetwarzać dokument w partiach (np. konwertować strona po stronie) w przypadku wyjątkowo dużych plików. + +### Czy mogę konwertować wiele plików w partii? + +Oczywiście. Owiń logikę ładowania‑konwersji‑zapisu w pętlę `foreach`, która iteruje po katalogu z plikami PDF. Pamiętaj, aby obsługiwać wyjątki dla każdego pliku, aby jeden uszkodzony PDF nie przerwał całej partii. + +### Czy to działa na .NET Core w systemie Linux? + +Tak. Aspose.Pdf jest wieloplatformowy. Upewnij się tylko, że pakiet NuGet `Aspose.Pdf` jest odwołany oraz że na hoście Linux masz zainstalowane odpowiednie pliki czcionek, jeśli potrzebujesz renderowania tekstu. + +## Profesjonalne wskazówki z praktyki + +- **Ustaw licencję wcześnie**: `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` – usuwa to znak wodny wersji ewaluacyjnej i zwiększa wydajność. +- **Zweryfikuj wynik**: użyj `PdfFormatValidator` Aspose, aby programowo potwierdzić zgodność z PDF/X‑4 przed udostępnieniem pliku. +- **Loguj czas konwersji**: duże partie korzystają z pomiaru czasu każdej konwersji (`Stopwatch`), aby wykrywać regresje wydajności. +- **Unikaj ścieżek zakodowanych na stałe**: preferuj pliki konfiguracyjne lub zmienne środowiskowe dla `inputPath` i `outputPath` — zwiększa to przenośność aplikacji. + +## Podsumowanie + +W tym **Aspose PDF Tutorial** przedstawiliśmy czysty, end‑to‑end przepływ pracy dla **how to use Aspose** do **load PDF document C#**, konwersji do standardu **PDF/X‑4** oraz **save the converted PDF**. Fragment kodu jest w pełni uruchamialny, wyjaśnia *dlaczego* każdy krok jest potrzebny i podkreśla pułapki, które mogą wystąpić w rzeczywistych projektach. + +Teraz, gdy opanowałeś podstawy, możesz rozbudować rozwiązanie — przetwarzać partie dziesiątek plików, osadzać niestandardowe metadane lub integrować konwersję z API webowym. Możliwości są szerokie, a Aspose.Pdf dostarcza narzędzia, aby szybko to osiągnąć. + +Masz więcej pytań dotyczących przetwarzania PDF z Aspose? Dodaj komentarz, zapoznaj się z oficjalną dokumentacją Aspose lub eksperymentuj z powyższym kodem. Udanej konwersji! + +{{< /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-creation/_index.md b/pdf/polish/net/document-creation/_index.md index 66a427f5d..ef4e8a1a6 100644 --- a/pdf/polish/net/document-creation/_index.md +++ b/pdf/polish/net/document-creation/_index.md @@ -77,6 +77,12 @@ Samouczek dotyczący kodu dla Aspose.PDF Net ### [Utwórz dokument PDF przy użyciu Aspose.PDF – Dodaj stronę, kształt i zapisz](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) Dowiedz się, jak w Aspose.PDF dodać nową stronę, rysować kształty i zapisać dokument PDF w aplikacji .NET. +### [Utwórz dokument PDF przy użyciu Aspose.PDF – przewodnik krok po kroku](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +Dowiedz się, jak krok po kroku utworzyć dokument PDF w Aspose.PDF, dodając elementy i zapisując go w .NET. + +### [Utwórz dokument PDF przy użyciu Aspose.PDF – Pełny przewodnik C#](./create-pdf-document-with-aspose-pdf-full-c-guide/) +Kompletny przewodnik C# pokazujący, jak tworzyć dokumenty PDF, dodawać elementy i zapisywać je przy użyciu Aspose.PDF. + ## Dodatkowe zasoby - [Aspose.PDF dla dokumentacji sieciowej](https://docs.aspose.com/pdf/net/) diff --git a/pdf/polish/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/polish/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..069e5f98a --- /dev/null +++ b/pdf/polish/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-06 +description: Utwórz dokument PDF w C# przy użyciu Aspose.PDF – dowiedz się, jak dodać + puste strony PDF, pole tekstowe, widget i szybko zapisać PDF. +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: pl +og_description: Utwórz dokument PDF w C# przy użyciu Aspose.PDF. Ten przewodnik pokazuje, + jak dodać puste strony PDF, pole tekstowe, widżet oraz jak zapisać PDF. +og_title: Tworzenie dokumentu PDF przy użyciu Aspose.PDF – Kompletny samouczek C# +tags: +- pdf +- csharp +- aspose +- forms +title: Utwórz dokument PDF za pomocą Aspose.PDF – Pełny przewodnik C# +url: /pl/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tworzenie dokumentu PDF przy użyciu Aspose.PDF – Pełny przewodnik C# + +Czy kiedykolwiek potrzebowałeś **utworzyć dokument PDF** od zera w projekcie .NET i zastanawiałeś się, od czego zacząć? Nie jesteś sam; wielu programistów napotyka ten sam problem, gdy pierwsze wymaganie brzmi „wygenerować wypełnialny PDF z tym samym polem tekstowym na trzech stronach”. Dobra wiadomość? Dzięki Aspose.PDF możesz w kilku linijkach kodu stworzyć profesjonalnie wyglądający PDF. + +W tym tutorialu przejdziemy przez cały proces: od inicjalizacji nowego PDF, **dodawania pustych stron pdf**, wstawiania **textbox**, replikacji go przy pomocy **widget** annotation oraz w końcu **zapisania PDF** na dysk. Po zakończeniu będziesz mieć gotowy plik o nazwie *MultiWidgetField.pdf* oraz solidne zrozumienie, dlaczego każdy krok ma znaczenie. + +## Co obejmuje ten przewodnik + +- Wymagania wstępne, które musisz spełnić, zanim napiszesz choć jedną linijkę kodu. +- Krok po kroku tworzenie dokumentu PDF przy użyciu Aspose.PDF dla .NET. +- Jak dodać puste strony, pole formularza typu textbox oraz dodatkowe instancje widgetów. +- Wskazówki dotyczące typowych pułapek (np. indeksowanie stron, kolizje nazw pól). +- Kompletny, gotowy do skopiowania i wklejenia program w C#, który możesz uruchomić już dziś. + +Bez zewnętrznych linków do dokumentacji, bez skrótów „zobacz API” — wszystko, czego potrzebujesz, znajduje się tutaj. + +## Wymagania wstępne + +Zanim zanurzysz się w kod, upewnij się, że masz: + +1. **.NET 6.0** (lub nowszą wersję) zainstalowaną na swoim komputerze. +2. Aktywną licencję **Aspose.PDF for .NET** lub tymczasowy klucz ewaluacyjny. +3. Środowisko programistyczne, takie jak **Visual Studio 2022** lub **VS Code** z rozszerzeniem C#. + +To wszystko — nic więcej nie jest potrzebne. + +## Krok 1: Inicjalizacja dokumentu PDF i dodanie pustych stron + +Pierwszą rzeczą, którą robisz, gdy **utworzyć dokument PDF** programowo, jest utworzenie obiektu `Document`. To tak, jakby otworzyć nowy notes. Następnie dodajesz potrzebne strony; w naszym przypadku trzy puste strony. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**Dlaczego to ważne:** Aspose.PDF traktuje strony jako kolekcję zerowo‑indeksowaną wewnętrznie, ale jego publiczne API jest jednocześnie jedynkowo‑indeksowane, więc `Pages[1]` to pierwsza strona, którą właśnie dodałeś. Dodanie stron z góry daje Ci płótno, na którym później umieścisz pola formularza, i jest znacznie tańsze niż wstawianie stron „w locie” po rozrostcie dokumentu. + +> **Pro tip:** Jeśli potrzebujesz tylko jednej strony, możesz pominąć pętlę i wywołać `pdfDocument.Pages.Add()` raz. Dodawanie wielu stron w pętli sprawia, że kod jest skalowalny. + +## Krok 2: Definicja pola formularza TextBox na pierwszej stronie + +Mając trzy puste arkusze, wrzućmy **textbox** na pierwszą z nich. `TextBoxField` to element formularza, w którym użytkownik może wpisywać tekst, gdy PDF otworzy się w Acrobat Reader lub innym czytniku obsługującym formularze. + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**Dlaczego współrzędne prostokąta?** Aspose.PDF używa punktów (1/72 cala). Prostokąt `(100, 700, 300, 730)` umieszcza textbox mniej więcej w połowie wysokości strony, ma 200 pt szerokości i 30 pt wysokości. Dostosuj te liczby, aby pasowały do Twojego układu. + +> **Częste pytanie:** *Czy muszę ustawiać właściwość `Value`?* +> Nie, jest opcjonalna. Pozostawienie jej pustej wyświetla puste pole; ustawienie wartości domyślnej może pomóc użytkownikowi. + +## Krok 3: Dodanie adnotacji Widget dla tego samego pola na stronach 2 i 3 + +**Widget** to wizualna reprezentacja pola formularza na konkretnej stronie. Domyślnie pole pojawia się tylko na stronie, na której zostało utworzone. Aby ponownie użyć tego samego textboxu na innych stronach, dołącz dodatkowe obiekty `WidgetAnnotation` do kolekcji `Widgets` pola. + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**Dlaczego widgety?** Bez nich użytkownik zobaczyłby textbox tylko na stronie 1, mimo że pole istnieje w tle. Widgety pozwalają współdzielić jedno logiczne pole na wielu stronach, zapewniając, że wpisany tekst pojawi się wszędzie, gdzie pole jest wyświetlane. + +> **Przypadek brzegowy:** Jeśli potrzebujesz textboxu w różnych współrzędnych na każdej stronie, po prostu zmień wartości `Rectangle` dla każdego widgetu. + +## Krok 4: Zarejestrowanie pola w kolekcji formularzy dokumentu + +Aspose.PDF utrzymuje centralny rejestr wszystkich pól formularzy. Dodanie pola do kolekcji `Form` sprawia, że staje się ono częścią interaktywnej struktury formularza PDF. + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +Drugi argument (`"Comment"`) to **w pełni kwalifikowana nazwa** pola. Musi być unikalna w całym dokumencie; w przeciwnym razie Aspose zgłosi wyjątek. + +## Krok 5: Zapisanie wynikowego PDF – Jak zapisać PDF + +Na koniec zapisujemy dokument z pamięci na dysk. To jest **jak zapisać pdf** część tutorialu. + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**Dlaczego podajemy ścieżkę bezwzględną?** Użycie ścieżki bezwzględnej eliminuje niejasności dotyczące katalogu roboczego, szczególnie przy uruchamianiu programu z debuggera Visual Studio. Jeśli wolisz ścieżkę względną, upewnij się, że folder istnieje przed wywołaniem `Save`. + +### Oczekiwany rezultat + +Otwórz *MultiWidgetField.pdf* w Adobe Acrobat Reader. Zobaczysz ten sam textbox na stronach 1, 2 i 3. Wpisz coś w polu na dowolnej stronie — tekst natychmiast pojawi się na pozostałych, ponieważ wszystkie współdzielą to samo pole formularza. + +![Create PDF Document example showing a textbox on three pages](https://example.com/placeholder-image.png "Przykład tworzenia dokumentu PDF") + +*Tekst alternatywny obrazu: Przykład tworzenia dokumentu PDF z textboxem na trzech stronach.* + +## Pełny, gotowy do uruchomienia przykład + +Poniżej znajduje się kompletny program, który możesz skopiować do nowego projektu konsolowego (`dotnet new console`) i uruchomić. Wszystkie kroki są już uporządkowane, a kod zawiera komentarze dla przejrzystości. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +Uruchom program, przejdź do `C:\Temp\` i otwórz wygenerowany PDF. Zobaczysz trzy identyczne textboxy gotowe do wprowadzania danych przez użytkownika. + +## Typowe warianty i przypadki brzegowe + +| Scenariusz | Co zmienić | Dlaczego | +|------------|------------|----------| +| **Inny rozmiar textboxu na każdej stronie** | Dostosuj wartości `Rectangle` dla każdego `WidgetAnnotation`. | Pozwala dopasować pole do różnych układów. | +| **Pole tylko do odczytu** | Ustaw `commentField.ReadOnly = true;`. | Uniemożliwia edycję po początkowym wypełnieniu. | +| **Textbox wieloliniowy** | Ustaw `commentField.Multiline = true;` i zwiększ wysokość prostokąta. | Umożliwia dłuższe komentarze bez przewijania. | +| **Dodanie drugiego pola** | Utwórz kolejny `TextBoxField` (lub dowolny `FormField`) i powtórz kroki 2‑4 z nową nazwą. | Pozwala zbierać wiele informacji w jednym PDF. | + +## Pro Tips i pułapki, których należy unikać + +- **Indeksowanie stron:** Pamiętaj, że `pdfDocument.Pages[1]` to pierwsza strona, a nie `[0]`. Mieszanie indeksów zerowo‑ i jedynkowo‑bazowanych prowadzi do wyjątków „Index out of range”. +- **Kolizje nazw pól:** Dwa pola nie mogą mieć tej samej w pełni kwalifikowanej nazwy. Jeśli otrzymasz błąd o duplikacie, sprawdź łańcuch przekazywany do `Form.Add`. +- **Licencja vs. wersja ewaluacyjna:** Wersja ewaluacyjna dodaje znak wodny na każdej stronie. Wdrożenie ważnej licencji usuwa go w środowisku produkcyjnym. +- **Wydajność:** Dodawanie setek stron w pętli jest w porządku, ale przy generowaniu masywnych PDF‑ów (tysiące stron) rozważ użycie + +{{< /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-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/polish/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..bb63a5d04 --- /dev/null +++ b/pdf/polish/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-03-06 +description: Utwórz dokument PDF przy użyciu Aspose.PDF w C#. Dowiedz się, jak dodać + stronę PDF, narysować prostokąt PDF, dodać kształt PDF i kontrolować grubość obramowania + prostokąta — wszystko w jednym samouczku. +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: pl +og_description: Utwórz dokument PDF w C# przy użyciu Aspose.PDF. Ten samouczek pokazuje, + jak dodać stronę PDF, narysować prostokąt PDF, dodać kształt PDF oraz ustawić grubość + obramowania prostokąta. +og_title: Tworzenie dokumentu PDF za pomocą Aspose.PDF – Kompletny przewodnik +tags: +- Aspose.PDF +- C# +- PDF generation +title: Tworzenie dokumentu PDF przy użyciu Aspose.PDF – Przewodnik krok po kroku +url: /pl/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Utwórz dokument PDF przy użyciu Aspose.PDF – przewodnik krok po kroku + +Czy kiedykolwiek potrzebowałeś **utworzyć dokument PDF** programowo i nie wiedziałeś, od czego zacząć? Nie jesteś sam — wielu programistów napotyka ten sam problem, gdy ich aplikacje muszą w locie generować faktury, raporty lub certyfikaty. + +Dobre wieści są takie, że z Aspose.PDF dla .NET możesz zrobić to w kilku linijkach kodu, a także nauczysz się, jak **add page PDF**, **draw rectangle PDF**, **add shape PDF**, oraz jak dostosować **rectangle border thickness**. Zanurzmy się. + +## Co zbudujesz + +Pod koniec tego przewodnika będziesz mieć w pełni funkcjonalną aplikację konsolową C#, która: + +1. **Creates a PDF document** od zera. +2. **Adds a page PDF** do dokumentu. +3. **Draws a rectangle PDF** na tej stronie. +4. **Validates**, że prostokąt pozostaje w granicach strony (**add shape PDF** krok). +5. Ustawia własną **rectangle border thickness**. +6. Zapisuje wynik jako `ShapeValidated.pdf`. + +Bez zewnętrznych usług, bez tajemniczej konfiguracji — po prostu czysty C# i Aspose.PDF. + +### Wymagania wstępne + +- .NET 6.0 lub nowszy (kod działa również z .NET Framework 4.6+). +- Odwołanie do pakietu NuGet `Aspose.Pdf`. Możesz dodać go za pomocą: + +```bash +dotnet add package Aspose.Pdf +``` + +- Edytor tekstu lub IDE — Visual Studio, VS Code, Rider, cokolwiek wolisz. + +> **Pro tip:** Jeśli pracujesz na komputerze firmowym, upewnij się, że źródło NuGet nie jest zablokowane; w przeciwnym razie otrzymasz błąd „Package not found”. + +--- + +## Utwórz dokument PDF – zainicjalizuj dokument + +Pierwszym krokiem jest utworzenie obiektu `Document`. Traktuj go jak czyste płótno, na którym będą umieszczane wszystkie strony i kształty. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +Po co nam ten obiekt? Reprezentuje cały plik PDF w pamięci, dając dostęp do kolekcji `Pages`, metadanych i ustawień zabezpieczeń. Gdy masz dokument, możesz zaczynać dodawać strony, tekst, obrazy i grafikę wektorową. + +--- + +## Dodaj stronę do PDF (add page pdf) + +PDF bez stron to w zasadzie pusty plik — bez sensu. Dodanie strony jest proste i możesz dostosować jej rozmiar, jeśli chcesz. Tutaj używamy domyślnego rozmiaru A4. + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +Metoda `Add()` zwraca nową instancję `Page`, która już jest częścią kolekcji `Pages`, więc możesz od razu rozpocząć rysowanie na niej. W rzeczywistych scenariuszach możesz iterować po zestawie danych i dodawać dziesiątki stron; to samo wywołanie w jednej linii działa przy każdej iteracji. + +--- + +## Narysuj kształt prostokąta (draw rectangle pdf) + +Teraz część wizualna: prostokąt z widoczną ramką. To właśnie tutaj wchodzi w grę **draw rectangle pdf**. + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +Kilka rzeczy do zauważenia: + +- `Rect` używa jednostki punkt (1 pt ≈ 1/72 cala). Współrzędne definiują lewy dolny i prawy górny róg, więc możesz precyzyjnie kontrolować szerokość i wysokość. +- `BorderInfo` pozwala określić, które krawędzie mają linię i jaką ma ona grubość. Tutaj stosujemy linię o grubości 2 punkty na **wszystkich** krawędziach, co daje prostokątowi czysty, jednolity wygląd. + +--- + +## Zweryfikuj położenie kształtu (add shape pdf) + +Zanim zatwierdzimy prostokąt na stronie, warto sprawdzić, czy mieści się on w obszarze drukowalnym strony. Aspose.PDF udostępnia przydatną metodę pomocniczą do tego. + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +Po co to robić? Jeśli przypadkowo umieścisz kształt częściowo poza ekranem, przeglądarka PDF może go przyciąć, co prowadzi do mylącego doświadczenia użytkownika. Ten warunek ochronny **add shape pdf** zapewnia, że dodajesz tylko treść, która będzie w pełni widoczna. + +--- + +## Zapisz PDF (add page pdf) + +Na koniec zapisujemy dokument znajdujący się w pamięci na dysku. Możesz wybrać dowolną lokalizację, do której masz uprawnienia zapisu. + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +Po uruchomieniu programu otwórz `ShapeValidated.pdf` — powinieneś zobaczyć jedną stronę z starannie obramowanym prostokątem, umieszczonym mniej więcej pośrodku. + +--- + +## Oczekiwany wynik + +Kiedy otworzysz wygenerowany PDF, zobaczysz: + +- Jedną stronę w rozmiarze A4. +- Prostokąt, którego lewy dolny róg zaczyna się w (50 pt, 50 pt), a prawy górny kończy w (600 pt, 800 pt). +- Obramowanie o **grubości 2 punktów** otaczające prostokąt. + +Jeśli konsola wyświetliła „PDF created successfully!”, wiesz, że kod wykonał się bez problemu z kontrolą granic. + +![Diagram przedstawiający, jak utworzyć dokument PDF przy użyciu Aspose.PDF](https://example.com/diagram-create-pdf.png "Utworzenie dokumentu PDF – przegląd wizualny") + +*Tekst alternatywny obrazu zawiera główne słowo kluczowe, aby spełnić wymagania SEO.* + +--- + +## Częste pytania i przypadki brzegowe + +### Co zrobić, jeśli potrzebuję innego rozmiaru strony? + +Zastąp domyślną stronę własnym rozmiarem: + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### Jak zmienić kolor obramowania? + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### Czy mogę dodać wiele kształtów na tej samej stronie? + +Oczywiście. Po prostu powtórz blok **add shape pdf** z nowym `RectangleShape` (lub inną podklasą `Shape`) i odpowiednio dostosuj współrzędne `Rect`. + +### Co zrobić, jeśli prostokąt wykracza poza granice strony? + +Wywołanie `IsShapeWithinBounds` zwróci `false`. W kodzie produkcyjnym możesz chcieć automatycznie zmienić rozmiar kształtu: + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +--- + +## Podsumowanie + +Przeszliśmy przez cały cykl życia **creating a PDF document** przy użyciu Aspose.PDF: + +1. Zainicjalizuj `Document`. +2. **Add a page PDF** przy użyciu `Pages.Add()`. +3. **Draw a rectangle PDF** za pomocą `RectangleShape`. +4. **Add shape PDF** tylko po potwierdzeniu, że pozostaje w obrębie strony. +5. Kontroluj **rectangle border thickness** przy pomocy `BorderInfo`. +6. Zapisz plik. + +To cały przepływ pracy w mniej niż 60 linijkach kodu. + +--- + +## Co dalej? + +- **Add text**: użyj `TextFragment`, aby umieścić tytuły lub etykiety wewnątrz prostokąta. +- **Insert images**: klasa `Image` pozwala osadzać logotypy lub wykresy. +- **Create tables**: idealne do faktur lub raportów danych. +- **Apply security**: zabezpiecz PDF hasłem, jeśli zawiera wrażliwe dane. + +Każdy z tych tematów opiera się na podstawach przedstawionych tutaj, więc jesteś dobrze przygotowany, aby zgłębiać bardziej zaawansowane scenariusze generowania PDF. + +### Kontynuuj eksperymenty + +Nie zatrzymuj się na jednym prostokącie — baw się różnymi kształtami, kolorami i stylami linii. API Aspose.PDF jest bogate, a im więcej eksperymentujesz, tym pewniej się czujesz. Jeśli napotkasz problem, oficjalna dokumentacja Aspose jest solidnym wsparciem, ale pamiętaj, że kod powyżej to kompletny, gotowy do skopiowania i wklejenia przykład, który możesz uruchomić już dziś. + +Szczęśliwego kodowania i niech Twoje PDF‑y zawsze renderują się dokładnie tak, jak sobie wyobrażasz! + +{{< /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 7f1f83fa5..e230a70d3 100644 --- a/pdf/polish/net/document-manipulation/_index.md +++ b/pdf/polish/net/document-manipulation/_index.md @@ -239,13 +239,13 @@ Dowiedz się, jak programowo zarządzać plikami PDF w .NET za pomocą Aspose.PD ### [Opanuj manipulację plikami PDF za pomocą Aspose.PDF .NET: kompleksowy przewodnik po automatyzacji dokumentów](./master-pdf-manipulation-aspose-dotnet-guide/) Dowiedz się, jak automatyzować zadania związane z plikami PDF za pomocą Aspose.PDF dla platformy .NET, w tym łączenie plików, dodawanie stron, wstawianie znaczników tekstowych i tworzenie łączy. -### [Opanuj manipulację plikami PDF dzięki Aspose.PDF .NET: Łatwe ładowanie i modyfikowanie dokumentów](./mastering-pdf-manipulation-aspose-dotnet/) +### [Opanuj manipulację plikami PDF za pomocą Aspose.PDF .NET: Łatwe ładowanie i modyfikowanie dokumentów](./mastering-pdf-manipulation-aspose-dotnet/) Dowiedz się, jak opanować ładowanie, nawigację i modyfikowanie dokumentów PDF przy użyciu potężnej biblioteki Aspose.PDF .NET. Ulepsz swoje aplikacje już dziś! ### [Opanuj manipulację plikami PDF za pomocą Aspose.PDF .NET: przewodnik ładowania, wyszukiwania i adnotacji](./aspose-pdf-dotnet-mastering-pdfs-manipulation-guide/) Naucz się manipulować plikami PDF za pomocą Aspose.PDF dla .NET. Ten przewodnik obejmuje ładowanie dokumentów, wyszukiwanie tekstu i stosowanie adnotacji, takich jak przekreślenia. -### [Opanuj manipulację plikami PDF za pomocą Aspose.PDF dla .NET: kompleksowy przewodnik](./mastering-pdf-manipulation-aspose-pdf-net-guide/) +### [Opanuj manipulację plikami PDF za pomocą Aspose.PDF .NET: kompleksowy przewodnik](./mastering-pdf-manipulation-aspose-pdf-net-guide/) Dowiedz się, jak wydajnie tworzyć, modyfikować, scalać i wyodrębniać dane z plików PDF przy użyciu Aspose.PDF dla platformy .NET. Ulepsz swoje przepływy pracy nad dokumentami i zwiększ produktywność. ### [Opanuj manipulację liczbą stron w PDF za pomocą Aspose.PDF dla .NET: Kompletny przewodnik](./mastering-pdf-manipulation-aspose-pdf-net/) @@ -300,10 +300,10 @@ Dowiedz się, jak obracać strony PDF za pomocą Aspose.PDF dla .NET. Ten przewo Dowiedz się, jak efektywnie dzielić pliki PDF z określonej strony za pomocą strumieni .NET w Aspose.PDF, usprawniając zarządzanie dokumentami w aplikacjach. ### [Podziel strony PDF na pojedyncze pliki za pomocą Aspose.PDF .NET (samouczek C#)](./split-pdf-pages-aspose-net-csharp/) -Dowiedz się, jak podzielić plik PDF na pojedyncze strony za pomocą Aspose.PDF dla .NET i C#. Ten przewodnik obejmuje konfigurację, implementację i praktyczne zastosowania. +Dowiedz się, jak podzielić plik PDF na pojedyncze strony przy użyciu Aspose.PDF dla .NET i C#. Ten przewodnik obejmuje konfigurację, implementację i praktyczne zastosowania. ### [Podziel strony PDF na oddzielne pliki za pomocą Aspose.PDF dla .NET: kompleksowy przewodnik](./aspose-pdf-split-pdf-pages-net/) -Dowiedz się, jak podzielić strony PDF na osobne pliki za pomocą Aspose.PDF dla .NET. Ten kompleksowy przewodnik obejmuje wskazówki dotyczące konfiguracji, implementacji i optymalizacji. +Dowiedz się, jak podzielić strony PDF na osobne pliki przy użyciu Aspose.PDF dla .NET. Ten kompleksowy przewodnik obejmuje wskazówki dotyczące konfiguracji, implementacji i optymalizacji. ### [Dzielenie i tworzenie plików PDF za pomocą Aspose.PDF .NET | Przewodnik po manipulacji dokumentami](./split-create-pdf-aspose-pdf-net/) Dowiedz się, jak dzielić wielostronicowe pliki PDF i tworzyć nowe pliki PDF za pomocą Aspose.PDF dla .NET. Postępuj zgodnie z tym kompleksowym przewodnikiem z przykładami kodu. @@ -311,6 +311,9 @@ Dowiedz się, jak dzielić wielostronicowe pliki PDF i tworzyć nowe pliki PDF z ### [Najlepszy przewodnik po manipulacji plikami PDF za pomocą Aspose.PDF .NET: Ładowanie, zapisywanie i zamiana tekstu w sposób wydajny](./master-pdf-manipulation-aspose-pdf-net/) Dowiedz się, jak opanować manipulację PDF za pomocą Aspose.PDF dla .NET. Ten przewodnik obejmuje ładowanie, zapisywanie i zastępowanie tekstu w plikach PDF, co jest idealne dla programistów poszukujących wydajności. +### [Jak redagować plik PDF w C# przy użyciu Aspose PDF – Kompletny przewodnik](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) +Dowiedz się, jak usuwać wrażliwe informacje z dokumentów PDF przy użyciu Aspose PDF w C# w tym kompletnym przewodniku. + ## Dodatkowe zasoby - [Aspose.PDF dla dokumentacji sieciowej](https://docs.aspose.com/pdf/net/) diff --git a/pdf/polish/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/polish/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..cee182309 --- /dev/null +++ b/pdf/polish/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-06 +description: Dowiedz się, jak redagować PDF przy użyciu Aspose PDF w C#. Ten przewodnik + krok po kroku pokazuje, jak wczytać dokument PDF w C#, uzyskać dostęp do pierwszej + strony PDF i usunąć obraz z PDF. +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: pl +og_description: Jak szybko zamazać treść PDF przy użyciu Aspose PDF w C#. Załaduj + dokument PDF, uzyskaj dostęp do pierwszej strony PDF i usuń obraz z PDF w kilku + linijkach kodu. +og_title: Jak redagować PDF w C# – Poradnik Aspose PDF +tags: +- Aspose PDF +- C# +- PDF Redaction +title: Jak redagować PDF w C# przy użyciu Aspose PDF – kompletny przewodnik +url: /pl/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak redagować PDF w C# przy użyciu Aspose PDF – Kompletny przewodnik + +Zastanawiałeś się kiedyś **jak redagować PDF** bez żadnego wysiłku? Być może otrzymałeś umowę, w której ukryto poufne logo, lub raport, w którym nadal widnieje obraz zastępczy, który musisz usunąć. W takich momentach potrzebujesz niezawodnego, programowego sposobu na usunięcie tej treści — bez ręcznej magii Acrobata. + +W tym samouczku przeprowadzimy Cię przez zwięzłe, kompleksowe rozwiązanie, które **ładuje dokument PDF w C#**, **dostępuje pierwszej strony PDF**, a następnie **usuwa obraz z PDF** przy użyciu potężnej biblioteki **Aspose PDF**. Po zakończeniu będziesz mieć w pełni zredagowany PDF gotowy do dystrybucji i zrozumiesz, dlaczego każda linia kodu ma znaczenie. + +> **Pro tip:** Aspose PDF działa z .NET Framework 4.6+ i .NET Core 3.1+, więc jesteś zabezpieczony niezależnie od tego, czy używasz Windows, Linux, czy macOS. + +![przykład redagowania pdf](redact-pdf-before-after.png){alt="przykład redagowania pdf"} + +## Czego będziesz potrzebować + +- **Aspose.PDF for .NET** (najnowszy pakiet NuGet) +- **Środowisko programistyczne C#** (Visual Studio, Rider lub VS Code) +- Przykładowy PDF zawierający zasób obrazu, który chcesz usunąć (nazwijmy go `Sensitive.pdf`) + +Bez dodatkowych narzędzi firm trzecich, bez OCR, tylko czysty kod. + +## Krok 1: Ładowanie dokumentu PDF w C# – Pierwszy krok + +Zanim będziesz mógł cokolwiek redagować, musisz wczytać plik do pamięci. Klasa `Document` jest punktem wejścia dla każdej operacji Aspose PDF. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**Dlaczego to ważne:** +`Document` parsuje całą strukturę PDF, budując model obiektowy, który pozwala manipulować stronami, zasobami i adnotacjami. Jeśli plik nie może zostać wczytany (zła ścieżka, uszkodzony PDF), natychmiast zostanie zgłoszony wyjątek — dzięki czemu od razu wiesz, że coś jest nie tak. + +### Częsty problem + +> *„Otrzymuję `FileNotFoundException`, mimo że plik istnieje.”* +> Upewnij się, że ścieżka jest bezwzględna lub że katalog roboczy projektu odpowiada lokalizacji `Sensitive.pdf`. Użycie `Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")` może pomóc uniknąć problemów ze ścieżkami względnymi. + +## Krok 2: Dostęp do pierwszej strony PDF – Gdzie znajduje się obraz + +Obrazy są przechowywane jako zasoby na poziomie poszczególnych stron. W wielu prostych PDF pierwsza strona jest winowajcą, więc pobierzmy ją. + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**Dlaczego to ważne:** +Aspose PDF używa indeksu stron zaczynającego się od 1, co jest nieco nietypowe w porównaniu z większością kolekcji .NET. Dostęp do niewłaściwej strony może spowodować redakcję niewłaściwej treści — a w najgorszym wypadku pozostawić poufny obraz nietknięty. + +### Rozważanie przypadków brzegowych + +Jeśli Twój dokument nie ma stron (pusty PDF), próba `pdfDocument.Pages[1]` spowoduje `IndexOutOfRangeException`. Szybka ochrona może Cię uratować: + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +## Krok 3: Usunięcie obrazu z PDF — Redakcja zasobu + +Aspose PDF pozwala usunąć zasób po nazwie. Większość obrazów ma nazwy `Im1`, `Im2` itd., ale możesz sprawdzić `firstPage.Resources.Images`, aby to potwierdzić. + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**Dlaczego to ważne:** +`RedactResource` usuwa obraz *oraz* wszystkie odwołania do niego na stronie, zapewniając, że powstała przerwa zostanie wypełniona pustym obszarem zamiast uszkodzonego linku. To czysty, zgodny ze standardem PDF sposób na usunięcie treści. + +### Jak znaleźć właściwą nazwę obrazu + +Jeśli nie jesteś pewien, czy obraz nosi nazwę `"Im1"`: + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +Uruchom ten fragment, sprawdź wyjście w konsoli i zamień `"Im1"` na rzeczywisty klucz, który zobaczysz. + +## Krok 4: Zapisz zredagowany PDF — Dokończenie zadania + +Teraz, gdy niechciany obraz został usunięty, zapisz zmiany na dysku. + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**Dlaczego to ważne:** +Zapis do **nowego** pliku pozostawia oryginał nienaruszony — to zabezpieczenie na wypadek potrzeby przywrócenia. Jeśli musisz nadpisać, po prostu wskaż metodę `Save` na pierwotną ścieżkę, ale pamiętaj, że operacja jest nieodwracalna. + +### Weryfikacja wyniku + +Otwórz `Redacted.pdf` w dowolnym przeglądarce PDF. Miejsce po obrazie powinno być puste, a reszta dokumentu powinna wyglądać identycznie jak oryginał. Jeśli układ strony wydaje się przesunięty, sprawdź ponownie, czy usunąłeś tylko zamierzony zasób, a nie współdzielony XObject. + +## Pełny działający przykład + +Łącząc wszystko razem, oto kompletny, gotowy do uruchomienia program: + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**Oczekiwane wyjście** (w konsoli): + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +Gdy otworzysz `Redacted.pdf`, obraz, który był `Im1`, zniknie, pozostawiając czystą stronę. + +## Najczęściej zadawane pytania + +### Czy to działa z zaszyfrowanymi PDF-ami? + +Jeśli źródłowy PDF jest zabezpieczony hasłem, przekaż hasło do konstruktora `Document`: + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### Co zrobić, jeśli obraz pojawia się na wielu stronach? + +Iteruj przez każdą stronę i wywołaj `RedactResource` na tej samej nazwie obrazu (lub odkryj nazwę dla każdej strony). Przykład: + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### Czy mogę redagować tekst w ten sam sposób? + +Tak — użyj `page.Contents.RedactText("confidential")` lub skorzystaj z klasy `Redactor` dla bardziej zaawansowanych wzorców. To osobny samouczek, ale zasada jest taka sama jak przy obrazach. + +## Podsumowanie – Co osiągnęliśmy + +Odpowiedzieliśmy na pytanie **jak redagować PDF** programowo, poprzez: + +1. **Ładowanie dokumentu PDF w C#** przy użyciu Aspose PDF. +2. **Dostęp do pierwszej strony PDF** w celu zlokalizowania docelowego zasobu. +3. **Usunięcie obrazu z PDF** za pomocą `RedactResource`. +4. **Zapis** oczyszczonej wersji w bezpieczny sposób. + +To podejście jest szybkie, powtarzalne i działa w zadaniach wsadowych — idealne dla procesów zgodności lub automatycznego generowania raportów. + +Jeśli jesteś gotowy na dalsze kroki, rozważ eksplorację: + +- **Masowej redakcji** w całym folderze PDF‑ów. +- **Redagowania tekstu** przy użyciu wyrażeń regularnych za pomocą `Redactor`. +- **Dodawania znaku wodnego** po redakcji, aby wskazać „oczyszczony”. + +Wypróbuj to, dostosuj logikę nazwy obrazu do własnych plików, + +{{< /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/performance-optimization/_index.md b/pdf/polish/net/performance-optimization/_index.md index d2ea02c0a..43e85ed3c 100644 --- a/pdf/polish/net/performance-optimization/_index.md +++ b/pdf/polish/net/performance-optimization/_index.md @@ -50,6 +50,9 @@ Opanuj sztukę konwersji plików SVG do PDF z precyzją i wydajnością, korzyst ### [Nieosadzone czcionki w plikach PDF przy użyciu Aspose.PDF dla .NET: Zmniejsz rozmiar pliku i popraw wydajność](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) Dowiedz się, jak usunąć osadzone czcionki z plików PDF za pomocą Aspose.PDF dla .NET. Zoptymalizuj wydajność PDF, zmniejsz rozmiar pliku i skróć czas ładowania dzięki temu przewodnikowi krok po kroku. +### [Jak skompresować PDF przy użyciu Aspose.PDF – szybki przewodnik](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) +Dowiedz się, jak szybko skompresować pliki PDF przy użyciu Aspose.PDF, aby zmniejszyć ich rozmiar i poprawić wydajność. + ## Dodatkowe zasoby - [Aspose.PDF dla dokumentacji sieciowej](https://docs.aspose.com/pdf/net/) diff --git a/pdf/polish/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/polish/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..19d7a666c --- /dev/null +++ b/pdf/polish/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,205 @@ +--- +category: general +date: 2026-03-06 +description: Dowiedz się, jak natychmiast kompresować pliki PDF przy użyciu Aspose.Pdf. + Ten przewodnik pokazuje, jak zmniejszyć rozmiar pliku PDF przy użyciu bezstratnej + kompresji PDF. +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: pl +og_description: Jak skompresować plik PDF przy użyciu Aspose.Pdf? Skorzystaj z tego + krok po kroku poradnika, aby zmniejszyć rozmiar pliku PDF, uzyskać bezstratną kompresję + PDF i zapisać zoptymalizowane pliki PDF. +og_title: jak skompresować PDF za pomocą Aspose.Pdf – szybki przewodnik +tags: +- pdf +- aspnet +- csharp +title: jak skompresować PDF przy użyciu Aspose.Pdf – szybki przewodnik +url: /pl/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# jak kompresować pdf przy użyciu Aspose.Pdf – szybki przewodnik + +Zastanawiałeś się kiedyś **jak kompresować pdf** bez zamieniania go w rozmytą masę? Nie jesteś sam. Większość programistów napotyka problem, gdy muszą **zmniejszyć rozmiar pliku pdf** do załączników e‑mail, uploadów na stronę lub limitów przechowywania, a jednocześnie obawiają się utraty jakości obrazów. + +W tym tutorialu przeprowadzimy Cię przez kompletny, gotowy do uruchomienia przykład, który pokaże dokładnie **jak kompresować pdf** przy użyciu wbudowanego optymalizatora Aspose.Pdf. Po zakończeniu będziesz wiedział, jak **zmniejszyć rozmiar pliku pdf**, zachować ostrość obrazów dzięki **bezstratnej kompresji pdf**, i w końcu **zapisz zoptymalizowane pdf** tak, by działały w każdym podglądzie. + +## Co się nauczysz + +- Załadujesz ciężki PDF (np. pełen obrazów wysokiej rozdzielczości) do pamięci. +- Zastosujesz optymalizator Aspose.Pdf z domyślnymi ustawieniami bezstratnymi. +- Zapiszesz wynik jako nowy, mniejszy plik. +- Porady, jak dostroić kompresję, jeśli potrzebujesz jeszcze większego zmniejszenia. + +Bez zewnętrznych narzędzi, bez tajemniczych trików wiersza poleceń — tylko czysty kod C# i przejrzyste wyjaśnienia. + +## Wymagania wstępne + +Zanim zaczniemy, upewnij się, że masz: + +| Wymaganie | Dlaczego jest ważne | +|-----------|---------------------| +| .NET 6.0 lub nowszy (lub .NET Framework 4.6+) | Aspose.Pdf obsługuje oba; nowsze środowiska dają lepszą wydajność. | +| Pakiet NuGet Aspose.Pdf for .NET (`Aspose.Pdf`) | Klasa `Document` znajduje się właśnie tutaj. | +| PDF z dużymi obrazami (np. `HeavyImages.pdf`) | Daje coś namacalnego do zmniejszenia. | +| Visual Studio, Rider lub dowolny edytor C#, którego używasz | Komfort jest kluczowy — wybierz to, co jest dla Ciebie naturalne. | + +> **Wskazówka:** Jeśli pracujesz w pipeline CI/CD, dodaj odwołanie NuGet w pliku `.csproj`, aby kompilacja nigdy go nie pominęła. + +```xml + + + +``` + +## Krok 1: Załaduj PDF, który chcesz skompresować + +Najpierw potrzebujemy obiektu `Document`, który wskazuje na plik źródłowy. Pomyśl o tym jak o otwarciu książki przed rozpoczęciem edycji rozdziałów. + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*Dlaczego to jest ważne:* Załadowanie pliku daje Aspose.Pdf możliwość odczytania wszystkich osadzonych zasobów (obrazów, czcionek itp.). Bez tego kroku nie ma czego **zmniejszyć rozmiar pliku pdf**. + +## Krok 2: Zastosuj bezstratną kompresję PDF + +Aspose.Pdf dostarcza metodę `Optimize`, która domyślnie uruchamia **bezstratną kompresję pdf**. Usuwa zbędne obiekty, ponownie kompresuje obrazy zachowując tę samą jakość wizualną i usuwa nieużywane czcionki. + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*Dlaczego to jest ważne:* Domyślny optymalizator został zaprojektowany, aby **zmniejszyć rozmiar pliku pdf** przy zachowaniu każdego piksela. Jeśli później zdecydujesz, że możesz tolerować niewielki spadek jakości, zakomentowane `OptimizationOptions` pozwalają wymienić kilka dodatkowych kilobajtów na szybkość. + +## Krok 3: Zapisz zoptymalizowany PDF + +Teraz, gdy dokument jest lżejszy, zapisujemy go do nowego pliku. Zachowanie oryginału nietkniętego to dobra praktyka, szczególnie przy testowaniu różnych ustawień. + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +Po zapisaniu porównaj rozmiary plików: + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +Powinieneś zauważyć wyraźny spadek — często **30‑70 %** w zależności od liczby wysokiej rozdzielczości obrazów w źródle. + +![jak kompresować pdf – przed i po optymalizacji](image.png "jak kompresować pdf") + +*Tekst alternatywny obrazu:* jak kompresować pdf – przed i po optymalizacji + +## Zaawansowane: Dostosowywanie kompresji dla konkretnych scenariuszy + +Choć domyślny optymalizator jest świetny w większości przypadków, czasem trzeba **zmniejszyć rozmiar pliku pdf** jeszcze bardziej: + +| Scenariusz | Ustawienie do zmiany | Efekt | +|------------|----------------------|-------| +| PDF-y z wieloma obrazami rastrowymi | `CompressImages = true` + niższa `ImageQuality` (np. 70) | Zmniejsza liczbę bajtów obrazu, niewielka utrata wizualna. | +| PDF-y zawierające duplikaty czcionek | `RemoveUnusedObjects = true` | Usuwa czcionki, które nie są odwoływane. | +| PDF-y z dużymi metadanymi | `RemoveMetadata = true` | Wycina ukryte bloki XML/metadane. | + +Możesz połączyć je w obiekcie `OptimizationOptions` i przekazać do `pdfDoc.Optimize(options)`. + +## Częste pytania i przypadki brzegowe + +**Co jeśli PDF jest już zoptymalizowany?** +Aspose.Pdf i tak przeskanuje dokument, ale zmiana rozmiaru będzie minimalna. Uruchamianie optymalizatora na już lekkim pliku jest bezpieczne; nie uszkodzi niczego. + +**Czy mogę kompresować zaszyfrowane PDF-y?** +Tak, ale musisz podać hasło przed wywołaniem `Optimize`. Przykład: + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**A co z PDF-ami z grafiką wektorową?** +Obiekty wektorowe są już lekkie, więc optymalizator koncentruje się na obrazach rastrowych i metadanych. Oczekuj umiarkowanych zysków przy czysto wektorowych plikach. + +## Pełny, gotowy do uruchomienia przykład + +Poniżej znajduje się samodzielna aplikacja konsolowa, którą możesz skopiować do nowego projektu `.csproj`. Demonstracja obejmuje wszystko, o czym mówiliśmy — od ładowania po weryfikację. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +Uruchom program, otwórz `Optimized.pdf` w dowolnym podglądzie i zobaczysz ten sam układ strony, te same ostre obrazy, ale mniejszy plik. To magia **bezstratnej kompresji pdf**. + +## Podsumowanie + +Omówiliśmy **jak kompresować pdf** przy użyciu wbudowanego optymalizatora Aspose.Pdf, przedstawiliśmy praktyczny **workflow zmniejszania rozmiaru pliku pdf** i wyjaśniliśmy powody każdego kroku. Stosując trzy‑etapowy schemat — ładowanie, optymalizacja, zapis — możesz **zmniejszyć rozmiar pliku pdf** w locie, zachować obrazy w nienaruszonej jakości dzięki **bezstratnej kompresji pdf** i pewnie **zapisz zoptymalizowane pdf** do dalszego użytku. + +Gotowy na kolejny wyzwanie? Spróbuj połączyć ten optymalizator ze skryptem wsadowym, aby przetworzyć cały folder, lub poeksperymentuj z opcjonalnym `OptimizationOptions`, aby wycisnąć ostatnie kilobajty. Te same zasady działają, czy tworzysz narzędzie desktopowe, API webowe, czy wsadową pracę po stronie serwera. + +Masz więcej pytań o obsługę PDF, ciekawostki Aspose.Pdf lub I/O w .NET? Zostaw komentarz poniżej i kontynuujmy dyskusję. Szczęśliwej kompresji! + +{{< /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/programming-with-security-and-signatures/_index.md b/pdf/polish/net/programming-with-security-and-signatures/_index.md index d93cf1c0c..96e285c8f 100644 --- a/pdf/polish/net/programming-with-security-and-signatures/_index.md +++ b/pdf/polish/net/programming-with-security-and-signatures/_index.md @@ -34,6 +34,8 @@ Samouczek zapewnia szczegółowy przegląd metod i technik zapewniających poufn | [Podpisz za pomocą karty inteligentnej, używając podpisu pliku PDF](./sign-with-smart-card-using-pdf-file-signature/) | Dowiedz się, jak podpisywać pliki PDF za pomocą karty inteligentnej za pomocą Aspose.PDF dla .NET. Postępuj zgodnie z tym przewodnikiem krok po kroku, aby uzyskać bezpieczne podpisy cyfrowe. | | [Podpisz kartą inteligentną, korzystając z pola podpisu](./sign-with-smart-card-using-signature-field/) | Dowiedz się, jak bezpiecznie podpisywać pliki PDF za pomocą karty inteligentnej za pomocą Aspose.PDF dla .NET. Postępuj zgodnie z naszym przewodnikiem krok po kroku, aby ułatwić wdrożenie. | | [Sprawdź podpisy PDF w C# – Jak odczytać podpisane pliki PDF](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) | Dowiedz się, jak odczytywać i weryfikować podpisy PDF w C# przy użyciu Aspose.PDF. | +| [Jak zweryfikować podpis w PDF przy użyciu C# – Kompletny przewodnik Aspose](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) | Dowiedz się, jak sprawdzić podpisy PDF w C# przy użyciu Aspose.PDF, krok po kroku. | +| [Dodaj cyfrowy podpis PDF w C# – Kompletny przewodnik krok po kroku](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) | Dowiedz się, jak dodać cyfrowy podpis do pliku PDF w C# przy użyciu Aspose.PDF, krok po kroku. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/polish/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/polish/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..67e94c3f8 --- /dev/null +++ b/pdf/polish/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,259 @@ +--- +category: general +date: 2026-03-06 +description: Dodaj cyfrowy podpis PDF przy użyciu Aspose.PDF. Dowiedz się, jak utworzyć + odłączony podpis PKCS7 i podpisać PDF przy użyciu pliku PFX z niestandardnym wywołaniem + zwrotnym. +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: pl +og_description: Szybko dodaj podpis cyfrowy do PDF. Ten przewodnik pokazuje, jak utworzyć + odłączony podpis PKCS7 i podpisać PDF przy użyciu pliku PFX w C#. +og_title: Dodaj cyfrowy podpis PDF w C# – Pełny poradnik programistyczny +tags: +- Aspose.PDF +- C# +- Digital Signature +title: Dodaj cyfrowy podpis do PDF w C# – Kompletny przewodnik krok po kroku +url: /pl/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Dodaj cyfrowy podpis PDF – Kompletny przewodnik krok po kroku + +Kiedykolwiek potrzebowałeś **add digital signature pdf** plików, ale nie wiedziałeś, od czego zacząć? Nie jesteś sam; wielu programistów napotyka ten sam problem, gdy dokumentacja wymaga prawnie wiążącego podpisu, a kod potrafi generować jedynie zwykłe PDF‑y. + +W tym tutorialu przeprowadzimy Cię przez praktyczne rozwiązanie, które pozwala **add digital signature pdf** dokumenty przy użyciu Aspose.PDF for .NET, stworzyć odłączony podpis PKCS#7 oraz podpisać PDF certyfikatem PFX — wszystko w czystym C#. Po zakończeniu będziesz mieć gotowy fragment kodu, zrozumiesz „dlaczego” każdego wywołania i będziesz wiedział, jak dostosować podejście do przypadków brzegowych. + +## Czego się nauczysz + +- Jak wczytać niepodpisany PDF i przygotować go do podpisu. +- Mechanikę **create pkcs7 detached signature** oraz dlaczego warto wybrać odłączony podpis zamiast wbudowanego. +- Dokładne kroki **sign pdf using pfx** z własnym callbackiem, dające pełną kontrolę nad procesem kryptograficznym. +- Wskazówki dotyczące rozwiązywania typowych problemów (brak certyfikatu, niewłaściwy algorytm skrótu itp.). + +### Prerequisites + +| Wymaganie | Powód | +|-----------|-------| +| .NET 6.0 lub nowszy | Nowoczesne funkcje językowe i lepsze zarządzanie pamięcią. | +| Aspose.PDF for .NET (pakiet NuGet) | Dostarcza `PdfFileSignature`, `PKCS7Detached` i inne narzędzia PDF. | +| Ważny plik PFX (`.pfx`) z kluczem prywatnym | Niezbędny do kroku **sign pdf using pfx**. | +| Podstawowa znajomość C# | Kod jest prosty, ale zrozumienie instrukcji `using` pomaga. | + +> **Wskazówka:** Trzymaj hasło do PFX poza kontrolą wersji — używaj zmiennych środowiskowych lub Azure Key Vault w środowisku produkcyjnym. + +--- + +## Jak dodać cyfrowy podpis PDF przy użyciu Aspose.PDF + +Poniżej dzielimy proces na pięć przystępnych kroków. Każdy krok zawiera fragment kodu, wyjaśnienie *dlaczego* jest istotny oraz szybki test poprawności. + +![Zrzut ekranu podpisanego PDF w przeglądarce, pokazujący widoczne pole podpisu](/images/add-digital-signature-pdf.png "przykład add digital signature pdf") + +### Krok 1 – Wczytaj niepodpisany dokument PDF + +Najpierw potrzebujemy obiektu `Document`, który reprezentuje PDF, który chcesz podpisać. Użycie `using var` zapewnia automatyczne zwolnienie uchwytu pliku. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**Dlaczego?** +Aspose traktuje PDF jako graf obiektów; jego wczytanie daje dostęp do stron, adnotacji i wewnętrznego strumienia bajtów, który później zostanie zahashowany w ramach podpisu. + +### Krok 2 – Zainicjalizuj pomocnika PdfFileSignature + +`PdfFileSignature` to klasa, która faktycznie nakłada powłokę kryptograficzną. Działa ramię w ramię z `PKCS7Detached`. + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**Dlaczego?** +Oddzielenie podpisującego od dokumentu pozwala ponownie używać tej samej instancji `Document` do innych operacji (np. dodawania znaków wodnych) przed finalizacją podpisu. + +### Krok 3 – Utwórz odłączony podpis PKCS#7 (Create PKCS7 Detached Signature) + +**PKCS#7 detached signature** przechowuje jedynie skrót PDF, a nie sam PDF. To idealne rozwiązanie dla dużych dokumentów lub gdy trzeba zachować oryginalny plik niezmieniony. + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**Dlaczego własny callback?** +Czasami klucz podpisujący znajduje się w HSM lub Azure Key Vault i nie można go bezpośrednio wyciągnąć. Dostarczając `CustomSignHash`, przekazujesz skrót do usługi, która posiada klucz, zachowując prywatny materiał w bezpiecznym miejscu. + +**A co jeśli nie potrzebujesz własnego callbacku?** +Możesz pominąć `CustomSignHash`; Aspose automatycznie użyje klucza prywatnego zawartego w PFX. Jednak podejście z własnym callbackiem jest bardziej elastyczne i spełnia wymogi zgodności. + +### Krok 4 – Zastosuj podpis na konkretnej stronie (Sign PDF Using PFX) + +Teraz faktycznie umieszczamy widoczne pole podpisu na stronie. Prostokąt definiuje położenie i rozmiar (w punktach). + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**Dlaczego określić prostokąt?** +Widoczny podpis pozwala użytkownikom zobaczyć, że dokument jest podpisany. Jeśli ustawisz `isVisible` na `false`, podpis stanie się niewidoczny — nadal ważny, ale trudniej go wykryć. + +**Przypadek brzegowy:** Jeśli PDF nie ma stron (pusty plik), wywołanie rzuci `ArgumentOutOfRangeException`. Zawsze sprawdzaj `pdfDocument.Pages.Count > 0` przed podpisaniem. + +### Krok 5 – Zapisz podpisany PDF + +Na koniec zapisujemy podpisany dokument na dysku. Możesz także przesłać go bezpośrednio w odpowiedzi w ASP.NET Core. + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**Wskazówka weryfikacyjna:** Otwórz powstały plik w Adobe Acrobat Reader. Panel podpisów powinien wyświetlać zielony ptaszek (zakładając, że certyfikat jest zaufany na maszynie). + +--- + +## Kompletny działający przykład + +Łącząc wszystko w całość, oto samodzielny program konsolowy, który możesz skopiować, wkleić i uruchomić (po dostosowaniu ścieżek i haseł). + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**Oczekiwany wynik:** Konsola wypisze „✅ PDF signed successfully!” a plik `CustomSigned.pdf` pojawi się w tym samym folderze. Po otwarciu zobaczysz widżet podpisu w współrzędnych (100,100)‑(300,200). + +--- + +## Najczęściej zadawane pytania i przypadki brzegowe + +### Co zrobić, gdy mój PFX jest chroniony kartą inteligentną? + +Użyj delegata `CustomSignHash`, aby przekazać skrót do sterownika karty inteligentnej. Sterownik zwróci bajty podpisu, a Aspose osadzi je bez ujawniania klucza prywatnego. + +### Czy mogę podpisać wiele stron jednocześnie? + +Tak. Wywołaj `pdfSigner.Sign` w pętli, dostosowując `pageNumber` i opcjonalnie prostokąt dla każdej strony. Pamiętaj, że każde wywołanie dodaje osobny obiekt podpisu; niektóre przeglądarki mogą je wyświetlać osobno. + +### Jak zmienić algorytm skrótu? + +`PKCS7Detached` domyślnie używa SHA‑256, ale możesz ustawić właściwość `HashAlgorithm`: + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +Upewnij się, że Twój dostawca podpisu obsługuje wybrany algorytm. + +### Co zrobić, gdy łańcuch certyfikatów nie jest zaufany na maszynie klienta? + +Dołącz pełny łańcuch do PFX lub rozprowadź certyfikat główny do magazynu zaufanych certyfikatów użytkownika. W przeciwnym razie Acrobat wyświetli komunikat „Signature is unknown”. + +### Czy odłączony podpis jest zgodny z PDF/A‑3? + +PDF/A‑3 wymaga wbudowanych podpisów, więc odłączony PKCS#7 może nie być zgodny. W takim wypadku pomiń delegata `CustomSignHash` i pozwól Aspose obsłużyć podpis wewnętrznie, co utworzy wbudowany podpis. + +--- + +## Najlepsze praktyki dla środowiska produkcyjnego + +1. **Nigdy nie koduj haseł na stałe.** Pobieraj je ze zmiennych środowiskowych lub menedżera tajemnic. +2. **Waliduj PDF przed podpisaniem.** Uszkodzone pliki powodują `PdfFileSignatureException`. +3. **Loguj algorytm skrótu i odcisk palca certyfikatu** dla celów audytu. +4. **Testuj w różnych przeglądarkach PDF** (Adobe Reader, Foxit, Chrome), aby upewnić się, że podpis wyświetla się prawidłowo. +5. **Rozważ timestamping** poprzez dodanie żądania TSA (Time‑Stamp Authority), co dodatkowo wzmacnia prawny status podpisu. + +--- + +## Zakończenie + +Pokazaliśmy, jak **add digital signature pdf** przy użyciu Aspose.PDF, jak stworzyć **PKCS#7 detached signature** oraz jak **sign pdf using pfx** z własnym callbackiem. Pełny przykład działa od razu, a wyjaśnienia dają pewność, że możesz dostosować proces do HSM‑ów, usług timestamp czy zgodności z PDF/A. + +Następnie możesz zbadać **podpisywanie wielu dokumentów w partiach**, integrację **Azure Key Vault** dla bezpiecznego przechowywania kluczy lub **wizualną personalizację** wyglądu podpisu. Każdy z tych tematów opiera się bezpośrednio na fundamentach przedstawionych tutaj. + +Jeśli podążałeś za krokami, masz teraz solidne, godne cytowania rozwiązanie, które możesz udostępnić współpracownikom — a nawet wykorzystać w odpowiedzi asystenta AI. Powodzenia w podpisywaniu i daj znać w komentarzu, jeśli coś nie jest całkiem jasne! + +{{< /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/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/polish/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..acb239591 --- /dev/null +++ b/pdf/polish/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-03-06 +description: Dowiedz się, jak zweryfikować podpis w pliku PDF przy użyciu Aspose PDF + w języku C#. Krok po kroku weryfikacja podpisu PDF, walidacja podpisu PDF oraz obsługa + uszkodzonych podpisów. +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: pl +og_description: Jak zweryfikować podpis w pliku PDF przy użyciu Aspose PDF. Postępuj + zgodnie z tym przewodnikiem, aby przeprowadzić weryfikację podpisu PDF, zweryfikować + podpis PDF i wykryć naruszone podpisy w C#. +og_title: Jak zweryfikować podpis w PDF przy użyciu C# – Kompletny przewodnik Aspose +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: Jak zweryfikować podpis w PDF przy użyciu C# – Kompletny przewodnik Aspose +url: /pl/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak zweryfikować podpis w PDF przy użyciu C# – Kompletny przewodnik Aspose + +Zastanawiałeś się kiedyś **jak zweryfikować podpis** w PDF, nie tracąc włosów? Nie jesteś sam. Wielu programistów napotyka trudności, gdy potrzebują **pdf signature verification** ze względu na zgodność lub audyt, a typowe podejście „po prostu zaufaj bibliotece” może się nie udać. + +W tym samouczku przeprowadzimy Cię przez praktyczne, kompleksowe rozwiązanie, które nie tylko **validate pdf signature**, ale także informuje, czy podpis został podrobiony. Skorzystamy z biblioteki **Aspose PDF**, co oznacza, że kod działa na .NET 6+, .NET Framework 4.6+ oraz .NET Core. Po zakończeniu będziesz mieć gotowy fragment kodu, który możesz wstawić do dowolnego projektu C#. + +## Czego będziesz potrzebować + +- **Aspose.Pdf** pakiet NuGet (najnowsza wersja w momencie pisania – 23.12). +- Środowisko programistyczne .NET (Visual Studio, Rider lub VS Code). +- Podpisany plik PDF (nazwijmy go `Signed.pdf`). +- Podstawowa znajomość C# – nic skomplikowanego, tylko standardowe instrukcje `using` i wejście/wyjście `Console`. + +To wszystko. Bez dodatkowych usług, bez tajemniczych plików konfiguracyjnych. Gotowy? Zanurzmy się. + +![diagram weryfikacji podpisu](image.png "jak zweryfikować podpis") + +## Krok 1: Skonfiguruj projekt do weryfikacji podpisu PDF + +Zanim będziesz mógł wywołać jakiekolwiek API Aspose, musisz odwołać się do biblioteki. Otwórz terminal lub konsolę Package Manager i uruchom: + +```bash +dotnet add package Aspose.Pdf +``` + +Albo, jeśli wolisz interfejs graficzny, wyszukaj **Aspose.Pdf** w Menedżerze pakietów NuGet i zainstaluj go. Ten krok jest kluczowy, ponieważ bez zestawu **aspose pdf signature** nie będziesz mógł uzyskać dostępu do klasy `PdfFileSignature` później. + +> **Pro tip:** Ustaw docelową wersję .NET 6 lub wyższą, aby uzyskać najlepszą wydajność i uniknąć ostrzeżeń o kompatybilności ze starszymi wersjami. + +## Krok 2: Załaduj dokument PDF + +Teraz, gdy pakiet jest zainstalowany, możemy załadować PDF, który chcemy sprawdzić. Klasa `Document` reprezentuje cały plik w pamięci. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**Dlaczego to ważne:** Ładowanie dokumentu daje dostęp do jego wewnętrznych struktur, w tym pól podpisu. Jeśli plik jest brakujący lub uszkodzony, `Document` zgłosi wyjątek, który możesz przechwycić, aby zapewnić lepsze doświadczenie użytkownika. + +## Krok 3: Utwórz obiekt Aspose PdfFileSignature + +Mając dokument w ręku, kolejnym krokiem jest utworzenie instancji `PdfFileSignature`. Ta klasa fasady wie, jak odczytywać, weryfikować i manipulować cyfrowymi podpisami osadzonymi w PDF. + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**Wyjaśnienie:** Konstruktor `PdfFileSignature` przyjmuje załadowany `Document`. Wewnątrz parsuje słownik podpisu, udostępniając metody takie jak `VerifySignature` i `IsSignatureCompromised`. + +## Krok 4: Zweryfikuj integralność podpisu + +Sednem **pdf signature verification** jest metoda `VerifySignature`. Zwraca `true`, jeśli kryptograficzny skrót pasuje do przechowywanej wartości i łańcuch certyfikatów jest zaufany (zakładając, że skonfigurowałeś menedżera zaufania, co pominiemy dla zwięzłości). + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +Jeśli masz wiele podpisów, po prostu zmień indeks (`0`, `1`, …). Metoda sprawdza zarówno integralność, jak i zaufanie jednocześnie, dlatego jest najczęściej używana w większości scenariuszy. + +## Krok 5: Wykryj podrobiony podpis + +Nawet „ważny” podpis może zostać podrobiony, jeśli dokument został zmieniony po podpisaniu. Aspose udostępnia `IsSignatureCompromised`, aby wykryć taki subtelny przypadek. + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**Kiedy to używać:** Załóżmy, że PDF jest podpisany, a następnie użytkownik dodaje komentarz lub zmienia stronę. Skrót będzie się różnił, a `IsSignatureCompromised` zwróci `true`, podczas gdy `VerifySignature` może nadal zwracać `true`, jeśli sam certyfikat jest w porządku. Sprawdzenie obu flag daje pełny obraz. + +## Krok 6: Interpretuj wyniki + +Teraz mamy dwie zmienne boolowskie: `isSignatureValid` i `isSignatureCompromised`. Przekształćmy je w przyjazny komunikat w konsoli. + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### Oczekiwany wynik + +| Scenariusz | Wynik w konsoli | +|---|---| +| Ważny i nie podrobiony | `Signature OK` | +| Ważny, ale podrobiony (dokument zmieniony) | `Signature compromised!` | +| Nieprawidłowy (certyfikat niezaufany, niezgodny skrót) | `Signature verification failed` | + +## Pełny działający przykład + +Łącząc wszystko razem, oto kompletny, gotowy do uruchomienia program: + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +Skopiuj, wklej, dostosuj `pdfPath` i uruchom. Jeśli wszystko jest poprawnie skonfigurowane, zobaczysz jedną z trzech wiadomości wymienionych powyżej. + +## Typowe pułapki i wskazówki dotyczące weryfikacji podpisu PDF + +| Problem | Dlaczego się pojawia | Jak naprawić / uniknąć | +|---|---|---| +| **Brak licencji Aspose** | Wersja darmowa dodaje znak wodny i może ograniczać niektóre wywołania API. | Zarejestruj licencję (`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`). | +| **Wiele podpisów, ale nieprawidłowy indeks** | Możesz sprawdzać niewłaściwy podpis, co prowadzi do fałszywych negatywów. | Iteruj przez `signatureVerifier.GetSignatureCount()` i sprawdzaj każdy. | +| **Łańcuch certyfikatów nie jest zaufany** | `VerifySignature` nie powodzi się, jeśli główny CA nie znajduje się w zaufanym magazynie. | Dodaj CA podpisującego do magazynu Windows Trusted Root lub skonfiguruj własny `CertificateValidator`. | +| **Plik zablokowany przez inny proces** | Otwieranie PDF, który jest nadal otwarty w innym miejscu, może spowodować `IOException`. | Użyj `FileStream` z `FileShare.ReadWrite` lub najpierw skopiuj do pliku tymczasowego. | +| **Nieprawidłowa ścieżka PDF** | Prosta literówka skutkuje `FileNotFoundException`. | Sprawdź ścieżkę przy pomocy `File.Exists(pdfPath)` przed załadowaniem. | + +### Przypadki brzegowe, które możesz napotkać + +- **Detached signatures**: Niektóre PDF przechowują podpisy zewnętrznie. `PdfFileSignature` Aspose obecnie obsługuje tylko podpisy wbudowane. +- **Timestamped signatures**: Jeśli musisz zweryfikować autorytet znacznika czasu (TSA), będziesz musiał wywołać `VerifySignature` z własnym obiektem `VerificationOptions` — poza zakresem tego krótkiego przewodnika, ale warte uwagi w projektach o wysokich wymaganiach zgodności. + +## Kolejne kroki – Rozszerzanie logiki walidacji + +Teraz, gdy opanowałeś podstawy **how to verify signature**, możesz chcieć: + +1. **Validate PDF signature** względem listy zaufanych certyfikatów (np. korporacyjny PKI). +2. **Export signature details** (nazwa podpisującego, czas podpisu, odcisk certyfikatu) przy użyciu `GetSignatureInfo`. +3. **Batch‑process multiple PDFs** w folderze, zapisując wyniki do pliku CSV w celach audytowych. + +Wszystkie te elementy są prostymi rozszerzeniami kodu, który właśnie omówiliśmy, i pozostają w ramach tego samego ekosystemu **aspose pdf signature**. + +**W skrócie**, teraz dokładnie wiesz **how to verify signature** w PDF przy użyciu C# i Aspose, jak wykryć podrobiony podpis oraz co zrobić, gdy weryfikacja nie powiedzie się. Podejście jest solidne, działa z wieloma podpisami i może być zintegrowane z większymi pipeline'ami przetwarzania dokumentów. + +Masz inny wariant tego scenariusza? Może potrzebujesz podpisywać PDF zamiast je weryfikować, albo masz do czynienia z zaszyfrowanymi PDF. Dodaj komentarz, a razem przyjrzymy się tym zagadnieniom. Szczęśliwego kodowania! + +{{< /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/programming-with-stamps-and-watermarks/_index.md b/pdf/polish/net/programming-with-stamps-and-watermarks/_index.md index 1b59f166b..3d84cb3fd 100644 --- a/pdf/polish/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/polish/net/programming-with-stamps-and-watermarks/_index.md @@ -39,6 +39,7 @@ Samouczki „Programowanie ze stemplami i znakami wodnymi” dla .NET firmy Aspo | [Tabela w sekcji nagłówka i stopki](./table-in-header-footer-section/) | Dowiedz się, jak łatwo dodać tekst do stopki pliku PDF za pomocą Aspose.PDF dla .NET. Dołączony przewodnik krok po kroku dla bezproblemowej integracji. | | [Tekst w stopce pliku PDF](./text-in-footer/) | Dowiedz się, jak dodać tekst w stopce pliku PDF za pomocą Aspose.PDF dla platformy .NET. | | [Tekst w nagłówku pliku PDF](./text-in-header/) | Naucz się dodawać nagłówki tekstowe do plików PDF za pomocą Aspose.PDF dla .NET dzięki temu samouczkowi krok po kroku. Ulepszaj swoje dokumenty wydajnie i skutecznie. | +| [Utwórz dokument PDF z numeracją Bates w C# – pełny przewodnik](./create-pdf-document-with-bates-numbering-in-c-full-guide/) | Dowiedz się, jak w C# dodać numerację Bates do dokumentu PDF przy użyciu Aspose.PDF, krok po kroku. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/polish/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/polish/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..d4964d4d8 --- /dev/null +++ b/pdf/polish/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,183 @@ +--- +category: general +date: 2026-03-06 +description: Utwórz dokument PDF w C# i łatwo dodaj numerację Batesa. Dowiedz się, + jak dodać pustą stronę PDF, umieścić pieczęć na stronie i wdrożyć numerację Batesa. +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: pl +og_description: Utwórz dokument PDF w C# i dodaj numerację Batesa. Ten przewodnik + pokazuje, jak dodać pustą stronę PDF, umieścić stempel na stronie oraz zastosować + numerację Batesa. +og_title: Tworzenie dokumentu PDF z numeracją Bates – Poradnik C# +tags: +- Aspose.Pdf +- C# +- PDF automation +title: Tworzenie dokumentu PDF z numeracją Bates w C# – pełny przewodnik +url: /pl/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Utwórz dokument PDF z numeracją Bates w C# + +Kiedykolwiek potrzebowałeś **create PDF document** w C# i zastanawiałeś się, jak dodać numer Bates, nie wyrywając sobie włosów? Nie jesteś jedyny — kancelarie prawne, sądy i nawet niektóre zespoły ds. zgodności korporacyjnej codziennie stają przed tym samym problemem. Dobra wiadomość? Kilka linii kodu Aspose.Pdf pozwala stworzyć nowy PDF, dodać pustą stronę i nanieść prawidłowy numer Bates w jednym płynnym procesie. + +W tym samouczku przeprowadzimy Cię przez cały proces: od skonfigurowania projektu, przez dodanie pustej strony PDF, po ustalenie **how to add bates numbering**, a na końcu **place stamp on page** i zapisanie wyniku. Po zakończeniu będziesz mieć gotowy fragment kodu, który możesz wkleić do dowolnej aplikacji .NET. Bez niejasnych odniesień, tylko kompletny, działający przykład. + +## Czego będziesz potrzebować + +- **.NET 6+** (lub .NET Framework 4.6+ – Aspose.Pdf działa z obiema) +- **Aspose.Pdf for .NET** pakiet NuGet (`Install-Package Aspose.Pdf`) +- Porządny IDE (Visual Studio, Rider lub VS Code z rozszerzeniem C#) + +To wszystko. Bez dodatkowych DLL‑ów, bez zewnętrznych usług. Zanurzmy się. + +## Krok 1: Utwórz dokument PDF – początkowa konfiguracja + +Na początek potrzebujemy nowego obiektu `Document`. Traktuj go jak pustą płótno, na którym pojawi się reszta. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **Dlaczego to ważne:** Klasa `Document` jest punktem wejścia dla każdej operacji Aspose. Utworzenie jej daje dostęp do kolekcji `Pages`, metadanych i ustawień zabezpieczeń — wszystkich elementów budujących profesjonalny PDF. + +## Krok 2: Dodaj pustą stronę PDF + +PDF bez stron jest jak książka bez kartek — praktycznie bezużyteczna. Dodanie pustej strony jest proste i daje nam powierzchnię, na której możemy nanieść numer Bates. + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **Wskazówka:** Jeśli potrzebujesz wielu stron, po prostu wywołaj `pdfDocument.Pages.Add()` w pętli. Każde wywołanie zwraca nowy obiekt `Page`, który możesz dostosować niezależnie. + +## Krok 3: Jak dodać numerację Bates – utwórz TextStamp + +Teraz przychodzi sedno sprawy: **Bates number**. W Aspose.Pdf jest to po prostu `TextStamp` ze specjalną flagą artefaktu. + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **Dlaczego ustawiamy `Artifact`**: Niektóre czytniki PDF udostępniają numery Bates jako przeszukiwalne metadane. Oznaczenie znacznika jako artefakt `BatesNumbering` zapewnia, że narzędzia downstream automatycznie go rozpoznają. + +## Krok 4: Umieść znacznik na stronie + +Gdy znacznik jest gotowy, teraz **place stamp on page**. To krok, w którym wizualny numer faktycznie pojawia się w PDF. + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **Przypadek szczególny:** Jeśli potrzebujesz, aby numer zwiększał się na każdej stronie, należy przejść pętlą po `pdfDocument.Pages` i zaktualizować `batesStamp.Value` przed wywołaniem `AddStamp`. Przykład tutaj jest prosty, używa statycznego „Bates‑001”. + +## Krok 5: Zapisz i zweryfikuj wynik + +Na koniec zapisujemy PDF na dysku. Wybierz folder, do którego masz prawo zapisu; w przeciwnym razie napotkasz `UnauthorizedAccessException`. + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +Gdy otworzysz `BatesStamped.pdf` w dowolnym przeglądarce, powinieneś zobaczyć mały „Bates‑001” umieszczony starannie w prawym dolnym rogu pustej strony. + +> **Expected output:** +> ![PDF z numerem Bates](image-placeholder.png "PDF z numerem Bates") +> *Alt text: PDF z numerem Bates w prawym dolnym rogu.* + +Jeśli numer się nie wyświetla, sprawdź wartości marginesów i upewnij się, że rozmiar strony nie jest zbyt mały (domyślny A4 działa dobrze). Upewnij się także, że flaga `Artifact` nie jest usuwana przez żadne narzędzia post‑processingowe. + +## Pełny działający przykład + +Poniżej znajduje się kompletny, gotowy do skopiowania program. Zawiera wszystkie dyrektywy `using` oraz komentarze, które pomogą Ci się zorientować. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +Uruchom program, otwórz PDF i zobaczysz numer Bates dokładnie tam, gdzie go umieściliśmy. 🎉 + +## Częste warianty i pułapki + +| Scenariusz | Co zmienić | Dlaczego | +|------------|------------|----------| +| **Wiele stron, numerowanie rosnące** | Loop through `pdfDocument.Pages`, set `batesStamp.Value = $"Bates-{i:D3}"` before `AddStamp` | Nadaje każdej stronie unikalny identyfikator, typowe dla pakietów prawnych | +| **Inne umiejscowienie (góra‑lewo)** | Change `HorizontalAlignment = HorizontalAlignment.Left` and `VerticalAlignment = VerticalAlignment.Top` | Niektóre organizacje wolą numer w nagłówku zamiast w stopce | +| **Niestandardowa czcionka lub kolor** | Set `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` | Poprawia czytelność lub spełnia wytyczne brandingowe | +| **Dodanie istniejącego PDF jako tła** | Load the source PDF with `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` | Przydatne, gdy trzeba nanieść znacznik na wcześniej wygenerowany formularz | + +## Podsumowanie + +Właśnie pokazaliśmy, jak **create PDF document**, **add blank page pdf** i **add bates number** przy użyciu Aspose.Pdf dla .NET, a następnie **place stamp on page** i zapisać plik. Kod jest celowo zwięzły, abyś mógł go dostosować do większych przepływów pracy — niezależnie od tego, czy przetwarzasz dziesiątki plików, czy integrujesz się z usługą webową. + +Jeśli jesteś gotowy, aby pójść dalej, rozważ: + +- Automatyzację logiki inkrementacji dla dużych aktów spraw. +- Osadzenie generowania PDF w API ASP.NET Core. +- Dodanie zabezpieczeń (ochrona hasłem) przy użyciu `pdfDocument.Encrypt(...)`. + +Śmiało eksperymentuj, łam rzeczy i zadawaj pytania w komentarzach. Szczęśliwego kodowania i niech Twoje PDF‑y zawsze będą idealnie oznaczone! + +{{< /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/programming-with-tagged-pdf/_index.md b/pdf/polish/net/programming-with-tagged-pdf/_index.md index dbd1e49ac..2351b655b 100644 --- a/pdf/polish/net/programming-with-tagged-pdf/_index.md +++ b/pdf/polish/net/programming-with-tagged-pdf/_index.md @@ -37,7 +37,7 @@ Samouczki Aspose.PDF for .NET „Programming with Tagged PDFs” przeprowadzą C | [Właściwości elementów konstrukcyjnych w pliku PDF](./structure-elements-properties/) | Przewodnik krok po kroku dotyczący pracy z właściwościami elementów konstrukcyjnych w pliku PDF za pomocą Aspose.PDF dla platformy .NET. Twórz bogate w informacje elementy konstrukcyjne. | | [Styl komórki tabeli](./style-table-cell/) | Dowiedz się, jak stylizować komórki tabeli w pliku PDF za pomocą Aspose.PDF dla .NET dzięki temu szczegółowemu samouczkowi. Postępuj zgodnie z instrukcjami, aby tworzyć i formatować piękne tabele PDF. | | [Element tabeli stylów](./style-table-element/) | Dowiedz się, jak utworzyć i stylizować element tabeli w programie Aspose.PDF dla platformy .NET, korzystając z instrukcji krok po kroku, niestandardowego stylu i zgodności ze standardem PDF/UA. | -| [Styl wiersza tabeli](./style-table-row/) Dowiedz się, jak stylizować wiersze tabeli w pliku PDF za pomocą Aspose.PDF dla platformy .NET, korzystając z przewodnika krok po kroku, który pomoże Ci z łatwością ulepszyć formatowanie dokumentu. | +| [Styl wiersza tabeli](./style-table-row/) Dowiedz się, jak stylizować wiersze tabeli w pliku PDF za pomocą Aspose.PDF dla .NET, korzystając z przewodnika krok po kroku, który pomoże Ci z łatwością ulepszyć formatowanie dokumentu. | | [Styl struktury tekstu w pliku PDF](./style-text-structure/) | Dowiedz się, jak stylizować strukturę tekstu w plikach PDF za pomocą Aspose.PDF dla .NET w tym kompleksowym samouczku krok po kroku. Przekształć swoje dokumenty. | | [Oznaczona zawartość PDF](./tagged-pdf-content/) | Dowiedz się, jak pracować z oznaczoną zawartością w dokumencie PDF za pomocą Aspose.PDF dla .NET. Przewodnik krok po kroku dotyczący korzystania z tagów. | | [Oznacz obraz w istniejącym pliku PDF](./tag-image-in-existing-pdf/) | Dowiedz się, jak oznaczać obrazy w istniejących plikach PDF za pomocą Aspose.PDF dla .NET. Przewodnik krok po kroku, jak zwiększyć dostępność dzięki zgodności ze standardem PDF/UA. | @@ -45,6 +45,7 @@ Samouczki Aspose.PDF for .NET „Programming with Tagged PDFs” przeprowadzą C | [Elementy struktury tekstu w pliku PDF](./text-structure-elements/) Naucz się manipulować elementami struktury tekstu w plikach PDF za pomocą Aspose.PDF dla .NET. Ten przewodnik krok po kroku obejmuje wszystko, czego potrzebujesz, aby tworzyć ustrukturyzowane pliki PDF. | | [Sprawdź poprawność pliku PDF](./validate-pdf/) | Dowiedz się, jak sprawdzić poprawność pliku PDF za pomocą Aspose.PDF dla .NET. Sprawdź jego zgodność ze standardami i wygeneruj raport walidacyjny. | | [Utwórz PDF z tagami w C# – Kompletny przewodnik krok po kroku](./create-tagged-pdf-in-c-complete-step-by-step-guide/) | Dowiedz się, jak w C# utworzyć oznaczony plik PDF, korzystając z Aspose.PDF, krok po kroku, aby zapewnić dostępność i zgodność PDF/UA. | +| [Utwórz PDF z tagami w C# – Przewodnik krok po kroku](./create-tagged-pdf-in-c-step-by-step-guide/) | Dowiedz się, jak w C# utworzyć oznaczony plik PDF, krok po kroku, zapewniając dostępność i zgodność PDF/UA. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/polish/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/polish/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..d736dcceb --- /dev/null +++ b/pdf/polish/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-03-06 +description: Utwórz PDF z tagami przy użyciu Aspose.Pdf w C#. Dowiedz się, jak dodać + obraz do PDF, ustawić pozycję figury i oznaczyć PDF pod kątem dostępności. +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: pl +og_description: Utwórz oznaczony PDF przy użyciu Aspose.Pdf. Ten przewodnik pokazuje, + jak dodać obraz do PDF, ustawić pozycję figury oraz oznaczyć PDF pod kątem dostępności. +og_title: Utwórz oznaczony PDF w C# – Kompletny poradnik +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: Tworzenie PDF z tagami w C# – Przewodnik krok po kroku +url: /pl/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tworzenie oznaczonego PDF w C# – Pełny samouczek + +Kiedykolwiek potrzebowałeś **create tagged PDF** w C#, ale nie wiedziałeś od czego zacząć? Nie jesteś sam; dostępność to dziś konieczność, a oznaczony PDF jest podstawą zgodnego dokumentu. W tym samouczku przejdziemy przez rzeczywisty przykład, który **adds image to PDF**, ustawia pozycję figury i pokazuje **how to tag PDF** przy użyciu Aspose.Pdf. Po zakończeniu będziesz mieć w pełni oznaczony PDF, który możesz wysłać komukolwiek. + +Omówimy wszystko, od wczytania istniejącego pliku po zapisanie ostatecznego wyniku, więc nie będziesz musiał szukać „jak dodać obraz” w innym miejscu. Bez zbędnych wstępów — czyste, gotowe do uruchomienia rozwiązanie działające z Aspose.Pdf 23.8 (najnowsza wersja w momencie pisania). Otwórz swoje IDE i zaczynajmy. + +--- + +## Co będzie potrzebne + +- **Aspose.Pdf for .NET** (pakiet NuGet `Aspose.Pdf`). +- .NET 6+ (lub .NET Framework 4.7.2+). +- Plik PDF wejściowy, który już posiada strukturę logiczną (czyli jest już oznaczony) – jeśli nie, możesz włączyć oznaczanie poprzez `pdfDocument.TaggedContent = true`. +- Plik graficzny (`image.png`), który chcesz osadzić. + +To wszystko. Bez dodatkowych bibliotek, bez skomplikowanych plików konfiguracyjnych. + +--- + +## Krok 1: Wczytaj istniejący dokument PDF (Utwórz bazę oznaczonego PDF) + +Pierwszą rzeczą, którą robimy, jest otwarcie PDF, który chcemy ulepszyć. Wczytanie pliku daje nam dostęp do jego struktury logicznej, co jest niezbędne w **create tagged pdf** workflow. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*Dlaczego to ważne:* Bez drzewa tagów PDF nie przekaże informacji strukturalnych czytnikom ekranu. Włączenie oznaczania zapewnia, że wszystkie nowe elementy, które dodamy (np. figura), odziedziczą właściwą hierarchię. + +--- + +## Krok 2: Uzyskaj dostęp do korzenia struktury logicznej (Jak oznaczyć PDF) + +Teraz sięgamy do struktury logicznej PDF. Element korzenia jest kontenerem dla wszystkich tagów — można go traktować jako konspekt dokumentu. + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*Wyjaśnienie:* `logicalRoot` pozwala nam dołączać nowe tagi, takie jak `
` czy `
`. To jest sedno **how to tag PDF** programistycznie. + +--- + +## Krok 3: Utwórz tag Figure i ustaw jego pozycję (Ustaw pozycję figury) + +Tag *Figure* grupuje treść wizualną z opcjonalnym podpisem. Utworzymy go, ustawimy pozycję i podłączymy do korzenia. + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*Dlaczego ustawiamy pozycję:* Krok **set figure position** określa, gdzie element wizualny pojawi się na stronie. Jeśli to pominiesz, figura może pojawić się w nieoczekiwanym miejscu lub być niewidoczna dla technologii wspomagających. + +--- + +## Krok 4: Dodaj reprezentację wizualną – wstaw obraz (Dodaj obraz do PDF) + +Po utworzeniu tagu potrzebny jest rzeczywisty obraz. To część, która odpowiada na pytanie **add image to pdf**. + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*Kluczowy punkt:* Współrzędne prostokąta muszą odpowiadać `figureTag.Position`, które zdefiniowaliśmy wcześniej; w przeciwnym razie figura i jej zawartość wizualna będą niezsynchronizowane, co zepsuje dostępność. + +--- + +## Krok 5: Zapisz zaktualizowany PDF (Zakończ tworzenie oznaczonego PDF) + +Na koniec zapisujemy zmiany do nowego pliku. Zachowanie oryginału nietkniętego to dobra praktyka. + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +Na tym etapie masz plik **create tagged pdf**, który zawiera prawidłowo pozycjonowany obraz otoczony tagiem `
`. Otwórz `output.pdf` w Adobe Acrobat i sprawdź panel *Tags* — powinien tam być węzeł `Figure` pod korzeniem. + +--- + +## Pełny, gotowy do uruchomienia przykład + +Poniżej znajduje się kompletny program, który możesz skopiować i wkleić do aplikacji konsolowej. Wszystkie kroki są już w odpowiedniej kolejności. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### Oczekiwany rezultat + +- `output.pdf` otwiera się z obrazem wyświetlonym w punkcie (100, 150), o rozmiarze 300 × 200 punktów. +- Panel *Tags* pokazuje element `Figure`, który obejmuje obraz. +- Narzędzia czytników ekranu ogłaszają „Figure” przed opisem obrazu, spełniając podstawowe standardy dostępności. + +--- + +## Częste pytania i przypadki brzegowe + +### Co zrobić, jeśli źródłowy PDF nie jest jeszcze oznaczony? + +Aspose.Pdf pozwala włączyć oznaczanie, ustawiając `pdfDocument.TaggedContent.IsTagged = true;`. Biblioteka wygeneruje domyślne drzewo tagów, po czym możesz dodawać własne tagi, jak pokazano. + +### Czy mogę dodać podpis do figury? + +Tak. Po utworzeniu `figureTag` możesz dołączyć `Paragraph` z `TextFragment` i ustawić jego `Tag` na `Caption`. Przykład: + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### Jak umieścić figurę na innej stronie? + +Zamień `var firstPage = pdfDocument.Pages[1];` na żądany indeks strony, np. `pdfDocument.Pages[3]`. Pamiętaj, aby dostosować współrzędne `Position`, jeśli rozmiar strony się różni. + +### Co zrobić, jeśli muszę oznaczyć wiele obrazów? + +Utwórz nowy `Figure` dla każdego obrazu, nadaj każdemu unikalną `Position` i dodaj odpowiedni obiekt `Image` do właściwej strony. Pętla iterująca po kolekcji obrazów działa bardzo dobrze. + +### Czy to działa z zgodnością PDF/A? + +Aspose.Pdf obsługuje PDF/A‑1b, PDF/A‑2b i PDF/A‑3b. Przy generowaniu dokumentu PDF/A pamiętaj, aby przed zapisem ustawić tryb zgodności: + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +Logika tagowania pozostaje taka sama. + +--- + +## Porady profesjonalne i pułapki + +- **Pro tip:** Zawsze używaj ścieżek bezwzględnych lub `Path.Combine`, aby uniknąć błędów „plik nie znaleziony” w czasie wykonywania. +- **Uwaga:** Niezgodne współrzędne między tagiem `Figure` a prostokątem `Image` — technologie wspomagające polegają na tej zgodności. +- **Wydajność:** Jeśli przetwarzasz wiele stron, opakuj strumień obrazu w blok `using`, aby szybko zwolnić zasoby. +- **Sprawdzenie wersji:** Pokazane API działa z Aspose.Pdf 23.8+. Starsze wersje mogą mieć nieco inne nazwy klas (np. `LogicalStructureElement` zamiast `FigureElement`). + +--- + +## Zakończenie + +Właśnie **create tagged pdf** od początku do końca, zademonstrowaliśmy **add image to pdf** i pokazaliśmy, jak **set figure position**, jednocześnie odpowiadając na **how to tag pdf** i **how to add image** w jednym spójnym przykładzie. Kod jest gotowy do uruchomienia, wyjaśnienia opisują „dlaczego” każdego kroku, a Ty masz solidną bazę do budowania dostępnych PDF‑ów w C#. + +Gotowy na kolejny wyzwanie? Spróbuj dodać tabele z tagami `
` lub osadzić warstwę zgodności PDF/A‑2b do celów archiwizacji. Ten sam wzorzec — load, access logical structure, create tag, attach visual content, save — ma zastosowanie w większości zadań związanych z dostępnością PDF. + +Jeśli napotkasz problem lub masz przypadek użycia, którego tutaj nie omówiono, zostaw komentarz poniżej. Szczęśliwego tagowania i miłego tworzenia PDF‑ów, które każdy może czytać! + +![Diagram przedstawiający PDF z tagiem Figure i obrazem – ilustruje, jak tworzyć oznaczony pdf](placeholder-image.png "przykład create tagged pdf") + +{{< /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/digital-signatures/_index.md b/pdf/portuguese/net/digital-signatures/_index.md index b421b4295..277d72cb6 100644 --- a/pdf/portuguese/net/digital-signatures/_index.md +++ b/pdf/portuguese/net/digital-signatures/_index.md @@ -59,6 +59,9 @@ Aprenda a verificar assinaturas digitais em arquivos PDF usando o Aspose.PDF par ### [Verificar assinatura de PDF em C# – Guia completo para validar assinatura digital de PDF](./verify-pdf-signature-in-c-complete-guide-to-validate-digital/) Aprenda a validar assinaturas digitais em PDFs usando C#, com exemplos passo a passo e melhores práticas. +### [Como ler assinaturas em PDF com C# – Guia passo a passo](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +Aprenda a ler assinaturas de PDFs usando C# e Aspose.PDF, passo a passo, com exemplos de código. + ## Recursos adicionais - [Aspose.PDF para documentação da Net](https://docs.aspose.com/pdf/net/) diff --git a/pdf/portuguese/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/portuguese/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..5c99e22cd --- /dev/null +++ b/pdf/portuguese/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-06 +description: Como ler assinaturas em um PDF usando C#. Aprenda a carregar documentos + PDF em C#, listar assinaturas de PDF e obter assinaturas digitais de PDF de forma + rápida e confiável. +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: pt +og_description: Como ler assinaturas em um PDF usando C#. Este guia mostra como carregar + um documento PDF em C#, listar assinaturas de PDF e recuperar assinaturas digitais + de PDF em alguns passos fáceis. +og_title: Como ler assinaturas em PDF com C# – Guia completo +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: Como ler assinaturas em PDF com C# – Guia passo a passo +url: /pt/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como Ler Assinaturas em PDF com C# – Guia Completo + +Já se perguntou **como ler assinaturas** que já estão incorporadas em um arquivo PDF? Talvez você esteja construindo um painel de conformidade, ou simplesmente precise auditar contratos assinados antes que eles cheguem ao seu banco de dados. A boa notícia é que, com algumas linhas de C# e a biblioteca Aspose.Pdf, você pode extrair os nomes das assinaturas diretamente do arquivo — sem necessidade de inspeção manual. + +Neste tutorial, percorreremos o carregamento de um documento PDF em C#, a listagem de assinaturas PDF e a obtenção de informações de assinaturas digitais em PDF. Ao final, você terá um aplicativo console pronto‑para‑executar que imprime cada nome de assinatura encontrado, além de dicas para lidar com casos extremos, como arquivos protegidos por senha. + +## Pré‑requisitos + +- .NET 6.0 ou posterior (o código também funciona com .NET Framework 4.6+) +- Aspose.Pdf for .NET (você pode obter uma licença temporária gratuita no site da Aspose) +- Um PDF que já contém uma ou mais assinaturas digitais (o exemplo `MultiSigned.pdf` está incluído no repositório) + +> **Dica profissional:** Se você estiver usando o Visual Studio, habilite *Nullable Reference Types* para capturar bugs relacionados a null cedo. + +## Etapa 1: Carregar o Documento PDF em C# + +A primeira coisa que precisamos é um objeto `Document` que representa o arquivo PDF no disco. A classe `Document` da Aspose.Pdf lida com tudo, desde a extração simples de texto até o processamento complexo de formulários. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**Por que isso importa:** Carregar o PDF valida que o arquivo existe e pode ser lido. Se o arquivo estiver corrompido ou o caminho estiver errado, interrompemos a execução cedo, em vez de encontrar erros enigmáticos mais tarde ao tentar enumerar as assinaturas. + +## Etapa 2: Criar um Auxiliar `PdfFileSignature` + +Aspose separa o manuseio genérico de PDF (`Document`) das operações específicas de assinatura (`PdfFileSignature`). Instanciar esse auxiliar nos dá acesso a métodos como `GetSignatureNames()`. + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**Por que isso importa:** A classe `PdfFileSignature` sabe como analisar as entradas do dicionário `/Sig` do PDF, que é onde as assinaturas digitais residem. Usá‑la garante que estamos lendo as assinaturas exatamente como foram adicionadas, preservando quaisquer metadados criptográficos. + +## Etapa 3: Recuperar Todos os Nomes de Assinatura + +Agora vem o núcleo de **como ler assinaturas**: chamar `GetSignatureNames()`. Este método retorna um array de strings contendo os *nomes dos campos* de cada assinatura. + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**O que você verá:** Se `MultiSigned.pdf` contiver três assinaturas chamadas `Signature1`, `Signature2` e `Signature3`, a saída do console será: + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## Etapa 4: (Opcional) Verificar a Validade de Cada Assinatura + +Ler os nomes costuma ser suficiente, mas muitos projetos também precisam saber se cada assinatura ainda é válida. Aspose permite validar uma assinatura pelo seu nome de campo: + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **Caso extremo:** Se o PDF estiver protegido por senha, você deve fornecer a senha antes de chamar `VerifySignature`. Use `pdfDocument.Encrypt.Password = "yourPassword";` logo após carregar o documento. + +## Exemplo Completo Funcionando + +Abaixo está o programa completo que você pode copiar‑colar em um novo projeto console (`dotnet new console`). Ele inclui todas as etapas, tratamento de erros e verificação opcional. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**Saída esperada** (supondo três assinaturas válidas): + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## Lidando com Variações Comuns + +| Situação | O que Alterar | Por quê | +|-----------|----------------|-----| +| **PDF protegido por senha** | Defina `pdfDocument.Encrypt.Password = "yourPwd";` antes de criar `PdfFileSignature`. | Sem a senha, os dicionários de assinatura são criptografados e `GetSignatureNames()` retorna um array vazio. | +| **PDFs grandes ( > 100 MB )** | Use `pdfSigner.GetSignatureNames(0, 10)` para paginar os resultados (primeiro parâmetro = índice inicial). | Carregar toda a lista de assinaturas de uma vez pode consumir muita memória. | +| **Nenhuma assinatura** | O código já imprime um aviso amigável. Considere registrar isso como um evento de auditoria. | Ajuda processos subsequentes a decidir se rejeitam o arquivo ou pedem ao usuário uma versão assinada. | +| **Nomes de campo de assinatura personalizados** | O método retorna qualquer nome de campo usado durante a assinatura, por exemplo, `EmployeeApproval`. Nenhum trabalho extra necessário. | Permite mapear assinaturas de volta às funções de negócios. | + +## Melhores Práticas & Dicas + +- **Descartar objetos**: O padrão `using var pdfSigner` garante que os recursos nativos sejam liberados prontamente. +- **Licenciar cedo**: Chame `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` no início de `Main` para evitar a marca d'água de avaliação. +- **Segurança de thread**: Se você estiver processando muitos PDFs em paralelo, instancie um `PdfFileSignature` separado por thread. A classe não é segura para threads. +- **Logging**: Para produção, substitua `Console.WriteLine` por um logger estruturado (Serilog, NLog) para que você possa capturar os nomes exatos das assinaturas para trilhas de auditoria. +- **Verificação de versão**: O código funciona com Aspose.Pdf for .NET 23.10 e posteriores. Versões mais antigas podem exigir `PdfSignature` em vez de `PdfFileSignature`. + +## Conclusão + +Cobremos **como ler assinaturas** de um PDF usando C#. Ao carregar o documento PDF, criar um auxiliar `PdfFileSignature` e chamar `GetSignatureNames()`, você pode listar todas as assinaturas digitais incorporadas no arquivo. A verificação opcional adiciona uma camada de confiança, e o código de exemplo mostra exatamente como integrar isso em um aplicativo console do mundo real. + +Pronto para o próximo passo? Experimente combinar isso com o `DigitalSignatureUtil` da Aspose para extrair certificados dos assinantes, ou alimentar a lista de assinaturas em um painel de conformidade que sinaliza contratos não assinados. As possibilidades são infinitas — basta lembrar de **carregar documento PDF C#**, **listar assinaturas PDF** e **obter assinaturas digitais PDF** sempre que precisar de uma auditoria rápida. + +Feliz codificação, e que seus PDFs permaneçam sempre assinados com segurança! + +{{< /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-conversion/_index.md b/pdf/portuguese/net/document-conversion/_index.md index d85465034..5d7a4bfe8 100644 --- a/pdf/portuguese/net/document-conversion/_index.md +++ b/pdf/portuguese/net/document-conversion/_index.md @@ -58,6 +58,7 @@ Você aprenderá a especificar configurações de conversão, extrair texto e im | [XPS para PDF](./xps-to-pdf/) Aprenda a converter arquivos XPS para PDF usando o Aspose.PDF para .NET com este tutorial passo a passo. Perfeito para desenvolvedores e entusiastas de documentos. | | [Converter PDF para PDF/X‑4 em C# – Tutorial ASP.NET PDF passo a passo](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | Aprenda a converter PDFs para o padrão PDF/X‑4 usando Aspose.PDF para .NET em C# com este tutorial passo a passo. | | [PDF para PNG tutorial – Converter páginas PDF para PNG em C#](./pdf-to-png-tutorial-convert-pdf-pages-to-png-in-c/) | Aprenda a converter páginas de PDF em imagens PNG usando Aspose.PDF para .NET em C# com este tutorial passo a passo. | +| [Tutorial Aspose PDF: Converter PDF para PDF/X‑4 em C#](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) | Aprenda a converter PDFs para o padrão PDF/X‑4 usando Aspose.PDF para .NET em C# com este tutorial passo a passo. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/portuguese/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/portuguese/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..ae9695733 --- /dev/null +++ b/pdf/portuguese/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-03-06 +description: O Tutorial de Aspose PDF mostra como usar o Aspose para carregar um documento + PDF em C#, converter PDF para PDF/X‑4 e salvar o PDF convertido de forma eficiente. +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: pt +og_description: O tutorial Aspose PDF explica como carregar um documento PDF em C#, + convertê-lo para o formato PDF/X‑4 e salvar o PDF convertido com exemplos de código + claros. +og_title: 'Tutorial Aspose PDF: Converter PDF para PDF/X‑4 em C#' +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: 'Tutorial Aspose PDF: Converter PDF para PDF/X‑4 em C#' +url: /pt/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tutorial Aspose PDF: Converter PDF para PDF/X‑4 em C# + +Já se perguntou como usar o Aspose para transformar um PDF comum em um arquivo PDF/X‑4 sem esforço? Você não está sozinho — desenvolvedores frequentemente precisam de uma maneira confiável de **load PDF document C#**‑style, converter e então **save the converted PDF** para fluxos de trabalho posteriores. Neste guia, vamos percorrer um exemplo completo e executável que faz exatamente isso, usando a versão mais recente do Aspose.Pdf para .NET. + +Cobriremos tudo, desde a instalação da biblioteca, carregamento de um PDF de origem, conversão para o padrão PDF/X‑4 e, finalmente, a persistência do resultado em disco. Ao final, você terá uma compreensão sólida de **how to use Aspose** para esse cenário de conversão comum, além de dicas para lidar com casos extremos. + +## Pré-requisitos + +- .NET 6.0 ou posterior (o código funciona no .NET Framework também, mas .NET 6+ é recomendado). +- Um arquivo de licença válido do Aspose.Pdf for .NET (ou você pode executar em modo de avaliação para um teste rápido). +- Visual Studio 2022 ou qualquer IDE compatível com C#. +- Um arquivo PDF de entrada localizado em `YOUR_DIRECTORY/input.pdf`. + +Nenhum pacote NuGet extra além de `Aspose.Pdf` é necessário. + +## Instalar Aspose.Pdf via NuGet + +Abra seu terminal ou o Package Manager Console e execute: + +```bash +dotnet add package Aspose.Pdf +``` + +Isso baixa a versão estável mais recente (a partir de março 2026, versão 23.12). Se preferir a interface gráfica, procure por *Aspose.Pdf* no NuGet Package Manager e instale-o. + +## Etapa 1: Carregar Documento PDF em C# com Aspose + +A primeira coisa que você precisa fazer é trazer o PDF de origem para a memória. A classe `Document` do Aspose é o ponto de entrada. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**Por que isso importa:** Carregar o arquivo valida que o caminho existe e que o PDF não está corrompido. O bloco `try/catch` fornece uma maneira elegante de exibir erros — útil quando o arquivo vem de uploads de usuários. + +## Etapa 2: Converter PDF para o Formato PDF/X‑4 + +PDF/X‑4 é um subconjunto de PDF projetado para impressão e arquivamento confiáveis. A conversão garante que todas as fontes estejam incorporadas e que o arquivo esteja em conformidade com os padrões da indústria. + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**Por que escolher `ConvertErrorAction.Delete`?** Alguns PDFs legados contêm elementos (como anotações não suportadas) que de outra forma interromperiam a conversão. Excluí‑los mantém o processo fluido, mas você deve revisar a saída se precisar desses elementos preservados. + +### Opcional: Verificar Sucesso da Conversão + +Se quiser ter certeza extra, pode inspecionar o `PdfFormat` do documento após a conversão: + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## Etapa 3: Salvar o Arquivo PDF Convertido + +Agora que o documento está no formato PDF/X‑4, escreva‑o de volta ao disco. + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**Resultado que você verá:** Um novo arquivo chamado `Converted_PDFX4.pdf` aparece em `YOUR_DIRECTORY`. Abra‑lo com qualquer visualizador de PDF que suporte PDF/X‑4 (Adobe Acrobat, Foxit, etc.) e você notará que todas as fontes estão incorporadas e o documento está em conformidade com a especificação PDF/X‑4. + +![aspose pdf tutorial - converting PDF to PDF/X‑4](/images/aspose-pdf-conversion.png "aspose pdf tutorial showing PDF/X‑4 conversion result") + +*O texto alternativo da imagem inclui a palavra‑chave principal, atendendo aos requisitos de SEO.* + +## Exemplo Completo de Ponta a Ponta + +Juntando tudo, aqui está um aplicativo console autônomo que você pode copiar e colar em um novo projeto C#: + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +Execute o programa, e você deverá ver mensagens no console confirmando cada etapa. Se algo der errado, as mensagens de erro apontam para o estágio exato. + +## Perguntas Frequentes & Casos Limítrofes + +### E se eu precisar manter anotações? + +`ConvertErrorAction.Delete` remove objetos não suportados, incluindo algumas anotações. Troque para `ConvertErrorAction.Keep` se preservá‑las for crucial, mas teste a saída — algumas anotações ainda podem gerar avisos de conformidade. + +### Como lidar com PDFs grandes (centenas de MB)? + +Aspose.Pdf faz streaming do arquivo, então o uso de memória permanece modesto. Contudo, você pode querer aumentar os limites do `System.GC` ou processar o documento em partes (por exemplo, converter página por página) para arquivos extremamente grandes. + +### Posso converter vários arquivos em lote? + +Com certeza. Envolva a lógica de carregamento‑conversão‑salvamento em um loop `foreach` que itere sobre um diretório de PDFs. Lembre‑se de tratar exceções por arquivo para que um PDF com problema não interrompa todo o lote. + +### Isso funciona no .NET Core no Linux? + +Sim. Aspose.Pdf é multiplataforma. Basta garantir que o pacote NuGet `Aspose.Pdf` esteja referenciado e que você tenha os arquivos de fontes apropriados instalados no host Linux se precisar de renderização de texto. + +## Dicas Profissionais do Campo + +- **Defina a licença cedo**: `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` – isso remove a marca d'água de avaliação e aumenta o desempenho. +- **Valide a saída**: Use o `PdfFormatValidator` da Aspose para confirmar programaticamente a conformidade PDF/X‑4 antes de distribuir o arquivo. +- **Registre o tempo de conversão**: Lotes grandes se beneficiam ao medir o tempo de cada conversão (`Stopwatch`) para identificar regressões de desempenho. +- **Evite caminhos codificados**: Prefira arquivos de configuração ou variáveis de ambiente para `inputPath` e `outputPath` — isso torna o aplicativo portátil. + +## Conclusão + +Neste **Aspose PDF Tutorial** demonstramos um fluxo de trabalho limpo e de ponta a ponta para **how to use Aspose** para **load PDF document C#**, convertê‑lo para o padrão **PDF/X‑4** e **save the converted PDF**. O trecho de código é totalmente executável, explica o *porquê* de cada etapa e destaca armadilhas que você pode encontrar em projetos reais. + +Agora que você tem o básico, pode expandir a solução — processar dezenas de arquivos em lote, incorporar metadados personalizados ou integrar a conversão em uma API web. As possibilidades são amplas, e o Aspose.Pdf fornece as ferramentas para chegar lá rapidamente. + +Tem mais perguntas sobre processamento de PDF com Aspose? Deixe um comentário, explore a documentação oficial da Aspose ou experimente o código acima. Boa conversão! + +{{< /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-creation/_index.md b/pdf/portuguese/net/document-creation/_index.md index a04d7e336..aa77c3e1c 100644 --- a/pdf/portuguese/net/document-creation/_index.md +++ b/pdf/portuguese/net/document-creation/_index.md @@ -77,6 +77,12 @@ Um tutorial de código para Aspose.PDF Net ### [Criar documento PDF com Aspose.PDF – adicionar página, forma e salvar](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) Aprenda a criar um documento PDF, adicionar páginas e formas, e salvar o arquivo usando Aspose.PDF para .NET. +### [Criar documento PDF com Aspose.PDF – Guia passo a passo](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +Aprenda a criar um documento PDF usando Aspose.PDF passo a passo, com exemplos de código e melhores práticas. + +### [Criar documento PDF com Aspose.PDF – Guia completo em C#](./create-pdf-document-with-aspose-pdf-full-c-guide/) +Aprenda passo a passo como criar um documento PDF usando Aspose.PDF em C#, com exemplos completos de código. + ## Recursos adicionais - [Aspose.PDF para documentação da Net](https://docs.aspose.com/pdf/net/) diff --git a/pdf/portuguese/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/portuguese/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..8a87463b0 --- /dev/null +++ b/pdf/portuguese/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-06 +description: Crie documento PDF em C# usando Aspose.PDF – aprenda como adicionar páginas + em branco ao PDF, caixa de texto, widget e salvar o PDF rapidamente. +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: pt +og_description: Crie documento PDF em C# com Aspose.PDF. Este guia mostra como adicionar + páginas em branco ao PDF, caixa de texto, widget e como salvar o PDF. +og_title: Criar documento PDF com Aspose.PDF – Tutorial completo em C# +tags: +- pdf +- csharp +- aspose +- forms +title: Criar documento PDF com Aspose.PDF – Guia completo em C# +url: /pt/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Criar Documento PDF com Aspose.PDF – Guia Completo em C# + +Já precisou **criar documento pdf** do zero em um projeto .NET e se perguntou por onde começar? Você não está sozinho; muitos desenvolvedores encontram o mesmo obstáculo quando a primeira exigência diz “gerar um PDF preenchível com a mesma caixa de texto em três páginas.” A boa notícia? Com Aspose.PDF você pode gerar um PDF com aparência profissional em apenas algumas linhas. + +Neste tutorial vamos percorrer todo o processo: desde a inicialização de um novo PDF, **adicionando páginas em branco pdf**, inserindo uma **caixa de texto**, replicando-a com anotações **widget**, e finalmente **salvando o PDF** no disco. Ao final, você terá um arquivo pronto‑para‑usar chamado *MultiWidgetField.pdf* e uma compreensão sólida do motivo de cada etapa. + +## O que este Guia Cobre + +- Pré-requisitos que você precisa antes de digitar uma única linha de código. +- Criação passo a passo de um documento PDF usando Aspose.PDF para .NET. +- Como adicionar páginas em branco, um campo de formulário de caixa de texto e instâncias adicionais de widget. +- Dicas para lidar com armadilhas comuns (por exemplo, indexação de páginas, colisões de nomes de campos). +- Um programa C# completo, pronto para copiar e colar, que você pode executar hoje. + +Sem links externos de documentação, sem atalhos “veja a documentação da API”—tudo que você precisa está aqui. + +## Pré-requisitos + +Antes de mergulhar, certifique‑se de que você tem: + +1. **.NET 6.0** (ou qualquer versão posterior) instalado em sua máquina. +2. Uma licença ativa do **Aspose.PDF for .NET** ou uma chave de avaliação temporária. +3. Um ambiente de desenvolvimento como **Visual Studio 2022** ou **VS Code** com a extensão C#. + +É isso—nenhum outro requisito. + +## Etapa 1: Inicializar o Documento PDF e Adicionar Páginas em Branco + +A primeira coisa que você faz ao **criar documento pdf** programaticamente é instanciar um objeto `Document`. Pense nisso como abrir um caderno novinho em folha. Em seguida, você adiciona as páginas que precisa; no nosso caso, três páginas em branco. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**Por que isso importa:** Aspose.PDF trata as páginas como uma coleção baseada em zero internamente, mas sua API pública é baseada em 1, então `Pages[1]` é a primeira página que você acabou de adicionar. Adicionar páginas antecipadamente lhe dá uma tela para colocar campos de formulário posteriormente, e é muito mais barato do que inserir páginas dinamicamente depois que o documento já cresceu. + +> **Dica profissional:** Se você precisar de apenas uma página, pode pular o loop e chamar `pdfDocument.Pages.Add()` uma vez. Adicionar várias páginas em um loop mantém o código escalável. + +## Etapa 2: Definir um Campo de Formulário TextBox na Primeira Página + +Agora que temos três folhas em branco, vamos colocar uma **caixa de texto** na primeira. Um `TextBoxField` é um elemento de formulário que os usuários finais podem digitar quando o PDF é aberto no Acrobat Reader ou em qualquer visualizador de PDF que suporte formulários. + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**Por que as coordenadas do retângulo?** Aspose.PDF usa pontos (1/72 de polegada). O retângulo `(100, 700, 300, 730)` posiciona a caixa de texto aproximadamente na metade da página, 200 pt de largura e 30 pt de altura. Ajuste esses números para se adequar ao seu layout. + +> **Pergunta comum:** *Preciso definir a propriedade `Value`?* +> Não, é opcional. Deixá‑la vazia mostra um campo em branco; definir um valor padrão pode orientar o usuário. + +## Etapa 3: Adicionar Anotações Widget para o Mesmo Campo nas Páginas 2 e 3 + +Um **widget** é a representação visual de um campo de formulário em uma página específica. Por padrão, um campo aparece apenas na página onde foi criado. Para reutilizar a mesma caixa de texto em outras páginas, você anexa objetos `WidgetAnnotation` adicionais à coleção `Widgets` do campo. + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**Por que widgets?** Sem eles, o usuário veria a caixa de texto apenas na página 1, mesmo que o campo subjacente exista. Widgets permitem que você compartilhe um único campo lógico em várias páginas, garantindo que o texto inserido apareça em todos os lugares onde o campo é exibido. + +> **Caso extremo:** Se você precisar da caixa de texto em coordenadas diferentes em cada página, basta alterar os valores de `Rectangle` para cada widget. + +## Etapa 4: Registrar o Campo na Coleção de Formulários do Documento + +Aspose.PDF mantém um registro central de todos os campos de formulário. Adicionar o campo à coleção `Form` faz com que ele faça parte da estrutura de formulário interativo do PDF. + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +O segundo argumento (`"Comment"`) é o **nome totalmente qualificado** do campo. Ele deve ser único em todo o documento; caso contrário, Aspose lançará uma exceção. + +## Etapa 5: Salvar o PDF Resultante – Como Salvar PDF + +Finalmente, persistimos o documento em memória no disco. Esta é a parte **como salvar pdf** do tutorial. + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**Por que especificar um caminho absoluto?** Usar um caminho absoluto evita confusão sobre o diretório de trabalho, especialmente ao executar o programa a partir do depurador do Visual Studio. Se preferir um caminho relativo, apenas certifique‑se de que a pasta exista antes de chamar `Save`. + +### Resultado Esperado + +Abra *MultiWidgetField.pdf* no Adobe Acrobat Reader. Você verá a mesma caixa de texto nas páginas 1, 2 e 3. Digite algo no campo em qualquer página—o texto aparecerá instantaneamente nas outras páginas porque elas compartilham o mesmo campo de formulário subjacente. + +![Exemplo de Criação de Documento PDF mostrando uma caixa de texto em três páginas](https://example.com/placeholder-image.png "Exemplo de Criação de Documento PDF") + +*Texto alternativo da imagem: Exemplo de Criação de Documento PDF mostrando uma caixa de texto em três páginas.* + +## Exemplo Completo, Pronto‑para‑Executar + +Abaixo está o programa completo que você pode copiar para um novo projeto de console (`dotnet new console`) e executar. Todas as etapas já estão ordenadas, e o código inclui comentários para clareza. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +Execute o programa, navegue até `C:\Temp\`, e abra o PDF gerado. Você verá as três caixas de texto idênticas prontas para a entrada do usuário. + +## Variações Comuns & Casos de Borda + +| Cenário | O que Alterar | Por quê | +|----------|----------------|-----| +| **Tamanho diferente da caixa de texto em cada página** | Ajuste os valores de `Rectangle` para cada `WidgetAnnotation`. | Permite adaptar o campo a diferentes layouts. | +| **Campo somente leitura** | Defina `commentField.ReadOnly = true;`. | Impede que os usuários editem o conteúdo após o preenchimento inicial. | +| **Caixa de texto multilinha** | Defina `commentField.Multiline = true;` e aumente a altura do retângulo. | Permite comentários mais longos sem rolagem. | +| **Adicionar um segundo campo** | Crie outro `TextBoxField` (ou qualquer `FormField`) e repita as etapas 2‑4 com um novo nome. | Você pode coletar várias informações no mesmo PDF. | + +## Dicas Profissionais & Armadilhas a Evitar + +- **Indexação de Páginas:** Lembre‑se de que `pdfDocument.Pages[1]` é a primeira página, não `[0]`. Misturar índices baseados em 0 e 1 leva a exceções “Index out of range”. +- **Colisões de Nomes de Campos:** Dois campos não podem compartilhar o mesmo nome totalmente qualificado. Se você receber um erro sobre nomes duplicados, verifique novamente a string que passa para `Form.Add`. +- **Licença vs. Avaliação:** A versão de avaliação adiciona uma marca d'água em cada página. Implante uma licença válida para removê‑la em produção. +- **Desempenho:** Adicionar centenas de páginas em um loop é aceitável, mas se você precisar gerar PDFs massivos (milhares de páginas), considere usar + +{{< /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-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/portuguese/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..6712a4ee5 --- /dev/null +++ b/pdf/portuguese/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-03-06 +description: Crie documento PDF usando Aspose.PDF em C#. Aprenda como adicionar página + PDF, desenhar retângulo PDF, adicionar forma PDF e controlar a espessura da borda + do retângulo — tudo em um único tutorial. +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: pt +og_description: Criar documento PDF em C# com Aspose.PDF. Este tutorial mostra como + adicionar página PDF, desenhar retângulo PDF, adicionar forma PDF e definir a espessura + da borda do retângulo. +og_title: Criar documento PDF com Aspose.PDF – Guia completo +tags: +- Aspose.PDF +- C# +- PDF generation +title: Criar documento PDF com Aspose.PDF – Guia passo a passo +url: /pt/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crie um Documento PDF com Aspose.PDF – Guia Passo a Passo + +Já precisou **criar um documento PDF** programaticamente e não sabia por onde começar? Você não está sozinho — muitos desenvolvedores enfrentam o mesmo obstáculo quando seus aplicativos precisam gerar faturas, relatórios ou certificados instantaneamente. + +A boa notícia é que, com Aspose.PDF para .NET, você pode fazer isso em poucas linhas e ainda aprender a **add page PDF**, **draw rectangle PDF**, **add shape PDF** e ajustar a **rectangle border thickness** enquanto isso. Vamos mergulhar. + +## O Que Você Vai Construir + +Ao final deste guia você terá um aplicativo console C# totalmente funcional que: + +1. **Cria um documento PDF** do zero. +2. **Adiciona um page PDF** ao documento. +3. **Desenha um rectangle PDF** naquela página. +4. **Valida** que o retângulo permanece dentro dos limites da página (**add shape PDF** passo). +5. Define uma **rectangle border thickness** personalizada. +6. Salva o resultado como `ShapeValidated.pdf`. + +Sem serviços externos, sem configurações misteriosas — apenas C# puro e Aspose.PDF. + +### Pré‑requisitos + +- .NET 6.0 ou superior (o código também funciona com .NET Framework 4.6+). +- Uma referência ao pacote NuGet `Aspose.Pdf`. Você pode adicioná‑lo via: + +```bash +dotnet add package Aspose.Pdf +``` + +- Um editor de texto ou IDE — Visual Studio, VS Code, Rider, o que preferir. + +> **Dica de especialista:** Se você estiver em uma máquina corporativa, verifique se o feed NuGet não está bloqueado; caso contrário, receberá um erro “Package not found”. + +--- + +## Crie o Documento PDF – Inicialize o Documento + +O primeiro passo é instanciar um objeto `Document`. Pense nele como a tela em branco onde cada página e forma viverão. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +Por que precisamos desse objeto? Ele representa todo o arquivo PDF na memória, dando acesso à coleção `Pages`, metadados e configurações de segurança. Depois de ter o documento, você pode começar a empilhar páginas, textos, imagens e gráficos vetoriais. + +--- + +## Adicione uma Página ao PDF (add page pdf) + +Um PDF sem páginas é essencialmente um arquivo vazio — sem sentido. Adicionar uma página é simples, e você pode personalizar seu tamanho se desejar. Aqui usamos o tamanho padrão A4. + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +O método `Add()` devolve uma nova instância `Page` que já faz parte da coleção `Pages`, permitindo que você comece a desenhar nela imediatamente. Em cenários reais você pode percorrer um conjunto de dados e adicionar dezenas de páginas; a mesma chamada de uma única linha funciona em cada iteração. + +--- + +## Desenhe um Retângulo (draw rectangle pdf) + +Agora a parte visual: um retângulo com borda visível. É aqui que **draw rectangle pdf** entra em ação. + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +Alguns pontos a observar: + +- `Rect` usa pontos (1 pt ≈ 1/72 polegada). As coordenadas definem os cantos inferior‑esquerdo e superior‑direito, permitindo controlar largura e altura com precisão. +- `BorderInfo` permite especificar quais lados recebem linha e a espessura da linha. Aqui aplicamos uma linha de 2 pontos a **todos** os lados, dando ao retângulo um aspecto limpo e uniforme. + +--- + +## Valide a Posicionamento da Forma (add shape pdf) + +Antes de confirmar o retângulo na página, é prudente verificar se ele cabe dentro da área imprimível da página. Aspose.PDF oferece um método auxiliar útil para isso. + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +Por que se preocupar? Se você posicionar acidentalmente uma forma parcialmente fora da tela, o visualizador de PDF pode recortá‑la, gerando uma experiência confusa ao usuário. Essa cláusula de proteção **add shape pdf** garante que você só adicione conteúdo que será totalmente visível. + +--- + +## Salve o PDF (add page pdf) + +Por fim, persistimos o documento em memória no disco. Você pode escolher qualquer local onde tenha permissão de escrita. + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +Depois de executar o programa, abra `ShapeValidated.pdf` — você deverá ver uma única página com um retângulo bem contornado, centralizado aproximadamente no meio. + +--- + +## Resultado Esperado + +Ao abrir o PDF gerado, você verá: + +- Uma página tamanho A4. +- Um retângulo cujo canto inferior‑esquerdo começa em (50 pt, 50 pt) e cujo canto superior‑direito termina em (600 pt, 800 pt). +- Uma borda **de 2 pontos** de espessura ao redor do retângulo. + +Se o console exibiu “PDF created successfully!”, o código foi executado sem falhar na verificação de limites. + +![Diagram showing how to create PDF document with Aspose.PDF](https://example.com/diagram-create-pdf.png "Create PDF Document – visual overview") + +*O texto alternativo da imagem inclui a palavra‑chave principal para atender aos requisitos de SEO.* + +--- + +## Perguntas Frequentes & Casos de Borda + +### E se eu precisar de um tamanho de página diferente? + +Substitua a página padrão por um tamanho customizado: + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### Como altero a cor da borda? + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### Posso adicionar múltiplas formas na mesma página? + +Com certeza. Basta repetir o bloco **add shape pdf** com um novo `RectangleShape` (ou outras subclasses de `Shape`) e ajustar as coordenadas de `Rect` conforme necessário. + +### E se o retângulo ultrapassar os limites da página? + +A chamada `IsShapeWithinBounds` retornará `false`. Em código de produção você pode querer redimensionar a forma automaticamente: + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +--- + +## Recapitulação + +Percorremos todo o ciclo de vida de **criar um documento PDF** com Aspose.PDF: + +1. Inicialize o `Document`. +2. **Add a page PDF** usando `Pages.Add()`. +3. **Draw a rectangle PDF** via `RectangleShape`. +4. **Add shape PDF** somente após confirmar que permanece dentro da página. +5. Controle a **rectangle border thickness** com `BorderInfo`. +6. Salve o arquivo. + +Esse é todo o fluxo em menos de 60 linhas de código. + +--- + +## O Que Vem a Seguir? + +- **Add text**: Use `TextFragment` para colocar títulos ou rótulos dentro do retângulo. +- **Insert images**: A classe `Image` permite incorporar logotipos ou gráficos. +- **Create tables**: Ideal para faturas ou relatórios de dados. +- **Apply security**: Proteja o PDF com senha se ele contiver **dados sensíveis**. + +Cada um desses tópicos se baseia nos fundamentos abordados aqui, então você está bem posicionado para explorar cenários mais avançados de geração de PDFs. + +--- + +### Continue Experimentando + +Não pare no único retângulo — brinque com diferentes formas, cores e estilos de linha. A API Aspose.PDF é rica, e quanto mais você experimentar, mais confortável ficará. Se encontrar algum obstáculo, a documentação oficial da Aspose é um ótimo recurso, mas lembre‑se de que o código acima é uma solução completa, pronta para copiar e colar e que você pode executar hoje. + +Feliz codificação, e que seus PDFs sempre sejam renderizados exatamente como você imaginou! + +{{< /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 729d518f6..3101ca929 100644 --- a/pdf/portuguese/net/document-manipulation/_index.md +++ b/pdf/portuguese/net/document-manipulation/_index.md @@ -120,7 +120,7 @@ Aprenda a adicionar facilmente uma página em branco ao final do seu PDF usando Aprenda a adicionar e personalizar facilmente a numeração de páginas em documentos PDF usando o Aspose.PDF para .NET. Este guia completo aborda instalação, opções de personalização e dicas de desempenho. ### [Como adicionar e remover JavaScript em PDFs usando Aspose.PDF .NET: um guia completo](./aspose-pdf-net-add-remove-javascript-pdfs/) -Aprenda a adicionar e remover funções JavaScript em seus documentos PDF usando o Aspose.PDF para .NET. Aprimore a interatividade e a funcionalidade dos seus documentos com nosso guia passo a passo. +Aprenda a adicionar e remover funções JavaScript em seus documentos PDF usando o Aspose.PDF .NET. Aprimore a interatividade e a funcionalidade dos seus documentos com nosso guia passo a passo. ### [Como anexar vários arquivos PDF usando Aspose.PDF para .NET: um guia passo a passo](./append-multiple-pdf-files-aspose-net/) Aprenda como anexar eficientemente vários arquivos PDF em um único documento usando o Aspose.PDF para .NET, com etapas detalhadas e exemplos de código. @@ -156,7 +156,7 @@ Aprenda a contar páginas em um PDF usando o Aspose.PDF para .NET com este tutor Aprenda a personalizar PDFs usando o Aspose.PDF para .NET, definindo margens de página e desenhando linhas. Perfeito para desenvolvedores que buscam aprimorar a formatação de documentos. ### [Como excluir páginas de um PDF usando Aspose.PDF .NET: um guia completo](./delete-pdf-pages-aspose-net/) -Aprenda a excluir facilmente páginas específicas de um documento PDF usando o Aspose.PDF para .NET. Este guia passo a passo aborda configuração, implementação e práticas recomendadas. +Aprenda a excluir facilmente páginas específicas de um documento PDF usando o Aspose.PDF .NET. Este guia passo a passo aborda configuração, implementação e práticas recomendadas. ### [Como desabilitar a compactação de arquivos no Aspose.PDF para .NET: um guia passo a passo](./disable-file-compression-aspose-pdf-net-guide/) Aprenda a desabilitar a compactação de arquivos em PDFs usando o Aspose.PDF para .NET com este guia completo. Aprimore suas habilidades de manuseio de documentos hoje mesmo. @@ -188,6 +188,9 @@ Aprenda como remover com eficiência todos os marcadores dos seus documentos PDF ### [Como remover todo o texto de PDFs usando Aspose.PDF .NET para manipulação de documentos](./remove-text-aspose-pdf-net-tutorial/) Aprenda a remover todo o texto de um PDF com eficiência usando o Aspose.PDF .NET. Perfeito para proteger dados confidenciais ou organizar documentos. +### [Como censurar PDF em C# com Aspose PDF – Guia completo](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) +Aprenda a remover ou ocultar informações confidenciais de PDFs usando Aspose PDF para .NET em C# com este guia passo a passo. + ### [Como remover ações de abertura de PDF usando Aspose.PDF para .NET: um guia completo](./remove-pdf-open-action-aspose-dotnet-guide/) Aprenda a eliminar ações de abertura indesejadas de arquivos PDF usando o Aspose.PDF para .NET. Este guia fornece instruções passo a passo e práticas recomendadas. @@ -207,7 +210,7 @@ Aprenda a reduzir com eficiência os espaços em branco de documentos PDF usando Aprenda a atualizar links em arquivos PDF programaticamente usando o Aspose.PDF para .NET. Automatize atualizações de links de forma eficiente com este guia passo a passo. ### [Como atualizar a cor do texto do link PDF usando Aspose.PDF .NET: um guia completo](./update-pdf-link-text-color-aspose-net/) -Aprenda a alterar a cor do texto dos links em PDFs facilmente usando o Aspose.PDF para .NET. Este guia completo aborda dicas de instalação, implementação e otimização. +Aprenda a alterar a cor do texto dos links em PDFs facilmente usando o Aspose.PDF .NET. Este guia completo aborda dicas de instalação, implementação e otimização. ### [Inserir páginas em PDF usando Aspose.PDF para .NET: um guia completo para manipulação de documentos](./insert-pages-pdf-aspose-dotnet-guide/) Aprenda a inserir páginas em um PDF usando o Aspose.PDF para .NET. Este guia passo a passo abrange tudo, da configuração à implementação, perfeito para desenvolvedores em C#. @@ -216,7 +219,7 @@ Aprenda a inserir páginas em um PDF usando o Aspose.PDF para .NET. Este guia pa Aprenda a inserir páginas em um PDF usando o Aspose.PDF para .NET com este guia passo a passo. Simplifique seu fluxo de trabalho com documentos com eficiência. ### [Inserir uma página em branco em PDF usando Aspose.PDF .NET: um guia completo](./aspose-pdf-net-insert-empty-page/) -Aprenda a inserir páginas vazias em documentos PDF com facilidade usando o Aspose.PDF para .NET. Siga este guia passo a passo para aprimorar suas habilidades de manipulação de documentos. +Aprenda a inserir páginas vazias em documentos PDF com facilidade usando o Aspose.PDF .NET. Siga este guia passo a passo para aprimorar suas habilidades de manipulação de documentos. ### [Domine o método MakeNUp do Aspose.PDF .NET para layouts de PDF eficientes](./aspose-pdf-net-make-nup-method-pdf-layout/) Aprenda a reorganizar com eficiência várias páginas de PDF em novos layouts usando o método MakeNUp do Aspose.PDF .NET. Ideal para boletins informativos, folhetos e relatórios. @@ -306,7 +309,7 @@ Aprenda a dividir um arquivo PDF em páginas individuais usando o Aspose.PDF par Aprenda a dividir páginas de PDF em arquivos separados usando o Aspose.PDF para .NET. Este guia completo aborda dicas de configuração, implementação e otimização. ### [Dividir e Criar Arquivos PDF Usando Aspose.PDF .NET | Guia de Manipulação de Documentos](./split-create-pdf-aspose-pdf-net/) -Aprenda a dividir PDFs de várias páginas e criar novos arquivos PDF usando o Aspose.PDF para .NET. Siga este guia completo com exemplos de código. +Aprenda a dividir PDFs de várias páginas e criar novos arquivos PDF usando o Aspose.PDF .NET. Siga este guia completo com exemplos de código. ### [Guia definitivo para manipulação de PDF com Aspose.PDF .NET: carregue, salve e substitua texto com eficiência](./master-pdf-manipulation-aspose-pdf-net/) Aprenda a dominar a manipulação de PDFs usando o Aspose.PDF para .NET. Este guia aborda como carregar, salvar e substituir texto em PDFs, ideal para desenvolvedores que buscam eficiência. diff --git a/pdf/portuguese/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/portuguese/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..b53b3b50e --- /dev/null +++ b/pdf/portuguese/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,246 @@ +--- +category: general +date: 2026-03-06 +description: Aprenda a redigir PDF usando Aspose PDF em C#. Este guia passo a passo + mostra como carregar um documento PDF em C#, acessar a primeira página do PDF e + remover a imagem do PDF. +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: pt +og_description: Como remover informações de um PDF rapidamente com Aspose PDF em C#. + Carregue o documento PDF, acesse a primeira página do PDF e remova a imagem do PDF + em apenas algumas linhas de código. +og_title: Como Redigir PDF em C# – Tutorial de PDF Aspose +tags: +- Aspose PDF +- C# +- PDF Redaction +title: Como Redigir PDF em C# com Aspose PDF – Guia Completo +url: /pt/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como Redigir PDF em C# com Aspose PDF – Guia Completo + +Já se perguntou **como redigir PDF** arquivos sem esforço? Talvez você tenha recebido um contrato que esconde um logotipo confidencial, ou um relatório que ainda mostra uma imagem de espaço reservado que você precisa apagar. Nesses momentos, você desejará uma maneira confiável e programática de remover esse conteúdo — sem precisar de truques manuais do Acrobat. + +Neste tutorial, percorreremos uma solução concisa e de ponta a ponta que **loads PDF document C#**, **access first PDF page**, e então **remove image from PDF** usando a poderosa **use Aspose PDF** library. Ao final, você terá um PDF totalmente redigido pronto para distribuição e entenderá por que cada linha de código importa. + +> **Pro tip:** Aspose PDF funciona com .NET Framework 4.6+ e .NET Core 3.1+, então você está coberto, seja em Windows, Linux ou macOS. + +![exemplo de como redigir pdf](redact-pdf-before-after.png){alt="exemplo de como redigir pdf"} + +## O que você precisará + +- **Aspose.PDF for .NET** (pacote NuGet mais recente) +- Um **ambiente de desenvolvimento C#** (Visual Studio, Rider ou VS Code) +- Um PDF de exemplo que contém um recurso de imagem que você deseja apagar (chamaremos de `Sensitive.pdf`) + +Sem ferramentas de terceiros adicionais, sem OCR, apenas código puro. + +## Etapa 1: Load PDF Document C# – O Primeiro Passo + +Antes de poder redigir qualquer coisa, você precisa trazer o arquivo para a memória. A classe `Document` é o ponto de entrada para toda operação do Aspose PDF. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**Por que isso importa:** +`Document` analisa toda a estrutura do PDF, construindo um modelo de objetos que permite manipular páginas, recursos e anotações. Se o arquivo não puder ser carregado (caminho errado, PDF corrompido), uma exceção será lançada imediatamente — assim você sabe rapidamente que algo está errado. + +### Armadilha Comum + +> *“Eu recebo um `FileNotFoundException` mesmo que o arquivo exista.”* +> Certifique‑se de que o caminho seja absoluto ou que o diretório de trabalho do seu projeto corresponda à localização de `Sensitive.pdf`. Usar `Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")` pode ajudar a evitar dores de cabeça com caminhos relativos. + +--- + +## Etapa 2: Access First PDF Page – Onde a Imagem Está + +As imagens são armazenadas como recursos por página. Em muitos PDFs simples, a primeira página é a culpada, então vamos obtê‑la. + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**Por que isso importa:** +Aspose PDF usa um índice baseado em 1 para páginas, o que é um pouco incomum comparado à maioria das coleções .NET. Acessar a página errada pode significar que você redige o conteúdo errado — ou pior, deixa a imagem sensível intocada. + +### Consideração de Caso Limite + +Se o seu documento não tem páginas (um PDF vazio), tentar `pdfDocument.Pages[1]` lançará um `IndexOutOfRangeException`. Uma verificação rápida pode salvar você: + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +--- + +## Etapa 3: Remove Image from PDF – Redigir o Recurso + +Aspose PDF permite excluir um recurso pelo nome. A maioria das imagens são nomeadas `Im1`, `Im2`, etc., mas você pode inspecionar `firstPage.Resources.Images` para confirmar. + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**Por que isso importa:** +`RedactResource` remove a imagem *e* quaisquer referências a ela na página, garantindo que o espaço visual seja preenchido com uma área em branco ao invés de um link quebrado. É uma forma limpa e padrão de PDF para apagar conteúdo. + +### Como Encontrar o Nome Correto da Imagem + +Se você não tem certeza se a imagem se chama `"Im1"`: + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +Execute este trecho, verifique a saída no console e substitua `"Im1"` pela chave real que aparecer. + +--- + +## Etapa 4: Save the Redacted PDF – Concluir o Trabalho + +Agora que a imagem indesejada foi removida, escreva as alterações de volta ao disco. + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**Por que isso importa:** +Salvar em um arquivo **novo** mantém o original intacto — uma rede de segurança caso você precise reverter. Se precisar sobrescrever, basta apontar o método `Save` para o caminho original, mas esteja ciente de que a operação é irreversível. + +### Verificando o Resultado + +Abra `Redacted.pdf` em qualquer visualizador de PDF. O local da imagem deve aparecer em branco, e o resto do documento deve parecer idêntico ao original. Se o layout da página parecer deslocado, verifique novamente se você removeu apenas o recurso pretendido e não um XObject compartilhado. + +--- + +## Exemplo Completo em Funcionamento + +Juntando tudo, aqui está o programa completo, pronto‑para‑executar: + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**Saída esperada** (no console): + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +Quando você abrir `Redacted.pdf`, a imagem que era `Im1` terá desaparecido, deixando uma página limpa. + +--- + +## Perguntas Frequentes + +### Isso funciona com PDFs criptografados? + +Se o PDF de origem estiver protegido por senha, passe a senha ao construtor `Document`: + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### E se a imagem aparecer em várias páginas? + +Percorra cada página e chame `RedactResource` com o mesmo nome de imagem (ou descubra o nome por página). Exemplo: + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### Posso redigir texto da mesma forma? + +Sim — use `page.Contents.RedactText("confidential")` ou utilize a classe `Redactor` para padrões mais avançados. Isso seria um tutorial completo por si só, mas o princípio reflete o que fizemos para imagens. + +--- + +## Conclusão – O que Conquistamos + +Respondemos **como redigir PDF** arquivos programaticamente ao: + +1. **Loading PDF document C#** com Aspose PDF. +2. **Accessing first PDF page** para localizar o recurso alvo. +3. **Removing image from PDF** via `RedactResource`. +4. **Saving** a versão limpa com segurança. + +Esta abordagem é rápida, repetível e funciona em trabalhos em lote — perfeita para pipelines de conformidade ou geração automática de relatórios. + +Se você está pronto para avançar, considere explorar: + +- **Batch redaction** em toda uma pasta de PDFs. +- **Redacting text** com padrões regex usando `Redactor`. +- **Embedding a watermark** após a redação para sinalizar “sanitizado”. + +Experimente, ajuste a lógica de nome de imagem para seus próprios arquivos, + +{{< /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/performance-optimization/_index.md b/pdf/portuguese/net/performance-optimization/_index.md index f8e4f4ff6..5b586a7ac 100644 --- a/pdf/portuguese/net/performance-optimization/_index.md +++ b/pdf/portuguese/net/performance-optimization/_index.md @@ -50,6 +50,9 @@ Domine a arte de converter arquivos SVG em PDFs com precisão e eficiência usan ### [Desincorporar fontes em PDFs usando Aspose.PDF para .NET: reduza o tamanho do arquivo e melhore o desempenho](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) Aprenda a desincorporar fontes de seus arquivos PDF usando o Aspose.PDF para .NET. Otimize o desempenho do PDF, reduza o tamanho do arquivo e melhore o tempo de carregamento com este guia passo a passo. +### [Como comprimir PDF com Aspose.PDF – guia rápido](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) +Aprenda a comprimir arquivos PDF rapidamente usando Aspose.PDF, reduzindo o tamanho e mantendo a qualidade. + ## Recursos adicionais - [Aspose.PDF para documentação da Net](https://docs.aspose.com/pdf/net/) diff --git a/pdf/portuguese/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/portuguese/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..c07971b18 --- /dev/null +++ b/pdf/portuguese/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,204 @@ +--- +category: general +date: 2026-03-06 +description: Aprenda a comprimir PDF instantaneamente usando Aspose.Pdf. Este guia + mostra como reduzir o tamanho do arquivo PDF com compressão sem perdas. +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: pt +og_description: Como comprimir PDF usando Aspose.Pdf? Siga este tutorial passo a passo + para reduzir o tamanho do arquivo PDF, alcançar compressão de PDF sem perdas e salvar + arquivos PDF otimizados. +og_title: como comprimir PDF com Aspose.Pdf – guia rápido +tags: +- pdf +- aspnet +- csharp +title: como compactar PDF com Aspose.Pdf – guia rápido +url: /pt/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# como compactar pdf com Aspose.Pdf – guia rápido + +Já se perguntou **como compactar pdf** sem transformá‑los em uma bagunça borrada? Você não está sozinho. A maioria dos desenvolvedores encontra um obstáculo quando precisam **reduzir o tamanho do arquivo pdf** para anexos de e‑mail, uploads na web ou limites de armazenamento, mas temem perder a qualidade da imagem. + +Neste tutorial vamos percorrer um exemplo completo, pronto‑para‑executar, que mostra exatamente **como compactar pdf** usando o otimizador interno do Aspose.Pdf. Ao final, você saberá como **diminuir o tamanho do arquivo pdf**, manter suas imagens nítidas com **compressão pdf sem perdas**, e finalmente **salvar pdf otimizado** que funciona perfeitamente em qualquer visualizador. + +## O que você aprenderá + +- Carregar um PDF pesado (por exemplo, cheio de imagens de alta resolução) na memória. +- Aplicar o otimizador do Aspose.Pdf com suas configurações padrão sem perdas. +- Persistir o resultado como um novo arquivo, menor. +- Dicas para ajustar a compressão caso precise de uma redução ainda maior. + +Sem ferramentas externas, sem truques misteriosos de linha de comando — apenas código C# limpo e explicações claras. + +## Pré‑requisitos + +Antes de mergulharmos, certifique‑se de que você tem: + +| Requisito | Por que é importante | +|-----------|----------------------| +| .NET 6.0 ou posterior (ou .NET Framework 4.6+) | O Aspose.Pdf oferece suporte a ambos; runtimes mais recentes proporcionam melhor desempenho. | +| Pacote NuGet Aspose.Pdf for .NET (`Aspose.Pdf`) | A classe `Document` está aqui. | +| Um PDF com imagens grandes (por exemplo, `HeavyImages.pdf`) | Fornece algo concreto para reduzir. | +| Visual Studio, Rider ou qualquer editor C# de sua preferência | Conforto é fundamental — escolha o que lhe parecer mais natural. | + +> **Dica de especialista:** Se você estiver em um pipeline CI/CD, adicione a referência NuGet no seu `.csproj` para que a compilação nunca a esqueça. + +```xml + + + +``` + +## Etapa 1: Carregar o PDF que você deseja compactar + +Primeiro precisamos de um objeto `Document` que aponte para o arquivo fonte. Pense nisso como abrir um livro antes de começar a editar os capítulos. + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*Por que isso importa:* Carregar o arquivo dá ao Aspose.Pdf a oportunidade de ler todos os recursos incorporados (imagens, fontes, etc.). Sem essa etapa não há nada para **diminuir o tamanho do arquivo pdf**. + +## Etapa 2: Aplicar compressão PDF sem perdas + +O Aspose.Pdf vem com um método `Optimize` que, por padrão, executa uma rotina de **compressão pdf sem perdas**. Ele elimina objetos redundantes, recomprime imagens mantendo a mesma fidelidade visual e remove fontes não utilizadas. + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*Por que isso importa:* O otimizador padrão foi projetado para **diminuir o tamanho do arquivo pdf** preservando cada pixel. Se mais tarde você decidir tolerar uma leve perda de qualidade, o `OptimizationOptions` comentado permite trocar alguns kilobytes a mais por velocidade. + +## Etapa 3: Salvar o PDF otimizado + +Agora que o documento está mais enxuto, gravamos em um novo arquivo. Manter o original intacto é um bom hábito, especialmente ao testar diferentes configurações. + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +Após a gravação, compare os tamanhos dos arquivos: + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +Você deverá observar uma queda perceptível — frequentemente **30‑70 %** dependendo de quantas imagens de alta resolução estavam no original. + +![how to compress pdf illustration](image.png "how to compress pdf") + +*Texto alternativo da imagem:* como compactar pdf – antes e depois da otimização + +## Avançado: Ajustando a compressão para cenários específicos + +Embora o otimizador padrão seja ótimo para a maioria dos casos, às vezes é necessário **diminuir ainda mais o tamanho do arquivo pdf**: + +| Cenário | Configuração a ajustar | Efeito | +|----------|-----------------------|--------| +| PDFs com muitas imagens raster | `CompressImages = true` + `ImageQuality` menor (ex.: 70) | Reduz a contagem de bytes da imagem, leve perda visual. | +| PDFs contendo fontes duplicadas | `RemoveUnusedObjects = true` | Elimina fontes que não são referenciadas. | +| PDFs com metadados volumosos | `RemoveMetadata = true` | Remove blocos XML/metadados ocultos. | + +Você pode combinar essas opções em um objeto `OptimizationOptions` e passá‑lo para `pdfDoc.Optimize(options)`. + +## Perguntas comuns & casos de borda + +**E se o PDF já estiver otimizado?** +O Aspose.Pdf ainda analisará o documento, mas a mudança de tamanho será mínima. Executar o otimizador em um arquivo já enxuto é seguro; não corromperá nada. + +**Posso compactar PDFs criptografados?** +Sim, mas você deve fornecer a senha antes de chamar `Optimize`. Exemplo: + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**E quanto aos PDFs com gráficos vetoriais?** +Objetos vetoriais já são leves, então o otimizador foca em imagens raster e metadados. Espere ganhos modestos para arquivos puramente vetoriais. + +## Exemplo completo, executável + +Abaixo está um aplicativo console autocontido que você pode copiar‑colar em um novo `.csproj`. Ele demonstra tudo o que foi discutido — desde o carregamento até a verificação. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +Execute o programa, abra `Optimized.pdf` em qualquer visualizador e você verá o mesmo layout de página, as mesmas imagens nítidas, porém um arquivo mais leve. Essa é a mágica da **compressão pdf sem perdas**. + +## Conclusão + +Cobremos **como compactar pdf** usando o otimizador interno do Aspose.Pdf, demonstramos um fluxo prático de **reduzir o tamanho do arquivo pdf**, e explicamos as razões subjacentes de cada passo. Seguindo o padrão de três etapas — carregar, otimizar, salvar — você pode **diminuir o tamanho do arquivo pdf** em tempo real, manter suas imagens intactas com **compressão pdf sem perdas**, e salvar **pdf otimizado** com confiança para consumo posterior. + +Pronto para o próximo desafio? Experimente encadear este otimizador com um script em lote para processar uma pasta inteira, ou brinque com o opcional `OptimizationOptions` para espremer aqueles últimos kilobytes. Os mesmos princípios se aplicam seja você quem desenvolve uma ferramenta desktop, uma API web ou um job batch no servidor. + +Tem mais dúvidas sobre manipulação de PDF, particularidades do Aspose.Pdf ou I/O de arquivos .NET? Deixe um comentário abaixo e vamos continuar a conversa. Boa compactação! + +{{< /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/programming-with-security-and-signatures/_index.md b/pdf/portuguese/net/programming-with-security-and-signatures/_index.md index eeb1ae3a7..05dc5f0dc 100644 --- a/pdf/portuguese/net/programming-with-security-and-signatures/_index.md +++ b/pdf/portuguese/net/programming-with-security-and-signatures/_index.md @@ -34,6 +34,8 @@ Este tutorial oferece uma visão geral detalhada de métodos e técnicas para ga | [Assinar com cartão inteligente usando assinatura de arquivo PDF](./sign-with-smart-card-using-pdf-file-signature/) | Aprenda a assinar arquivos PDF usando um cartão inteligente com o Aspose.PDF para .NET. Siga este guia passo a passo para assinaturas digitais seguras. | | [Assinar com cartão inteligente usando o campo de assinatura](./sign-with-smart-card-using-signature-field/) | Aprenda a assinar PDFs com segurança usando um cartão inteligente com o Aspose.PDF para .NET. Siga nosso guia passo a passo para uma implementação fácil. | | [Verificar assinaturas PDF em C# – Como ler arquivos PDF assinados](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) | Aprenda a ler e validar assinaturas digitais em PDFs usando C# e Aspose.PDF para .NET. | +| [Como Verificar Assinatura em PDF usando C# – Guia Completo da Aspose](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) | Aprenda a verificar assinaturas digitais em PDFs usando C# e Aspose.PDF para .NET. Guia passo a passo completo. | +| [Adicionar assinatura digital PDF em C# – Guia completo passo a passo](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) | Aprenda a adicionar assinaturas digitais a PDFs usando C# com o Aspose.PDF, seguindo um guia completo passo a passo. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/portuguese/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/portuguese/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..e4233c88f --- /dev/null +++ b/pdf/portuguese/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,258 @@ +--- +category: general +date: 2026-03-06 +description: Adicionar assinatura digital em PDF usando Aspose.PDF. Aprenda a criar + assinatura PKCS7 destacada e assinar PDF usando PFX com um callback personalizado. +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: pt +og_description: Adicione assinatura digital ao PDF rapidamente. Este guia mostra como + criar assinatura PKCS7 destacada e assinar PDF usando PFX em C#. +og_title: Adicionar Assinatura Digital em PDF no C# – Tutorial Completo de Programação +tags: +- Aspose.PDF +- C# +- Digital Signature +title: Adicionar Assinatura Digital em PDF no C# – Guia Completo Passo a Passo +url: /pt/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Adicionar Assinatura Digital PDF – Guia Completo Passo a Passo + +Já precisou **add digital signature pdf** arquivos mas não sabia por onde começar? Você não está sozinho; muitos desenvolvedores enfrentam o mesmo obstáculo quando a documentação exige uma assinatura legalmente vinculativa e a base de código só sabe gerar PDFs simples. + +Neste tutorial, percorreremos uma solução prática que permite **add digital signature pdf** documentos usando Aspose.PDF for .NET, criar uma assinatura PKCS#7 destacada e assinar o PDF com um certificado PFX — tudo em C# puro. Ao final, você terá um trecho pronto para executar, entenderá o “porquê” de cada chamada e saberá como adaptar a abordagem para casos extremos. + +## O que você aprenderá + +- Como carregar um PDF não assinado e prepará‑lo para assinatura. +- A mecânica de um **create pkcs7 detached signature** e por que você pode preferir uma assinatura destacada em vez de incorporada. +- Os passos exatos para **sign pdf using pfx** com um callback personalizado, proporcionando controle total sobre o processo criptográfico. +- Dicas para solucionar armadilhas comuns (certificado ausente, algoritmo de hash incorreto, etc.). + +### Pré‑requisitos + +| Requisito | Motivo | +|-------------|--------| +| .NET 6.0 ou posterior | Recursos modernos da linguagem e melhor gerenciamento de memória. | +| Aspose.PDF for .NET (pacote NuGet) | Fornece `PdfFileSignature`, `PKCS7Detached` e outras utilidades PDF. | +| Um arquivo PFX válido (`.pfx`) com chave privada | Necessário para o passo **sign pdf using pfx**. | +| Conhecimento básico de C# | O código é direto, mas entender declarações `using` ajuda. | + +> **Dica profissional:** Mantenha sua senha PFX fora do controle de versão — use variáveis de ambiente ou Azure Key Vault em produção. + +--- + +## Como Adicionar Assinatura Digital PDF com Aspose.PDF + +A seguir, dividimos o processo em cinco etapas digestíveis. Cada etapa inclui um trecho de código, uma explicação do *porquê* é importante e uma rápida verificação de sanidade. + +![Captura de tela de PDF assinado em um visualizador, mostrando um campo de assinatura visível](/images/add-digital-signature-pdf.png "exemplo de add digital signature pdf") + +### Etapa 1 – Carregar o Documento PDF Não Assinado + +Primeiro precisamos de um objeto `Document` que represente o PDF que você deseja assinar. Usar `using var` garante que o manipulador de arquivo seja liberado automaticamente. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**Por quê?** +Aspose trata um PDF como um grafo de objetos; carregá‑lo fornece acesso a páginas, anotações e ao fluxo de bytes interno que será posteriormente hashado para a assinatura. + +### Etapa 2 – Inicializar o Auxiliar PdfFileSignature + +`PdfFileSignature` é a classe que realmente aplica o envelope criptográfico. Ela funciona de mãos dadas com `PKCS7Detached`. + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**Por quê?** +Separar o assinante do documento permite reutilizar a mesma instância `Document` para outras operações (por exemplo, adicionar marcas d'água) antes de finalizar a assinatura. + +### Etapa 3 – Criar Assinatura PKCS#7 Destacada (Create PKCS7 Detached Signature) + +Uma **PKCS#7 detached signature** armazena apenas o hash do PDF, não o PDF em si. Isso é ideal para documentos grandes ou quando você precisa manter o arquivo original inalterado. + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**Por que um callback personalizado?** +Às vezes a chave de assinatura reside em um HSM ou Azure Key Vault, e você não pode extrair a chave privada diretamente. Ao fornecer `CustomSignHash` você entrega o hash ao serviço que possui a chave, mantendo o material privado seguro. + +**E se você não precisar de um callback personalizado?** +Você pode omitir `CustomSignHash`; o Aspose usará a chave privada dentro do PFX automaticamente. Contudo, a rota personalizada é mais flexível e atende aos requisitos de conformidade. + +### Etapa 4 – Aplicar a Assinatura a uma Página Específica (Sign PDF Using PFX) + +Agora realmente colocamos um campo de assinatura visível na página. O retângulo define a localização e o tamanho (em pontos). + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**Por que especificar um retângulo?** +Uma assinatura visível ajuda os usuários finais a perceber que o documento está assinado. Se você definir `isVisible` como `false`, a assinatura torna‑se invisível — ainda válida, mas mais difícil de descobrir. + +**Caso extremo:** Se o PDF não possuir páginas (arquivo vazio) a chamada lança `ArgumentOutOfRangeException`. Sempre verifique `pdfDocument.Pages.Count > 0` antes de assinar. + +### Etapa 5 – Salvar o PDF Assinado + +Finalmente, persista o documento assinado no disco. Você também pode transmiti‑lo diretamente para uma resposta no ASP.NET Core. + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**Dica de verificação:** Abra o arquivo resultante no Adobe Acrobat Reader. O painel de assinaturas deve mostrar um ícone verde de verificação (desde que o certificado seja confiável na máquina). + +--- + +## Exemplo Completo Funcional + +Juntando tudo, aqui está um programa de console autônomo que você pode copiar‑colar e executar (após ajustar caminhos e senhas). + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**Saída esperada:** O console imprime “✅ PDF signed successfully!” e o arquivo `CustomSigned.pdf` aparece na mesma pasta. Ao abrir, você verá um widget de assinatura nas coordenadas (100,100)-(300,200). + +--- + +## Perguntas Frequentes & Casos Extremos + +### E se meu PFX estiver protegido com um cartão inteligente? + +Use o delegate `CustomSignHash` para encaminhar o hash ao driver do cartão inteligente. O driver retornará os bytes da assinatura, e o Aspose os incorporará sem jamais expor a chave privada. + +### Posso assinar várias páginas de uma vez? + +Sim. Chame `pdfSigner.Sign` dentro de um loop, ajustando `pageNumber` e, opcionalmente, o retângulo para cada página. Lembre‑se de que cada chamada adiciona um objeto de assinatura separado; alguns visualizadores podem listá‑los individualmente. + +### Como mudar o algoritmo de hash? + +`PKCS7Detached` defaults to SHA‑256, but you can set `HashAlgorithm` property: + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +Certifique‑se de que seu provedor de assinatura suporte o algoritmo escolhido. + +### E se a cadeia de certificados não for confiável na máquina cliente? + +Inclua a cadeia completa no PFX, ou distribua o certificado raiz para o repositório de confiança do usuário final. Caso contrário, o Acrobat relatará “Signature is unknown”. + +### Uma assinatura destacada é compatível com PDF/A‑3? + +PDF/A‑3 requer assinaturas incorporadas, portanto uma PKCS#7 destacada pode não ser compatível. Nesse caso, remova o delegate `CustomSignHash` e deixe o Aspose lidar com a assinatura internamente, o que cria uma assinatura incorporada. + +--- + +## Boas Práticas para Produção + +1. **Nunca codifique senhas diretamente.** Recupere‑as de variáveis de ambiente ou de um gerenciador de segredos. +2. **Valide o PDF antes de assinar.** Arquivos corrompidos causam `PdfFileSignatureException`. +3. **Registre o algoritmo de hash e a impressão digital do certificado** para trilhas de auditoria. +4. **Teste com vários visualizadores de PDF** (Adobe Reader, Foxit, Chrome) para garantir que a assinatura apareça como esperado. +5. **Considere a marcação de tempo** adicionando uma solicitação TSA (Time‑Stamp Authority), o que reforça ainda mais a validade legal da assinatura. + +--- + +## Conclusão + +Acabamos de mostrar como **add digital signature pdf** arquivos usando Aspose.PDF, criar uma **PKCS#7 detached signature** e **sign pdf using pfx** com um callback personalizado. O exemplo completo funciona imediatamente, e as explicações dão a confiança necessária para ajustar o processo para HSMs, serviços de timestamp ou conformidade PDF/A. + +Em seguida, você pode explorar **signing multiple documents in batch**, integrar **Azure Key Vault** para armazenamento seguro de chaves, ou adicionar **visual customization** à aparência da assinatura. Cada um desses tópicos se baseia diretamente na fundação estabelecida aqui. + +Se você seguiu os passos, agora possui uma solução sólida e digna de citação que pode compartilhar com colegas — ou até referenciar em uma resposta de assistente alimentado por IA. Boa assinatura, e sinta‑se à vontade para deixar um comentário se algo não estiver totalmente claro! + +{{< /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/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/portuguese/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..8f6559c9d --- /dev/null +++ b/pdf/portuguese/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,200 @@ +--- +category: general +date: 2026-03-06 +description: Aprenda como verificar a assinatura em um PDF com Aspose PDF em C#. Verificação + de assinatura de PDF passo a passo, valide a assinatura do PDF e trate assinaturas + comprometidas. +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: pt +og_description: Como verificar assinatura em um PDF com Aspose PDF. Siga este guia + para realizar a verificação de assinatura de PDF, validar a assinatura de PDF e + detectar assinaturas comprometidas em C#. +og_title: Como Verificar Assinatura em PDF usando C# – Guia Completo da Aspose +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: Como Verificar Assinatura em PDF usando C# – Guia Completo da Aspose +url: /pt/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como Verificar Assinatura em PDF usando C# – Guia Completo da Aspose + +Já se perguntou **como verificar assinatura** em um PDF sem perder a cabeça? Você não está sozinho. Muitos desenvolvedores esbarram em um obstáculo quando precisam de **verificação de assinatura PDF** por motivos de conformidade ou auditoria, e a abordagem usual de “apenas confiar na biblioteca” pode dar errado. + +Neste tutorial vamos percorrer uma solução prática, de ponta a ponta, que não só **valida assinatura PDF** como também informa se a assinatura foi adulterada. Usaremos a biblioteca **Aspose PDF**, o que significa que o código funciona em .NET 6+, .NET Framework 4.6+ e até .NET Core. Ao final você terá um trecho pronto‑para‑executar que pode ser inserido em qualquer projeto C#. + +## O que Você Precisa + +- Pacote NuGet **Aspose.Pdf** (versão mais recente no momento da escrita – 23.12). +- Ambiente de desenvolvimento .NET (Visual Studio, Rider ou VS Code). +- Um PDF assinado (vamos chamá‑lo de `Signed.pdf`). +- Conhecimento básico de C# – nada sofisticado, apenas as declarações `using` habituais e I/O via `Console`. + +É só isso. Sem serviços extras, sem arquivos de configuração obscuros. Pronto? Vamos começar. + +![diagrama de como verificar assinatura](image.png "como verificar assinatura") + +## Etapa 1: Configurar Seu Projeto para Verificação de Assinatura PDF + +Antes de chamar qualquer API da Aspose, você precisa referenciar a biblioteca. Abra seu terminal ou o Package Manager Console e execute: + +```bash +dotnet add package Aspose.Pdf +``` + +Ou, se preferir a interface gráfica, procure por **Aspose.Pdf** no NuGet Package Manager e instale. Esta etapa é crucial porque, sem o assembly **aspose pdf signature**, você não conseguirá acessar a classe `PdfFileSignature` mais adiante. + +> **Dica de especialista:** Alveje .NET 6 ou superior para obter o melhor desempenho e evitar avisos de compatibilidade legada. + +## Etapa 2: Carregar o Documento PDF + +Com o pacote instalado, podemos carregar o PDF que queremos analisar. A classe `Document` representa todo o arquivo na memória. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**Por que isso importa:** Carregar o documento nos dá acesso às suas estruturas internas, incluindo os campos de assinatura. Se o arquivo estiver ausente ou corrompido, `Document` lançará uma exceção, que você pode capturar para oferecer uma experiência de usuário mais elegante. + +## Etapa 3: Criar o Objeto Aspose PdfFileSignature + +Com o documento em mãos, o próximo passo é instanciar `PdfFileSignature`. Esta classe fachada sabe como ler, verificar e manipular assinaturas digitais incorporadas em PDFs. + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**Explicação:** O construtor `PdfFileSignature` recebe o `Document` carregado. Internamente ele analisa o dicionário de assinaturas, tornando disponíveis métodos como `VerifySignature` e `IsSignatureCompromised`. + +## Etapa 4: Verificar a Integridade da Assinatura + +O coração da **verificação de assinatura PDF** é o método `VerifySignature`. Ele retorna `true` se o hash criptográfico corresponder ao valor armazenado e a cadeia de certificados for confiável (desde que você tenha configurado um gerenciador de confiança, o que omitiremos por brevidade). + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +Se houver múltiplas assinaturas, basta alterar o índice (`0`, `1`, …). O método verifica tanto a integridade quanto a confiança de uma só vez, razão pela qual ele é a escolha padrão na maioria dos cenários. + +## Etapa 5: Detectar uma Assinatura Comprometida + +Mesmo uma assinatura “válida” pode estar comprometida se o documento for alterado após a assinatura. A Aspose fornece `IsSignatureCompromised` para detectar esse caso sutil. + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**Quando usar:** Suponha que um PDF seja assinado e, depois, um usuário adicione um comentário ou altere uma página. O hash mudará, e `IsSignatureCompromised` retornará `true` enquanto `VerifySignature` ainda pode ser `true` se o certificado em si estiver ok. Verificar ambas as bandeiras fornece uma visão completa. + +## Etapa 6: Interpretar os Resultados + +Agora temos dois booleanos: `isSignatureValid` e `isSignatureCompromised`. Vamos transformá‑los em uma saída amigável no console. + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### Saída Esperada + +| Cenário | Saída no Console | +|-----------------------------------------|--------------------------------------| +| Válida e não comprometida | `Signature OK` | +| Válida mas comprometida (documento alterado) | `Signature compromised!` | +| Inválida (certificado não confiável, hash divergente) | `Signature verification failed` | + +Essa tabela ajuda a mapear rapidamente os resultados booleanos para mensagens legíveis. + +## Exemplo Completo Funcionando + +Juntando tudo, aqui está o programa completo, pronto‑para‑executar: + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +Copie, cole, ajuste o `pdfPath` e execute. Se tudo estiver configurado corretamente, você verá uma das três mensagens listadas acima. + +## Armadilhas Comuns e Dicas para Verificação de Assinatura PDF + +| Problema | Por que Acontece | Como Corrigir / Evitar | +|----------|------------------|------------------------| +| **Licença Aspose ausente** | A avaliação gratuita adiciona marca d'água e pode limitar algumas chamadas de API. | Registre uma licença (`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`). | +| **Múltiplas assinaturas, índice errado** | Você pode estar verificando a assinatura errada, gerando falsos negativos. | Percorra `signatureVerifier.GetSignatureCount()` e inspecione cada uma. | +| **Cadeia de certificados não confiável** | `VerifySignature` falha se a CA raiz não estiver no repositório confiável. | Adicione a CA de assinatura ao repositório Trusted Root do Windows ou configure um `CertificateValidator` personalizado. | +| **Arquivo bloqueado por outro processo** | Abrir um PDF que ainda está aberto em outro lugar pode gerar `IOException`. | Use um `FileStream` com `FileShare.ReadWrite` ou copie para um arquivo temporário primeiro. | +| **Caminho do PDF incorreto** | Um simples erro de digitação resulta em `FileNotFoundException`. | Valide o caminho com `File.Exists(pdfPath)` antes de carregar. | + +### Casos Limítrofes que Você Pode Encontrar + +- **Assinaturas destacadas**: Alguns PDFs armazenam assinaturas externamente. O `PdfFileSignature` da Aspose atualmente suporta apenas assinaturas incorporadas. +- **Assinaturas com carimbo de tempo**: Se precisar validar a autoridade de carimbo de tempo (TSA), será necessário chamar `VerifySignature` com um objeto `VerificationOptions` customizado – fora do escopo deste guia rápido, mas importante para projetos com alta exigência de conformidade. + +## Próximos Passos – Expandindo Sua Lógica de Validação + +Agora que você dominou o básico de **como verificar assinatura**, pode querer: + +1. **Validar assinatura PDF** contra uma lista de certificados confiáveis (ex.: PKI corporativa). +2. **Exportar detalhes da assinatura** (nome do assinante, hora da assinatura, impressão digital do certificado) usando `GetSignatureInfo`. +3. **Processar em lote múltiplos PDFs** em uma pasta, registrando resultados em um CSV para fins de auditoria. + +Todas essas extensões são diretas a partir do código que acabamos de cobrir e mantêm você dentro do mesmo ecossistema **aspose pdf signature**. + +--- + +**Resumindo**, agora você sabe exatamente **como verificar assinatura** em um PDF usando C# e Aspose, como detectar uma assinatura comprometida e o que fazer quando a verificação falha. A abordagem é robusta, funciona com múltiplas assinaturas e pode ser integrada a pipelines maiores de processamento de documentos. + +Tem alguma variação desse cenário? Talvez você precise assinar PDFs em vez de verificá‑los, ou esteja lidando com PDFs criptografados. Deixe um comentário e exploraremos esses ângulos juntos. Boa codificação! + +{{< /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/programming-with-stamps-and-watermarks/_index.md b/pdf/portuguese/net/programming-with-stamps-and-watermarks/_index.md index 687114063..09e4c4d2c 100644 --- a/pdf/portuguese/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/portuguese/net/programming-with-stamps-and-watermarks/_index.md @@ -39,6 +39,7 @@ Os tutoriais "Programação com Carimbos e Marcas D'água" do Aspose.PDF para .N | [Tabela na seção Cabeçalho e Rodapé](./table-in-header-footer-section/) | Aprenda a adicionar texto facilmente ao rodapé de um arquivo PDF usando o Aspose.PDF para .NET. Guia passo a passo incluído para integração perfeita. | | [Texto no rodapé do arquivo PDF](./text-in-footer/) | Aprenda como adicionar texto no rodapé do arquivo PDF com o Aspose.PDF para .NET. | | [Texto no cabeçalho do arquivo PDF](./text-in-header/) | Aprenda a adicionar cabeçalhos de texto a PDFs usando o Aspose.PDF para .NET com este tutorial passo a passo. Aprimore seus documentos com eficiência e eficácia. | +| [Criar documento PDF com numeração Bates em C# – Guia completo](./create-pdf-document-with-bates-numbering-in-c-full-guide/) | Aprenda a gerar documentos PDF com numeração Bates usando Aspose.PDF para .NET em C# passo a passo. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/portuguese/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/portuguese/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..22f16f362 --- /dev/null +++ b/pdf/portuguese/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,184 @@ +--- +category: general +date: 2026-03-06 +description: Crie documentos PDF em C# e adicione números de Bates facilmente. Aprenda + como adicionar uma página em branco ao PDF, colocar um selo na página e implementar + a numeração de Bates. +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: pt +og_description: Criar documento PDF em C# e adicionar numeração Bates. Este guia mostra + como adicionar página em branco ao PDF, colocar selo na página e aplicar numeração + Bates. +og_title: Criar documento PDF com numeração Bates – Tutorial C# +tags: +- Aspose.Pdf +- C# +- PDF automation +title: Criar documento PDF com numeração Bates em C# – Guia completo +url: /pt/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Criar Documento PDF com Numeração Bates em C# + +Já precisou **criar um documento PDF** em C# e se perguntou como adicionar uma numeração Bates sem perder a cabeça? Você não está sozinho — escritórios de advocacia, tribunais e até algumas equipes de compliance corporativo enfrentam esse mesmo desafio todos os dias. A boa notícia? Com algumas linhas de código Aspose.Pdf você pode gerar um PDF novinho, acrescentar uma página em branco e inserir a numeração Bates de forma fluida. + +Neste tutorial vamos percorrer todo o processo: desde a configuração do projeto, passando pela adição de uma página em branco ao PDF, até descobrir **como adicionar numeração Bates**, e finalmente **colocar o selo na página** e salvar o resultado. Ao final, você terá um trecho pronto para uso que pode ser inserido em qualquer aplicação .NET. Sem referências vagas, apenas um exemplo completo e executável. + +## O que você vai precisar + +- **.NET 6+** (ou .NET Framework 4.6+ – Aspose.Pdf funciona com ambos) +- **Aspose.Pdf for .NET** pacote NuGet (`Install-Package Aspose.Pdf`) +- Uma IDE decente (Visual Studio, Rider ou VS Code com extensão C#) + +É só isso. Sem DLLs extras, sem serviços externos. Vamos lá. + +## Etapa 1: Criar Documento PDF – Configuração Inicial + +Primeiro de tudo, precisamos de um objeto `Document` novo. Pense nele como a tela vazia onde tudo mais será inserido. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **Por que isso importa:** A classe `Document` é o ponto de entrada para toda operação do Aspose. Instanciá‑la dá acesso à coleção `Pages`, metadados e configurações de segurança — todos os blocos de construção para um PDF profissional. + +## Etapa 2: Adicionar Página em Branco ao PDF + +Um PDF sem páginas é como um livro sem folhas — praticamente inútil. Inserir uma página em branco é simples e nos fornece uma superfície para carimbar a numeração Bates. + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **Dica de especialista:** Se precisar de várias páginas, basta chamar `pdfDocument.Pages.Add()` dentro de um loop. Cada chamada retorna um objeto `Page` novo que pode ser customizado de forma independente. + +## Etapa 3: Como Adicionar Numeração Bates – Criar o TextStamp + +Agora vem a parte central: a **numeração Bates**. No Aspose.Pdf ela é apenas um `TextStamp` com uma flag de artefato especial. + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **Por que definimos `Artifact`**: Alguns leitores de PDF expõem números Bates como metadados pesquisáveis. Marcar o selo como um artefato `BatesNumbering` garante que ferramentas subsequentes o reconheçam automaticamente. + +## Etapa 4: Colocar o Selo na Página + +Com o selo pronto, agora **colocamos o selo na página**. É nesta etapa que o número visual aparece no PDF. + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **Caso extremo:** Se precisar que o número incremente em cada página, faça um loop sobre `pdfDocument.Pages` e atualize `batesStamp.Value` antes de chamar `AddStamp`. O exemplo aqui mantém a simplicidade com um “Bates‑001” estático. + +## Etapa 5: Salvar e Verificar o Resultado + +Por fim, persistimos o PDF no disco. Escolha uma pasta onde você tenha permissão de escrita; caso contrário, ocorrerá um `UnauthorizedAccessException`. + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +Ao abrir `BatesStamped.pdf` em qualquer visualizador, você deverá ver um pequeno “Bates‑001” discretamente posicionado no canto inferior direito da página em branco. + +> **Saída esperada:** +> ![PDF com selo de número Bates](image-placeholder.png "PDF com selo de número Bates") +> *Texto alternativo: PDF com selo de número Bates no canto inferior direito.* + +Se o número não aparecer, verifique os valores de margem e assegure‑se de que o tamanho da página não está muito pequeno (o padrão A4 funciona bem). Também confirme que a flag `Artifact` não está sendo removida por ferramentas de pós‑processamento. + +## Exemplo Completo Funcional + +Abaixo está o programa completo, pronto para copiar e colar. Ele inclui todas as diretivas `using` e comentários para mantê‑lo orientado. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +Execute o programa, abra o PDF e você verá a numeração Bates exatamente onde indicamos. 🎉 + +## Variações Comuns & Armadilhas + +| Cenário | O que mudar | Por quê | +|----------|----------------|-----| +| **Múltiplas páginas, números incrementais** | Percorrer `pdfDocument.Pages`, definir `batesStamp.Value = $"Bates-{i:D3}"` antes de `AddStamp` | Fornece a cada página um identificador único, típico para pacotes jurídicos | +| **Posicionamento diferente (canto superior esquerdo)** | Alterar `HorizontalAlignment = HorizontalAlignment.Left` e `VerticalAlignment = VerticalAlignment.Top` | Algumas organizações preferem o número no cabeçalho em vez do rodapé | +| **Fonte ou cor personalizada** | Definir `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` | Melhora a legibilidade ou atende a diretrizes de marca | +| **Adicionar um PDF existente como fundo** | Carregar o PDF fonte com `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` | Útil quando é necessário carimbar sobre um formulário pré‑gerado | + +## Conclusão + +Acabamos de mostrar como **criar documento PDF**, **adicionar página em branco ao PDF**, e **inserir número Bates** usando Aspose.Pdf para .NET, depois **colocar o selo na página** e salvar o arquivo. O código foi mantido deliberadamente compacto para que você possa adaptá‑lo a fluxos de trabalho maiores — seja processando dezenas de arquivos ou integrando a um serviço web. + +Se estiver pronto para avançar, considere: + +- Automatizar a lógica de incremento para grandes volumes de processos. +- Incorporar a geração de PDF em uma API ASP.NET Core. +- Adicionar segurança (proteção por senha) com `pdfDocument.Encrypt(...)`. + +Sinta‑se à vontade para experimentar, quebrar coisas e fazer perguntas nos comentários. Boa codificação, e que seus PDFs estejam sempre perfeitamente carimbados! + +{{< /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/programming-with-tagged-pdf/_index.md b/pdf/portuguese/net/programming-with-tagged-pdf/_index.md index d1b61efc1..e6f4644e4 100644 --- a/pdf/portuguese/net/programming-with-tagged-pdf/_index.md +++ b/pdf/portuguese/net/programming-with-tagged-pdf/_index.md @@ -45,6 +45,7 @@ Os tutoriais "Programação com PDFs Marcados" do Aspose.PDF para .NET orientam | [Elementos de estrutura de texto em arquivo PDF](./text-structure-elements/) Aprenda a manipular elementos de estrutura de texto em PDFs com o Aspose.PDF para .NET. Este guia passo a passo abrange tudo o que você precisa para criar PDFs estruturados. | | [Validar arquivo PDF](./validate-pdf/) | Aprenda a validar um arquivo PDF com o Aspose.PDF para .NET. Verifique sua conformidade com os padrões e gere um relatório de validação. | | [Criar PDF Marcado em C# – Guia Completo Passo a Passo](./create-tagged-pdf-in-c-complete-step-by-step-guide/) | Aprenda a criar um PDF marcado em C# usando Aspose.PDF para .NET com este guia passo a passo completo. | +| [Criar PDF Marcado em C# – Guia Passo a Passo](./create-tagged-pdf-in-c-step-by-step-guide/) | Aprenda a criar um PDF marcado em C# usando Aspose.PDF para .NET com este guia passo a passo. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/portuguese/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/portuguese/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..65a93712d --- /dev/null +++ b/pdf/portuguese/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-03-06 +description: Crie PDF marcado com Aspose.Pdf em C#. Aprenda como adicionar imagem + ao PDF, definir a posição da figura e marcar o PDF para acessibilidade. +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: pt +og_description: Crie PDF marcado com Aspose.Pdf. Este guia mostra como adicionar imagem + ao PDF, definir a posição da figura e marcar o PDF para acessibilidade. +og_title: Criar PDF marcado em C# – Tutorial completo +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: Criar PDF Marcado em C# – Guia Passo a Passo +url: /pt/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Criar PDF com tags em C# – Tutorial Completo + +Já precisou **create tagged PDF** em C# mas não sabia por onde começar? Você não está sozinho; acessibilidade é essencial nos dias de hoje, e um PDF com tags é a espinha dorsal de um documento em conformidade. Neste tutorial vamos percorrer um exemplo real que **adds image to PDF**, define a posição da figura e mostra **how to tag PDF** usando Aspose.Pdf. Ao final, você terá um PDF totalmente marcado que pode enviar a qualquer pessoa. + +Vamos cobrir tudo, desde o carregamento de um arquivo existente até a gravação da saída final, para que você não precise procurar “how to add image” em outro lugar. Sem enrolação — apenas uma solução clara e executável que funciona com Aspose.Pdf 23.8 (a mais recente na data de escrita). Pegue sua IDE e vamos começar. + +--- + +## O que você precisará + +- **Aspose.Pdf for .NET** (pacote NuGet `Aspose.Pdf`). +- .NET 6+ (ou .NET Framework 4.7.2+). +- Um PDF de entrada que já possua uma estrutura lógica (ou seja, já esteja marcado) – se não, você pode habilitar a marcação via `pdfDocument.TaggedContent = true`. +- Um arquivo de imagem (`image.png`) que você deseja incorporar. + +É isso. Sem bibliotecas extras, sem arquivos de configuração obscuros. + +--- + +## Etapa 1: Carregar o Documento PDF Existente (Base para PDF com Tags) + +A primeira coisa que fazemos é abrir o PDF que queremos aprimorar. Carregar o arquivo nos dá acesso à sua estrutura lógica, essencial para fluxos de trabalho **create tagged pdf**. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*Por que isso importa:* Sem uma árvore de tags o PDF não transmitirá informações estruturais para leitores de tela. Habilitar a marcação garante que quaisquer novos elementos que adicionarmos (como uma figura) herdem a hierarquia correta. + +--- + +## Etapa 2: Acessar a Raiz da Estrutura Lógica (Como Marcar PDF) + +Agora acessamos a estrutura lógica do PDF. O elemento raiz é o contêiner de todas as tags — pense nele como o contorno do documento. + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*Explicação:* `logicalRoot` nos permite acrescentar novas tags como `
` ou `
`. Este é o núcleo de **how to tag PDF** programaticamente. + +--- + +## Etapa 3: Criar uma Tag Figure e Definir sua Posição (Definir Posição da Figura) + +Uma tag *Figure* agrupa conteúdo visual com uma legenda opcional. Criaremos uma, posicionaremos e a anexaremos à raiz. + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*Por que definimos uma posição:* O passo **set figure position** determina onde o elemento visual será colocado na página. Se você pular isso, a figura pode aparecer em um local inesperado ou ficar invisível para tecnologias assistivas. + +--- + +## Etapa 4: Adicionar uma Representação Visual – Inserir uma Imagem (Adicionar Imagem ao PDF) + +Com a tag no lugar, precisamos de uma imagem real. Esta é a parte que responde **add image to pdf**. + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*Ponto chave:* As coordenadas do retângulo devem corresponder ao `figureTag.Position` que definimos anteriormente; caso contrário, a figura e seu conteúdo visual ficarão fora de sincronia, comprometendo a acessibilidade. + +--- + +## Etapa 5: Salvar o PDF Atualizado (Concluir a Criação do PDF com Tags) + +Finalmente, persistimos as alterações em um novo arquivo. Manter o original intacto é uma boa prática. + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +Neste estágio você tem um arquivo **create tagged pdf** que contém uma imagem posicionada corretamente envolvida por uma tag `
`. Abra `output.pdf` no Adobe Acrobat e verifique o painel *Tags* — você deverá ver um nó `Figure` sob a raiz. + +--- + +## Exemplo Completo, Pronto‑para‑Executar + +Abaixo está o programa completo que você pode copiar‑colar em um aplicativo de console. Todas as etapas já estão na ordem correta. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### Resultado Esperado + +- `output.pdf` abre com a imagem exibida em (100, 150) pontos, tamanho 300 × 200 pontos. +- O painel *Tags* mostra um elemento `Figure` que envolve a imagem. +- Ferramentas de leitores de tela anunciam “Figure” antes de descrever a foto, atendendo aos padrões básicos de acessibilidade. + +--- + +## Perguntas Frequentes & Casos de Borda + +### E se o PDF de origem ainda não estiver marcado? + +Aspose.Pdf permite ativar a marcação definindo `pdfDocument.TaggedContent.IsTagged = true;`. A biblioteca gerará uma árvore de tags padrão, após a qual você pode adicionar tags personalizadas como mostrado. + +### Posso adicionar uma legenda à figura? + +Sim. Após criar `figureTag`, você pode anexar um `Paragraph` com um `TextFragment` e definir seu `Tag` como `Caption`. Exemplo: + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### Como posicionar a figura em outra página? + +Substitua `var firstPage = pdfDocument.Pages[1];` pelo índice da página desejada, por exemplo, `pdfDocument.Pages[3]`. Lembre‑se de ajustar as coordenadas de `Position` se o tamanho da página for diferente. + +### E se eu precisar marcar várias imagens? + +Crie um novo `Figure` para cada imagem, dê a cada um uma `Position` única e adicione o objeto `Image` correspondente à página apropriada. Percorrer uma coleção de imagens funciona muito bem. + +### Isso funciona com conformidade PDF/A? + +Aspose.Pdf suporta PDF/A‑1b, PDF/A‑2b e PDF/A‑3b. Ao gerar um documento PDF/A, certifique‑se de definir o modo de conformidade antes de salvar: + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +A lógica de marcação permanece a mesma. + +--- + +## Dicas Profissionais & Armadilhas + +- **Pro tip:** Sempre use caminhos absolutos ou `Path.Combine` para evitar erros de arquivo‑não‑encontrado em tempo de execução. +- **Watch out for:** Coordenadas incompatíveis entre a tag `Figure` e o retângulo `Image` — tecnologias assistivas dependem desse alinhamento. +- **Performance note:** Se estiver processando muitas páginas, envolva o fluxo de imagem em um bloco `using` para liberar recursos rapidamente. +- **Version check:** A API mostrada funciona com Aspose.Pdf 23.8+. Versões mais antigas podem ter nomes de classes ligeiramente diferentes (por exemplo, `LogicalStructureElement` em vez de `FigureElement`). + +--- + +## Conclusão + +Acabamos de **create tagged pdf** do início ao fim, demonstramos **add image to pdf** e mostramos como **set figure position** enquanto respondemos **how to tag pdf** e **how to add image** em um único exemplo coeso. O código está pronto para ser executado, as explicações cobrem o “por quê” de cada passo, e agora você tem uma base sólida para criar PDFs acessíveis em C#. + +Pronto para o próximo desafio? Experimente adicionar tabelas com tags `
`, ou incorpore uma camada de conformidade PDF/A‑2b para fins de arquivamento. O mesmo padrão — carregar, acessar a estrutura lógica, criar uma tag, anexar conteúdo visual, salvar — se aplica à maioria das tarefas de acessibilidade em PDF. + +Se encontrar algum problema ou tiver um caso de uso que não foi abordado aqui, deixe um comentário abaixo. Boa marcação e aproveite a criação de PDFs que todos podem ler! + +![Diagrama mostrando um PDF com uma tag Figure e imagem – ilustra como criar PDF com tags](placeholder-image.png "exemplo de criar PDF com tags") + +{{< /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/digital-signatures/_index.md b/pdf/russian/net/digital-signatures/_index.md index fffd85977..fa72d1fc0 100644 --- a/pdf/russian/net/digital-signatures/_index.md +++ b/pdf/russian/net/digital-signatures/_index.md @@ -33,7 +33,7 @@ ### [Как удалить цифровые подписи PDF с помощью Aspose.PDF .NET | Полное руководство](./remove-pdf-digital-signatures-aspose-pdf-net/) -### [Как проверить подписи PDF с помощью Aspose.PDF для .NET: подробное руководство](./verify-pdf-signatures-aspose-pdf-net/) +### [Как проверить подписи PDF с помощью Aspose.PDF для .NET: подробное руководство](./verify-pdf-signatures-aspose-net/) ### [Проверка подписи PDF в C# – пошаговое руководство](./verify-pdf-signature-in-c-step-by-step-guide/) Узнайте, как проверять цифровые подписи PDF-файлов в C# с помощью Aspose.PDF, следуя пошаговым инструкциям. @@ -47,6 +47,9 @@ ### [Как проверить PDF – проверка подписи PDF с помощью Aspose](./how-to-verify-pdf-validate-pdf-signature-with-aspose/) Узнайте, как проверять подписи PDF с помощью Aspose, обеспечивая подлинность и целостность документов. +### [Как читать подписи в PDF с C# – пошаговое руководство](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +Узнайте, как считывать подписи из PDF-файлов с помощью C# и Aspose.PDF, следуя пошаговым инструкциям. + ## Дополнительные ресурсы - [Документация Aspose.PDF для сети](https://docs.aspose.com/pdf/net/) diff --git a/pdf/russian/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/russian/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..6f1282bd8 --- /dev/null +++ b/pdf/russian/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-03-06 +description: Как читать подписи в PDF с помощью C#. Узнайте, как загрузить PDF‑документ + в C#, вывести список подписей PDF и получить цифровые подписи PDF быстро и надёжно. +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: ru +og_description: Как читать подписи в PDF с помощью C#. Это руководство показывает, + как загрузить PDF‑документ в C#, перечислить подписи PDF и получить цифровые подписи + PDF в несколько простых шагов. +og_title: Как читать подписи в PDF с помощью C# – Полное руководство +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: Как читать подписи в PDF с помощью C# – пошаговое руководство +url: /ru/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как читать подписи в PDF с C# – Полное руководство + +Когда‑нибудь задавались вопросом **как читать подписи**, уже встроенные в PDF‑файл? Возможно, вы создаёте панель соответствия, или вам просто нужно проверить подписанные контракты перед тем, как они попадут в вашу базу данных. Хорошая новость в том, что с несколькими строками C# и библиотекой Aspose.Pdf вы можете извлечь имена подписей прямо из файла — без ручной проверки. + +В этом руководстве мы пройдём процесс загрузки PDF‑документа в C#, перечисления подписей PDF и получения информации о цифровых подписях PDF. К концу у вас будет готовое к запуску консольное приложение, которое выводит каждое найденное имя подписи, а также советы по обработке особых случаев, таких как файлы, защищённые паролем. + +## Требования + +- .NET 6.0 или новее (код также работает с .NET Framework 4.6+) +- Aspose.Pdf for .NET (вы можете получить бесплатную временную лицензию на сайте Aspose) +- PDF, который уже содержит одну или несколько цифровых подписей (пример `MultiSigned.pdf` включён в репозиторий) + +> **Подсказка:** Если вы используете Visual Studio, включите *Nullable Reference Types*, чтобы раннее обнаруживать ошибки, связанные с null. + +## Шаг 1: Загрузка PDF‑документа в C# + +Первое, что нам нужно, — объект `Document`, представляющий PDF‑файл на диске. Класс `Document` из Aspose.Pdf обрабатывает всё, от простого извлечения текста до сложной обработки форм. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**Почему это важно:** Загрузка PDF проверяет, что файл существует и доступен для чтения. Если файл повреждён или путь неверен, мы завершаем работу сразу, вместо того чтобы позже сталкиваться с неясными ошибками при попытке перечислить подписи. + +## Шаг 2: Создание вспомогательного класса `PdfFileSignature` + +Aspose разделяет общую работу с PDF (`Document`) и операции, специфичные для подписей (`PdfFileSignature`). Создание этого помощника даёт доступ к методам вроде `GetSignatureNames()`. + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**Почему это важно:** Класс `PdfFileSignature` умеет разбирать записи словаря PDF `/Sig`, где хранятся цифровые подписи. Его использование гарантирует, что мы читаем подписи точно так, как они были добавлены, сохраняя всю криптографическую метадату. + +## Шаг 3: Получение всех имён подписей + +Теперь переходим к основной части **как читать подписи**: вызываем `GetSignatureNames()`. Этот метод возвращает массив строк, содержащий *имена полей* каждой подписи. + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**Что вы увидите:** Если `MultiSigned.pdf` содержит три подписи с именами `Signature1`, `Signature2` и `Signature3`, вывод в консоли будет: + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## Шаг 4: (Опционально) Проверка валидности каждой подписи + +Чтение имён часто достаточно, но многие проекты также нуждаются в проверке, остаётся ли подпись действительной. Aspose позволяет валидировать подпись по её имени поля: + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **Особый случай:** Если PDF защищён паролем, необходимо указать пароль перед вызовом `VerifySignature`. Используйте `pdfDocument.Encrypt.Password = "yourPassword";` сразу после загрузки документа. + +## Полный рабочий пример + +Ниже представлен полный код программы, который можно скопировать и вставить в новый консольный проект (`dotnet new console`). В нём реализованы все шаги, обработка ошибок и опциональная проверка. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**Ожидаемый вывод** (при наличии трёх действительных подписей): + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## Обработка распространённых вариантов + +| Ситуация | Что изменить | Почему | +|-----------|----------------|-----| +| **PDF, защищённый паролем** | Установите `pdfDocument.Encrypt.Password = "yourPwd";` перед созданием `PdfFileSignature`. | Без пароля словари подписей зашифрованы, и `GetSignatureNames()` возвращает пустой массив. | +| **Большие PDF ( > 100 МБ )** | Используйте `pdfSigner.GetSignatureNames(0, 10)`, чтобы постранично получать результаты (первый параметр = начальный индекс). | Загрузка полного списка подписей сразу может потребовать много памяти. | +| **Отсутствие подписей** | Код уже выводит дружелюбное предупреждение. Рассмотрите возможность логировать это как событие аудита. | Помогает последующим процессам решить, отклонять файл или запросить у пользователя подписанную версию. | +| **Пользовательские имена полей подписи** | Метод возвращает любое имя поля, использованное при подписании, например `EmployeeApproval`. Дополнительные действия не требуются. | Позволяет сопоставлять подписи с бизнес‑ролями. | + +## Лучшие практики и советы + +- **Dispose objects**: Шаблон `using var pdfSigner` гарантирует своевременное освобождение нативных ресурсов. +- **License early**: В начале `Main` вызовите `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");`, чтобы избавиться от водяного знака оценки. +- **Thread safety**: При параллельной обработке множества PDF создавайте отдельный `PdfFileSignature` для каждого потока. Класс не является потокобезопасным. +- **Logging**: В продакшене замените `Console.WriteLine` на структурированный логгер (Serilog, NLog), чтобы фиксировать точные имена подписей для аудита. +- **Version check**: Код работает с Aspose.Pdf for .NET 23.10 и новее. В более старых версиях может потребоваться `PdfSignature` вместо `PdfFileSignature`. + +## Заключение + +Мы рассмотрели **как читать подписи** из PDF с помощью C#. Загрузив PDF‑документ, создав вспомогательный `PdfFileSignature` и вызвав `GetSignatureNames()`, вы можете перечислить каждую цифровую подпись, встроенную в файл. Опциональная проверка добавляет уровень доверия, а пример кода показывает, как интегрировать это в реальное консольное приложение. + +Готовы к следующему шагу? Попробуйте сочетать это с `DigitalSignatureUtil` от Aspose, чтобы извлекать сертификаты подписанта, или передать список подписей в панель соответствия, отмечающую неподписанные контракты. Возможности безграничны — просто помните **load PDF document C#**, **list PDF signatures** и **get digital signatures PDF**, когда нужен быстрый аудит. + +Счастливого кодинга, и пусть ваши PDF‑файлы всегда остаются надёжно подписанными! + +{{< /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-conversion/_index.md b/pdf/russian/net/document-conversion/_index.md index 5a81e5e5f..4bfd603af 100644 --- a/pdf/russian/net/document-conversion/_index.md +++ b/pdf/russian/net/document-conversion/_index.md @@ -58,6 +58,7 @@ | [XML в PDFУстановить путь к изображению](./xml-to-pdfset-image-path/) | Узнайте, как легко конвертировать XML в PDF с помощью Aspose.PDF для .NET. Это подробное руководство проведет вас через процесс шаг за шагом, от настройки до завершения. | | [XPS в PDF](./xps-to-pdf/) Узнайте, как преобразовать файлы XPS в PDF с помощью Aspose.PDF для .NET с помощью этого пошагового руководства. Идеально подходит для разработчиков и энтузиастов документов. | | [Конвертировать PDF в PDF/X‑4 на C# – пошаговое руководство ASP.NET PDF](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | Узнайте, как конвертировать PDF в PDF/X‑4 с помощью Aspose.PDF для .NET в этом пошаговом руководстве. | +| [Aspose PDF Tutorial: Конвертировать PDF в PDF/X‑4 на C#](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) | Узнайте, как конвертировать PDF в PDF/X‑4 с помощью Aspose.PDF для .NET в этом пошаговом руководстве. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/russian/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/russian/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..49b5f57ae --- /dev/null +++ b/pdf/russian/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-03-06 +description: Учебник Aspose PDF показывает, как использовать Aspose для загрузки PDF‑документа + в C#, конвертации PDF в PDF/X‑4 и эффективного сохранения преобразованного PDF. +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: ru +og_description: Учебник Aspose PDF объясняет, как загрузить PDF‑документ в C#, преобразовать + его в формат PDF/X‑4 и сохранить преобразованный PDF с понятными примерами кода. +og_title: 'Учебник Aspose PDF: преобразование PDF в PDF/X‑4 на C#' +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: 'Учебник Aspose PDF: преобразование PDF в PDF/X‑4 на C#' +url: /ru/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose PDF Tutorial: Convert PDF to PDF/X‑4 in C# + +Когда‑нибудь задумывались, как с помощью Aspose превратить обычный PDF в файл PDF/X‑4 без лишних усилий? Вы не одиноки — разработчикам часто нужен надёжный способ **load PDF document C#**‑style, выполнить конвертацию и затем **save the converted PDF** для последующих процессов. В этом руководстве мы пройдёмся по полному, готовому к запуску примеру, который делает именно это, используя последнюю версию Aspose.Pdf для .NET. + +Мы рассмотрим всё: от установки библиотеки, загрузки исходного PDF, конвертации его в стандарт PDF/X‑4 и, наконец, сохранения результата на диск. К концу вы будете уверенно знать **how to use Aspose** для этой типичной задачи конвертации, а также получите советы по обработке граничных случаев. + +## Prerequisites + +Прежде чем погрузиться в детали, убедитесь, что у вас есть: + +- .NET 6.0 или новее (код также работает на .NET Framework, но рекомендуется .NET 6+). +- Действительный файл лицензии Aspose.Pdf for .NET (или можно работать в режиме оценки для быстрого теста). +- Visual Studio 2022 или любой IDE, поддерживающий C#. +- Входной PDF‑файл, расположенный по пути `YOUR_DIRECTORY/input.pdf`. + +Никаких дополнительных пакетов NuGet, помимо `Aspose.Pdf`, не требуется. + +## Install Aspose.Pdf via NuGet + +Откройте терминал или консоль Package Manager и выполните: + +```bash +dotnet add package Aspose.Pdf +``` + +Это загрузит последнюю стабильную версию (на март 2026 года — версия 23.12). Если предпочитаете графический интерфейс, найдите *Aspose.Pdf* в NuGet Package Manager и установите его. + +## Step 1: Load PDF Document in C# with Aspose + +Первое, что нужно сделать, — загрузить исходный PDF в память. Класс `Document` из Aspose является точкой входа. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**Почему это важно:** Загрузка файла проверяет, существует ли указанный путь и не повреждён ли PDF. Блок `try/catch` даёт возможность аккуратно обработать ошибки — это удобно, когда файл приходит от пользователей. + +## Step 2: Convert PDF to PDF/X‑4 Format + +PDF/X‑4 — это подмножество PDF, предназначенное для надёжной печати и архивирования. Конвертация гарантирует, что все шрифты встроены и файл соответствует отраслевым стандартам. + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**Почему выбираем `ConvertErrorAction.Delete`?** Некоторые старые PDF‑файлы содержат элементы (например, неподдерживаемые аннотации), которые иначе прервут процесс конвертации. Их удаление делает процесс плавным, но при необходимости сохранения этих элементов следует проверить полученный результат. + +### Optional: Verify Conversion Success + +Если хотите быть полностью уверены, можете проверить свойство `PdfFormat` документа после конвертации: + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## Step 3: Save the Converted PDF File + +Теперь, когда документ находится в формате PDF/X‑4, сохраняем его обратно на диск. + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**Что вы увидите:** В папке `YOUR_DIRECTORY` появится новый файл `Converted_PDFX4.pdf`. Откройте его в любом просмотрщике PDF, поддерживающем PDF/X‑4 (Adobe Acrobat, Foxit и т.д.) — вы заметите, что все шрифты встроены и документ соответствует спецификации PDF/X‑4. + +![aspose pdf tutorial - converting PDF to PDF/X‑4](/images/aspose-pdf-conversion.png "aspose pdf tutorial showing PDF/X‑4 conversion result") + +*Текст alt‑атрибута изображения включает основной ключевой запрос, удовлетворяя требования SEO.* + +## Full End‑to‑End Example + +Объединив всё вместе, получаем полностью автономное консольное приложение, которое можно скопировать и вставить в новый проект C#: + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +Запустите программу, и вы увидите сообщения в консоли, подтверждающие каждый шаг. Если что‑то пойдёт не так, сообщения об ошибках укажут точную стадию, где возникла проблема. + +## Common Questions & Edge Cases + +### What if I need to keep annotations? + +`ConvertErrorAction.Delete` удаляет неподдерживаемые объекты, включая некоторые аннотации. Переключитесь на `ConvertErrorAction.Keep`, если их сохранение критично, но протестируйте результат — некоторые аннотации всё равно могут вызвать предупреждения о соответствии. + +### How do I handle large PDFs (hundreds of MB)? + +Aspose.Pdf работает с потоками, поэтому потребление памяти остаётся умеренным. Тем не менее, при работе с очень большими файлами может потребоваться увеличить пороги `System.GC` или обрабатывать документ частями (например, конвертировать постранично). + +### Can I convert multiple files in a batch? + +Конечно. Оберните логику загрузки‑конвертации‑сохранения в цикл `foreach`, который будет проходить по директории с PDF‑файлами. Не забудьте обрабатывать исключения для каждого файла, чтобы один плохой PDF не прервал всю партию. + +### Does this work on .NET Core on Linux? + +Да. Aspose.Pdf кросс‑платформенный. Достаточно добавить пакет `Aspose.Pdf` через NuGet и убедиться, что на Linux‑хосте установлены необходимые файлы шрифтов, если требуется рендеринг текста. + +## Pro Tips from the Field + +- **Set a license early**: `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` — это убирает водяной знак оценки и повышает производительность. +- **Validate the output**: Используйте `PdfFormatValidator` от Aspose, чтобы программно убедиться в соответствии PDF/X‑4 перед отправкой файла. +- **Log conversion time**: При больших партиях полезно измерять время каждой конвертации (`Stopwatch`), чтобы выявлять регрессии в производительности. +- **Avoid hard‑coded paths**: Предпочтительно хранить `inputPath` и `outputPath` в файлах конфигурации или переменных окружения — это делает приложение переносимым. + +## Conclusion + +В этом **Aspose PDF Tutorial** мы продемонстрировали чистый, сквозной процесс **how to use Aspose** для **load PDF document C#**, конвертации его в стандарт **PDF/X‑4** и **save the converted PDF**. Приведённый фрагмент полностью исполняем, объясняет *почему* каждого шага и подчёркивает потенциальные подводные камни в реальных проектах. + +Теперь, когда у вас есть базовые знания, вы можете расширять решение — обрабатывать партии из десятков файлов, внедрять пользовательские метаданные или интегрировать конвертацию в веб‑API. Возможности широки, а Aspose.Pdf предоставляет инструменты для быстрого достижения целей. + +Есть дополнительные вопросы по работе с PDF в Aspose? Оставляйте комментарий, изучайте официальную документацию Aspose или экспериментируйте с кодом выше. Приятной конвертации! + +{{< /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-creation/_index.md b/pdf/russian/net/document-creation/_index.md index 046b7db3a..61e24330a 100644 --- a/pdf/russian/net/document-creation/_index.md +++ b/pdf/russian/net/document-creation/_index.md @@ -77,6 +77,12 @@ ### [Создание PDF-документа с Aspose.PDF – добавить страницу, форму и сохранить](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) Узнайте, как добавить страницу, форму и сохранить PDF-документ с помощью Aspose.PDF для .NET. +### [Создание PDF-документа с Aspose.PDF – пошаговое руководство](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +Узнайте, как создать PDF-документ с помощью Aspose.PDF, следуя пошаговому руководству. + +### [Создание PDF-документа с Aspose.PDF – Полное руководство на C#](./create-pdf-document-with-aspose-pdf-full-c-guide/) +Узнайте, как создать PDF-документ с помощью Aspose.PDF, следуя полному руководству на C#. + ## Дополнительные ресурсы - [Документация Aspose.PDF для сети](https://docs.aspose.com/pdf/net/) diff --git a/pdf/russian/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/russian/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..54c772401 --- /dev/null +++ b/pdf/russian/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,236 @@ +--- +category: general +date: 2026-03-06 +description: Создайте PDF‑документ на C# с помощью Aspose.PDF — узнайте, как быстро + добавить пустые страницы, текстовое поле, виджет и сохранить PDF. +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: ru +og_description: Создайте PDF‑документ на C# с помощью Aspose.PDF. Это руководство + показывает, как добавить пустые страницы в PDF, текстовое поле, виджет и как сохранить + PDF. +og_title: Создание PDF‑документа с помощью Aspose.PDF – Полный учебник по C# +tags: +- pdf +- csharp +- aspose +- forms +title: Создание PDF‑документа с Aspose.PDF – Полное руководство по C# +url: /ru/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Создание PDF‑документа с Aspose.PDF – Полное руководство на C# + +Когда‑нибудь вам нужно было **создать pdf документ** с нуля в проекте .NET и вы задавались вопросом, с чего начать? Вы не одиноки; многие разработчики сталкиваются с тем же препятствием, когда первое требование звучит как «создать заполняемый PDF с одинаковым текстовым полем на трёх страницах». Хорошая новость? С Aspose.PDF вы можете быстро сгенерировать профессионально выглядящий PDF всего за несколько строк кода. + +В этом руководстве мы пройдём весь процесс: от инициализации нового PDF, **добавления пустых страниц pdf**, вставки **текстового поля**, его дублирования с помощью аннотаций **widget**, и, наконец, **сохранения PDF** на диск. К концу у вас будет готовый к использованию файл с именем *MultiWidgetField.pdf* и чёткое понимание, почему каждый шаг важен. + +## Что охватывает данное руководство + +- Необходимые предварительные условия, которые нужны перед тем, как написать хотя бы одну строку кода. +- Пошаговое создание PDF‑документа с использованием Aspose.PDF для .NET. +- Как добавить пустые страницы, поле формы‑текстовое поле и дополнительные экземпляры widget‑ов. +- Советы по работе с распространёнными подводными камнями (например, индексация страниц, конфликты имён полей). +- Полностью готовая к копированию и вставке программа на C#, которую можно запустить уже сегодня. + +Никаких внешних ссылок на документацию, никаких «см. API‑документы» — всё, что вам нужно, находится здесь. + +## Предварительные требования + +Прежде чем погрузиться, убедитесь, что у вас есть: + +1. **.NET 6.0** (или более поздняя версия), установленная на вашем компьютере. +2. Действующая лицензия **Aspose.PDF for .NET** или временный оценочный ключ. +3. Среда разработки, например **Visual Studio 2022** или **VS Code** с расширением C#. + +Вот и всё — больше ничего не требуется. + +## Шаг 1: Инициализация PDF‑документа и добавление пустых страниц + +Первое, что вы делаете, когда **создаёте pdf документ** программно, — это создаёте объект `Document`. Представьте это как открытие совершенно новой тетради. Затем вы добавляете нужные страницы; в нашем случае три пустые страницы. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**Почему это важно:** Aspose.PDF обрабатывает страницы как нулевую‑базовую коллекцию внутри, но его публичный API использует 1‑базу, поэтому `Pages[1]` — это первая добавленная вами страница. Добавление страниц заранее предоставляет вам холст для размещения полей формы позже и гораздо экономичнее, чем вставлять страницы «на лету» после роста документа. + +> **Полезный совет:** Если вам нужна только одна страница, можно пропустить цикл и вызвать `pdfDocument.Pages.Add()` один раз. Добавление нескольких страниц в цикле делает код масштабируемым. + +## Шаг 2: Определение текстового поля формы на первой странице + +Теперь, когда у нас есть три пустых листа, давайте разместим **textbox** на первой странице. `TextBoxField` — это элемент формы, в который конечные пользователи могут вводить текст, когда PDF открыт в Acrobat Reader или любом другом просмотрщике PDF, поддерживающем формы. + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**Почему такие координаты прямоугольника?** Aspose.PDF использует пункты (1/72 дюйма). Прямоугольник `(100, 700, 300, 730)` размещает текстовое поле примерно на полпути вниз по странице, шириной 200 pt и высотой 30 pt. Корректируйте эти значения под ваш макет. + +> **Распространённый вопрос:** *Нужно ли задавать свойство `Value`?* +> Нет, это необязательно. Оставив его пустым, вы получаете пустое поле; установка значения по умолчанию может подсказать пользователю. + +## Шаг 3: Добавление аннотаций Widget для того же поля на страницах 2 и 3 + +**Widget** — это визуальное представление поля формы на конкретной странице. По умолчанию поле отображается только на той странице, где оно было создано. Чтобы повторно использовать то же текстовое поле на других страницах, вы добавляете дополнительные объекты `WidgetAnnotation` в коллекцию `Widgets` поля. + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**Зачем нужны widgets?** Без них пользователь увидит текстовое поле только на странице 1, хотя само поле существует. Widgets позволяют использовать одно логическое поле на нескольких страницах, гарантируя, что введённый текст будет отображаться везде, где поле показано. + +> **Особый случай:** Если вам нужно разместить текстовое поле в разных координатах на каждой странице, просто измените значения `Rectangle` для каждого widget‑а. + +## Шаг 4: Регистрация поля в коллекции форм документа + +Aspose.PDF хранит центральный реестр всех полей формы. Добавление поля в коллекцию `Form` делает его частью интерактивной структуры формы PDF. + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +Второй аргумент (`"Comment"`) — это **полностью квалифицированное имя** поля. Оно должно быть уникальным во всём документе; иначе Aspose выбросит исключение. + +## Шаг 5: Сохранение полученного PDF — Как сохранить PDF + +Наконец, мы сохраняем документ из памяти на диск. Это часть руководства, посвящённая **как сохранить pdf**. + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**Почему указывают абсолютный путь?** Использование абсолютного пути избавляет от путаницы с рабочей директорией, особенно при запуске программы из отладчика Visual Studio. Если вы предпочитаете относительный путь, просто убедитесь, что папка существует перед вызовом `Save`. + +### Ожидаемый результат + +Откройте *MultiWidgetField.pdf* в Adobe Acrobat Reader. Вы увидите одинаковое текстовое поле на страницах 1, 2 и 3. Введите что‑нибудь в поле на любой странице — текст мгновенно появится на остальных страницах, поскольку они используют одно и то же базовое поле формы. + +![Пример создания PDF‑документа, показывающий текстовое поле на трёх страницах](https://example.com/placeholder-image.png "Пример создания PDF‑документа") + +*Текст альтернативного изображения: Пример создания PDF‑документа, показывающий текстовое поле на трёх страницах.* + +## Полный готовый к запуску пример + +Ниже приведена полная программа, которую вы можете скопировать в новый консольный проект (`dotnet new console`) и запустить. Все шаги уже упорядочены, а код содержит комментарии для ясности. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +Запустите программу, перейдите в `C:\Temp\` и откройте сгенерированный PDF. Вы увидите три одинаковых текстовых поля, готовых к вводу пользователем. + +## Распространённые варианты и особые случаи + +| Сценарий | Что изменить | Почему | +|----------|--------------|--------| +| **Разный размер текстового поля на каждой странице** | Измените значения `Rectangle` для каждого `WidgetAnnotation`. | Позволяет разместить поле в разных макетах. | +| **Только для чтения** | Установите `commentField.ReadOnly = true;`. | Не позволяет пользователям редактировать содержимое после первоначального заполнения. | +| **Многострочное текстовое поле** | Установите `commentField.Multiline = true;` и увеличьте высоту прямоугольника. | Позволяет вводить более длинные комментарии без прокрутки. | +| **Добавление второго поля** | Создайте ещё один `TextBoxField` (или любой `FormField`) и повторите шаги 2‑4 с новым именем. | Можно собрать несколько фрагментов информации в одном PDF. | + +## Профессиональные советы и подводные камни, которых следует избегать + +- **Индексация страниц:** Помните, что `pdfDocument.Pages[1]` — первая страница, а не `[0]`. Смешивание 0‑базовых и 1‑базовых индексов приводит к исключениям «Index out of range». +- **Конфликты имён полей:** Два поля не могут иметь одинаковое полностью квалифицированное имя. Если вы получаете ошибку о дублирующихся именах, проверьте строку, которую передаёте в `Form.Add`. +- **Лицензия vs. Оценочная версия:** Оценочная версия добавляет водяной знак на каждую страницу. Разверните действительную лицензию, чтобы убрать его в продакшене. +- **Производительность:** Добавление сотен страниц в цикле нормально, но если вам нужно генерировать огромные PDF (тысячи страниц), рассмотрите использование + +{{< /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-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/russian/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..4f9f7cae2 --- /dev/null +++ b/pdf/russian/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-03-06 +description: Создайте PDF‑документ с помощью Aspose.PDF в C#. Узнайте, как добавить + страницу в PDF, нарисовать прямоугольник, добавить форму и управлять толщиной границы + прямоугольника — всё в одном учебнике. +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: ru +og_description: Создайте PDF‑документ на C# с помощью Aspose.PDF. Этот учебник показывает, + как добавить страницу PDF, нарисовать прямоугольник PDF, добавить форму PDF и установить + толщину границы прямоугольника. +og_title: Создание PDF‑документа с помощью Aspose.PDF – Полное руководство +tags: +- Aspose.PDF +- C# +- PDF generation +title: Создание PDF‑документа с Aspose.PDF – пошаговое руководство +url: /ru/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Создание PDF‑документа с помощью Aspose.PDF – пошаговое руководство + +Когда‑то вам нужно **создать PDF‑документ** программно, но вы не знаете, с чего начать? Вы не одиноки — многие разработчики сталкиваются с тем же самым, когда их приложения должны «выдавать» счета, отчёты или сертификаты «на лету». + +Хорошая новость: с Aspose.PDF для .NET это можно сделать в паре строк кода, и вы также узнаете, как **добавлять страницу PDF**, **рисовать прямоугольник PDF**, **добавлять форму PDF** и настраивать **толщину границы прямоугольника**. Поехали. + +## Что вы построите + +К концу этого руководства у вас будет полностью рабочее консольное приложение C#, которое: + +1. **Создаёт PDF‑документ** с нуля. +2. **Добавляет страницу PDF** в документ. +3. **Рисует прямоугольник PDF** на этой странице. +4. **Проверяет**, что прямоугольник остаётся внутри границ страницы (**добавление формы PDF**). +5. Устанавливает пользовательскую **толщину границы прямоугольника**. +6. Сохраняет результат как `ShapeValidated.pdf`. + +Никаких внешних сервисов, никаких загадочных настроек — только чистый C# и Aspose.PDF. + +### Предварительные требования + +- .NET 6.0 или новее (код также работает с .NET Framework 4.6+). +- Ссылка на пакет `Aspose.Pdf` из NuGet. Добавить его можно так: + +```bash +dotnet add package Aspose.Pdf +``` + +- Текстовый редактор или IDE — Visual Studio, VS Code, Rider, что угодно. + +> **Pro tip:** Если вы работаете на корпоративном компьютере, убедитесь, что NuGet‑фид не заблокирован; иначе вы получите ошибку «Package not found». + +--- + +## Создание PDF‑документа – инициализация Document + +Первый шаг — создать объект `Document`. Представьте его как чистый холст, на котором будет размещаться каждая страница и форма. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +Зачем нужен этот объект? Он представляет весь PDF‑файл в памяти, предоставляя доступ к коллекции `Pages`, метаданным и настройкам безопасности. Как только у вас есть документ, можно начинать добавлять страницы, текст, изображения и векторную графику. + +--- + +## Добавление страницы в PDF (add page pdf) + +PDF без страниц — это по сути пустой файл, бессмысленно. Добавить страницу просто, и при желании можно задать её размер. Здесь мы используем размер A4 по умолчанию. + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +Метод `Add()` возвращает свежий экземпляр `Page`, уже входящий в коллекцию `Pages`, так что сразу можно начинать рисовать на нём. В реальных проектах вы можете перебрать набор данных и добавить десятки страниц; тот же однострочный вызов работает в каждой итерации. + +--- + +## Рисование прямоугольника (draw rectangle pdf) + +Переходим к визуальной части: прямоугольник с видимой границей. Здесь в дело вступает **draw rectangle pdf**. + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +Несколько замечаний: + +- `Rect` использует пункты (1 pt ≈ 1/72 дюйма). Координаты задают нижний‑левый и верхний‑правый углы, что позволяет точно контролировать ширину и высоту. +- `BorderInfo` позволяет указать, какие стороны получают линию и насколько она толстая. Здесь мы применяем 2‑пунктовую линию ко **всем** сторонам, получая аккуратный, однородный вид прямоугольника. + +--- + +## Проверка размещения формы (add shape pdf) + +Прежде чем фиксировать прямоугольник на странице, разумно убедиться, что он помещается в печатную область страницы. Aspose.PDF предоставляет удобный вспомогательный метод для этого. + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +Зачем это нужно? Если случайно разместить форму частично за пределами видимой области, просмотрщик PDF может её обрезать, что создаст путаницу у пользователя. Эта проверка **add shape pdf** гарантирует, что вы добавляете только полностью видимый контент. + +--- + +## Сохранение PDF (add page pdf) + +Наконец, сохраняем документ из памяти на диск. Выберите любую папку, где у вас есть права записи. + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +После запуска программы откройте `ShapeValidated.pdf` — вы увидите одну страницу с аккуратно обведённым прямоугольником, расположенным примерно по центру. + +--- + +## Ожидаемый результат + +При открытии сгенерированного PDF вы увидите: + +- Одна страница формата A4. +- Прямоугольник, нижний‑левый угол которого находится в (50 pt, 50 pt), а верхний‑правый — в (600 pt, 800 pt). +- **Граница толщиной 2 пункта** вокруг прямоугольника. + +Если консоль вывела «PDF created successfully!», значит код выполнился без ошибок проверки границ. + +![Диаграмма, показывающая процесс создания PDF‑документа с Aspose.PDF](https://example.com/diagram-create-pdf.png "Create PDF Document – visual overview") + +*Текст alt‑изображения включает основной ключевой запрос для удовлетворения требований SEO.* + +--- + +## Часто задаваемые вопросы и особые случаи + +### Что делать, если нужен другой размер страницы? + +Замените страницу по умолчанию на пользовательский размер: + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### Как изменить цвет границы? + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### Можно ли добавить несколько форм на одну страницу? + +Конечно. Просто повторите блок **add shape pdf** с новым `RectangleShape` (или другими подклассами `Shape`) и скорректируйте координаты `Rect` соответственно. + +### Что если прямоугольник выходит за пределы страницы? + +Вызов `IsShapeWithinBounds` вернёт `false`. В продакшн‑коде вы, возможно, захотите автоматически изменить размер формы: + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +--- + +## Итоги + +Мы прошли весь жизненный цикл **создания PDF‑документа** с помощью Aspose.PDF: + +1. Инициализировать `Document`. +2. **Add a page PDF** с помощью `Pages.Add()`. +3. **Draw a rectangle PDF** через `RectangleShape`. +4. **Add shape PDF** только после подтверждения, что он находится внутри страницы. +5. Управлять **толщиной границы прямоугольника** через `BorderInfo`. +6. Сохранить файл. + +Всё это — менее чем 60 строк кода. + +--- + +## Что дальше? + +- **Добавить текст**: используйте `TextFragment` для размещения заголовков или подписей внутри прямоугольника. +- **Вставить изображения**: класс `Image` позволяет внедрять логотипы или графики. +- **Создать таблицы**: идеально подходит для счетов‑фактур или отчётов. +- **Применить защиту**: установите пароль на PDF, если он содержит конфиденциальные данные. + +Каждая из этих тем опирается на фундамент, изложенный здесь, так что вы готовы к более продвинутым сценариям генерации PDF. + +--- + +### Продолжайте экспериментировать + +Не останавливайтесь на одном прямоугольнике — пробуйте разные формы, цвета и стили линий. API Aspose.PDF богато, и чем больше вы играете с ним, тем увереннее будете себя чувствовать. Если возникнут трудности, официальная документация Aspose — надёжный помощник, но помните, что код выше — готовое решение, которое можно скопировать и запустить уже сегодня. + +Счастливого кодинга, и пусть ваши PDF‑файлы всегда отображаются точно так, как вы задумали! + +{{< /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 913e015e7..c7300ca69 100644 --- a/pdf/russian/net/document-manipulation/_index.md +++ b/pdf/russian/net/document-manipulation/_index.md @@ -119,7 +119,7 @@ ### [Как добавлять и настраивать номера страниц в 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/) +### [Как добавить и удалять JavaScript в PDF-файлах с помощью Aspose.PDF .NET: подробное руководство](./aspose-pdf-net-add-remove-javascript-pdfs/) Узнайте, как добавлять и удалять функции JavaScript в ваших документах PDF с помощью Aspose.PDF для .NET. Улучшите интерактивность и функциональность вашего документа с помощью нашего пошагового руководства. ### [Как добавить несколько PDF-файлов с помощью Aspose.PDF для .NET: пошаговое руководство](./append-multiple-pdf-files-aspose-net/) @@ -207,7 +207,7 @@ Узнайте, как программно обновлять ссылки в файлах PDF с помощью Aspose.PDF для .NET. Эффективно автоматизируйте обновления ссылок с помощью этого пошагового руководства. ### [Как обновить цвет текста ссылки PDF с помощью Aspose.PDF .NET: полное руководство](./update-pdf-link-text-color-aspose-net/) -Узнайте, как легко изменить цвет текста ссылок в PDF-файлах с помощью Aspose.PDF для .NET. Это всеобъемлющее руководство охватывает советы по установке, внедрению и оптимизации. +Узнайте, как легко изменить цвет текста ссылок в PDF-файлах с помощью Aspose.PDF .NET. Это всеобъемлющее руководство охватывает советы по установке, внедрению и оптимизации. ### [Вставка страниц в PDF с помощью Aspose.PDF для .NET: полное руководство по работе с документами](./insert-pages-pdf-aspose-dotnet-guide/) Узнайте, как вставлять страницы в PDF с помощью Aspose.PDF для .NET. Это пошаговое руководство охватывает все от настройки до внедрения, идеально подходит для разработчиков C#. @@ -216,7 +216,7 @@ Узнайте, как вставлять страницы в PDF с помощью Aspose.PDF для .NET с помощью этого пошагового руководства. Эффективно оптимизируйте свой документооборот. ### [Вставка пустой страницы в PDF с помощью Aspose.PDF .NET: подробное руководство](./aspose-pdf-net-insert-empty-page/) -Узнайте, как легко вставлять пустые страницы в документы PDF с помощью Aspose.PDF для .NET. Следуйте этому пошаговому руководству, чтобы улучшить свои навыки работы с документами. +Узнайте, как легко вставлять пустые страницы в документы PDF с помощью Aspose.PDF .NET. Следуйте этому пошаговому руководству, чтобы улучшить свои навыки работы с документами. ### [Освойте метод MakeNUp Aspose.PDF .NET для создания эффективных макетов PDF](./aspose-pdf-net-make-nup-method-pdf-layout/) Узнайте, как эффективно переупорядочить несколько страниц PDF в новые макеты с помощью метода MakeNUp от Aspose.PDF .NET. Идеально подходит для информационных бюллетеней, брошюр и отчетов. @@ -309,7 +309,10 @@ Узнайте, как разделить многостраничные PDF-файлы и создать новые PDF-файлы с помощью Aspose.PDF для .NET. Следуйте этому подробному руководству с примерами кода. ### [Полное руководство по работе с PDF-файлами с помощью Aspose.PDF .NET: эффективная загрузка, сохранение и замена текста](./master-pdf-manipulation-aspose-pdf-net/) -Узнайте, как освоить манипуляции PDF с помощью Aspose.PDF для .NET. Это руководство охватывает загрузку, сохранение и замену текста в PDF-файлах, идеально подходит для разработчиков, стремящихся к эффективности. +Узнайте, как освоить манипуляции PDF с помощью Aspose.PDF .NET. Это руководство охватывает загрузку, сохранение и замену текста в PDF-файлах, идеально подходит для разработчиков, стремящихся к эффективности. + +### [Как замаскировать PDF в C# с помощью Aspose PDF – Полное руководство](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) +Узнайте, как с помощью Aspose PDF в C# удалять или скрывать конфиденциальную информацию в PDF-файлах, следуя пошаговому полному руководству. ## Дополнительные ресурсы diff --git a/pdf/russian/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/russian/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..c2278d97f --- /dev/null +++ b/pdf/russian/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,250 @@ +--- +category: general +date: 2026-03-06 +description: Узнайте, как редактировать PDF с помощью Aspose PDF на C#. Это пошаговое + руководство показывает, как загрузить PDF‑документ в C#, получить доступ к первой + странице PDF и удалить изображение из PDF. +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: ru +og_description: Как быстро редактировать PDF с помощью Aspose PDF на C#. Загрузите + PDF‑документ, получите доступ к первой странице PDF и удалите изображение из PDF + всего за несколько строк кода. +og_title: Как редактировать PDF в C# – учебник Aspose PDF +tags: +- Aspose PDF +- C# +- PDF Redaction +title: Как редактировать PDF в C# с помощью Aspose PDF – Полное руководство +url: /ru/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как редактировать PDF в C# с помощью Aspose PDF – Полное руководство + +Когда‑нибудь задавались вопросом **как редактировать PDF**‑файлы без лишних усилий? Возможно, вам передали контракт, скрывающий конфиденциальный логотип, или отчёт, в котором всё ещё отображается заполнитель‑изображение, которое нужно удалить. В такие моменты нужен надёжный программный способ избавиться от нежелательного контента — без ручных манипуляций в Acrobat. + +В этом руководстве мы пройдём пошаговое, полное решение, которое **загружает PDF‑документ C#**, **получает первую страницу PDF**, а затем **удаляет изображение из PDF** с помощью мощной библиотеки **Aspose PDF**. К концу вы получите полностью отредактированный PDF, готовый к распространению, и поймёте, почему каждая строка кода важна. + +> **Pro tip:** Aspose PDF работает с .NET Framework 4.6+ и .NET Core 3.1+, так что вы покрыты как на Windows, так и на Linux или macOS. + +--- + +![пример редактирования pdf](redact-pdf-before-after.png){alt="пример редактирования pdf"} + +## Что вам понадобится + +- **Aspose.PDF for .NET** (последний пакет NuGet) +- Среда разработки **C#** (Visual Studio, Rider или VS Code) +- Пример PDF, содержащий изображение, которое нужно удалить (назовём его `Sensitive.pdf`) + +Никаких дополнительных сторонних инструментов, без OCR, только чистый код. + +--- + +## Шаг 1: Load PDF Document C# – Первый шаг + +Прежде чем что‑то редактировать, нужно загрузить файл в память. Класс `Document` — точка входа для любой операции Aspose PDF. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**Почему это важно:** +`Document` разбирает всю структуру PDF, создавая объектную модель, позволяющую манипулировать страницами, ресурсами и аннотациями. Если файл не удаётся загрузить (неправильный путь, повреждённый PDF), сразу будет выброшено исключение — вы узнаете о проблеме сразу. + +### Распространённая ошибка + +> *«Я получаю `FileNotFoundException`, хотя файл существует.»* +> Убедитесь, что путь абсолютный, либо рабочая директория проекта совпадает с местоположением `Sensitive.pdf`. Использование `Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")` поможет избежать проблем с относительными путями. + +--- + +## Шаг 2: Access First PDF Page – Где находится изображение + +Изображения хранятся как ресурсы на уровне каждой страницы. Во многих простых PDF‑файлах виновата первая страница, поэтому получим её. + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**Почему это важно:** +Aspose PDF использует индексацию страниц, начинающуюся с 1, что несколько необычно для большинства коллекций .NET. Доступ к неправильной странице может привести к редактированию неверного контента — или, что ещё хуже, оставить конфиденциальное изображение нетронутым. + +### Учёт особых случаев + +Если ваш документ не содержит страниц (пустой PDF), попытка обратиться к `pdfDocument.Pages[1]` вызовет `IndexOutOfRangeException`. Быстрая проверка спасёт вас: + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +--- + +## Шаг 3: Remove Image from PDF – Удаляем ресурс + +Aspose PDF позволяет удалять ресурс по имени. Большинство изображений называют `Im1`, `Im2` и т.д., но вы можете проверить `firstPage.Resources.Images`, чтобы убедиться. + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**Почему это важно:** +`RedactResource` удаляет изображение *и* все ссылки на него на странице, заполняя пустое место пустым пространством вместо битой ссылки. Это чистый, стандартный способ стирания контента в PDF. + +### Как найти правильное имя изображения + +Если не уверены, как называется изображение (`"Im1"`): + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +Запустите этот фрагмент, посмотрите вывод в консоли и замените `"Im1"` на фактический ключ, который вы увидите. + +--- + +## Шаг 4: Save the Redacted PDF – Завершаем работу + +Теперь, когда нежелательное изображение удалено, сохраняем изменения на диск. + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**Почему это важно:** +Сохранение в **новый** файл оставляет оригинал нетронутым — это страховка на случай, если понадобится откат. Если нужно перезаписать, просто укажите путь оригинального файла в методе `Save`, но помните, что операция необратима. + +### Проверка результата + +Откройте `Redacted.pdf` в любом PDF‑просмотрщике. Место, где было изображение, должно быть пустым, а остальная часть документа должна выглядеть идентично оригиналу. Если макет страницы сместился, проверьте, что удалили только нужный ресурс, а не общий XObject. + +--- + +## Полный рабочий пример + +Собрав всё вместе, получаем полностью готовую к запуску программу: + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**Ожидаемый вывод** (в консоли): + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +Когда откроете `Redacted.pdf`, изображение `Im1` исчезнет, оставив чистую страницу. + +--- + +## Часто задаваемые вопросы + +### Работает ли это с зашифрованными PDF? + +Если исходный PDF защищён паролем, передайте пароль в конструктор `Document`: + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### Что делать, если изображение появляется на нескольких страницах? + +Пройдите по каждой странице и вызовите `RedactResource` с тем же именем изображения (или определите имя для каждой страницы). Пример: + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### Можно ли редактировать текст тем же способом? + +Да — используйте `page.Contents.RedactText("confidential")` или класс `Redactor` для более сложных шаблонов. Это отдельное руководство, но принцип аналогичен тому, что мы сделали с изображениями. + +--- + +## Итоги – Что мы достигли + +Мы ответили на вопрос **как редактировать PDF** программно, выполнив: + +1. **Loading PDF document C#** с помощью Aspose PDF. +2. **Accessing first PDF page** для поиска нужного ресурса. +3. **Removing image from PDF** через `RedactResource`. +4. **Saving** очищенную версию безопасно. + +Подход быстрый, повторяемый и подходит для пакетных задач — идеален для конвейеров соответствия требованиям или автоматической генерации отчётов. + +Если хотите пойти дальше, изучите: + +- **Пакетную редактировку** всех PDF в папке. +- **Редактирование текста** с использованием регулярных выражений через `Redactor`. +- **Добавление водяного знака** после редактирования, чтобы пометить документ как «очищенный». + +Попробуйте, настройте логику определения имени изображения под свои файлы, + +{{< /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/performance-optimization/_index.md b/pdf/russian/net/performance-optimization/_index.md index bd46ce5c3..baf053df0 100644 --- a/pdf/russian/net/performance-optimization/_index.md +++ b/pdf/russian/net/performance-optimization/_index.md @@ -50,6 +50,9 @@ ### [Отключение шрифтов в PDF-файлах с помощью Aspose.PDF для .NET: уменьшение размера файла и повышение производительности](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) Узнайте, как извлечь шрифты из ваших PDF-файлов с помощью Aspose.PDF для .NET. Оптимизируйте производительность PDF, уменьшите размер файла и улучшите время загрузки с помощью этого пошагового руководства. +### [Как сжать PDF с помощью Aspose.PDF – быстрое руководство](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) +Узнайте, как быстро сжать PDF-файлы, используя возможности Aspose.PDF, чтобы уменьшить размер без потери качества. + ## Дополнительные ресурсы - [Документация Aspose.PDF для сети](https://docs.aspose.com/pdf/net/) diff --git a/pdf/russian/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/russian/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..0ec4d47e2 --- /dev/null +++ b/pdf/russian/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,202 @@ +--- +category: general +date: 2026-03-06 +description: Узнайте, как мгновенно сжать PDF с помощью Aspose.Pdf. Это руководство + показывает, как уменьшить размер PDF‑файла с помощью без потерь сжатия PDF. +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: ru +og_description: Как сжать PDF с помощью Aspose.Pdf? Следуйте этому пошаговому руководству, + чтобы уменьшить размер PDF‑файла, достичь без потерь сжатия PDF и сохранить оптимизированные + PDF‑файлы. +og_title: как сжать PDF с помощью Aspose.Pdf – краткое руководство +tags: +- pdf +- aspnet +- csharp +title: Как сжать PDF с помощью Aspose.Pdf – краткое руководство +url: /ru/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< 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. К концу вы узнаете, как **уменьшить размер pdf файла**, сохранить изображения чёткими с помощью **без потерь сжатия pdf**, и наконец **сохранить оптимизированный pdf** файл, который будет корректно открываться в любом просмотрщике. + +## Что вы узнаете + +- Загрузить тяжёлый PDF (например, содержащий изображения высокого разрешения) в память. +- Применить оптимизатор Aspose.Pdf с его настройками без потерь по умолчанию. +- Сохранить результат как новый, более маленький файл. +- Советы по тонкой настройке сжатия, если нужен более сильный эффект. + +Никаких внешних инструментов, никаких загадочных командных трюков — только чистый C# код и понятные объяснения. + +## Требования + +| Requirement | Зачем это нужно | +|-------------|-----------------| +| .NET 6.0 или новее (или .NET Framework 4.6+) | Aspose.Pdf поддерживает обе платформы; более новые среды дают лучшую производительность. | +| Aspose.Pdf for .NET NuGet package (`Aspose.Pdf`) | Класс `Document` находится здесь. | +| PDF с большими изображениями (например, `HeavyImages.pdf`) | Даёт вам реальный материал для сжатия. | +| Visual Studio, Rider или любой другой C# редактор по вашему выбору | Комфорт важен — выбирайте то, что удобно. | + +> **Pro tip:** Если вы работаете в CI/CD конвейере, добавьте ссылку на NuGet в ваш `.csproj`, чтобы сборка никогда не забывала её. + +```xml + + + +``` + +## Шаг 1: Загрузите PDF, который хотите сжать + +Сначала нам нужен объект `Document`, указывающий на исходный файл. Представьте, что вы открываете книгу перед тем, как начать редактировать главы. + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*Почему это важно:* Загрузка файла даёт Aspose.Pdf возможность прочитать все встроенные ресурсы (изображения, шрифты и т.д.). Без этого шага нечего **уменьшать размер pdf файла**. + +## Шаг 2: Примените без потерь сжатие PDF + +Aspose.Pdf поставляется с методом `Optimize`, который по умолчанию запускает процедуру **без потерь сжатия pdf**. Он удаляет избыточные объекты, повторно сжимает изображения, сохраняя визуальное качество, и удаляет неиспользуемые шрифты. + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*Почему это важно:* Оптимизатор по умолчанию разработан для **уменьшения размера pdf файла**, сохраняя каждый пиксель. Если позже вы решите, что небольшая потеря качества приемлема, закомментированный `OptimizationOptions` позволяет обменять несколько килобайт на скорость. + +## Шаг 3: Сохраните оптимизированный PDF + +Теперь, когда документ стал легче, мы записываем его в новый файл. Сохранять оригинал нетронутым — хорошая привычка, особенно при тестировании разных настроек. + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +После сохранения сравните размеры файлов: + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +Вы должны увидеть заметное снижение — обычно **30‑70 %**, в зависимости от количества изображений высокого разрешения в исходном файле. + +![как сжать pdf – до и после оптимизации](image.png "как сжать pdf") + +*Image alt text:* как сжать pdf – до и после оптимизации + +## Продвинутый уровень: Настройка сжатия для конкретных сценариев + +Хотя оптимизатор по умолчанию подходит для большинства случаев, иногда требуется **уменьшить размер pdf файла** ещё сильнее: + +| Сценарий | Настройка для изменения | Эффект | +|----------|------------------------|--------| +| PDF с множеством растровых изображений | `CompressImages = true` + уменьшить `ImageQuality` (например, 70) | Сокращает количество байт изображения, небольшая визуальная потеря. | +| PDF, содержащие дублирующиеся шрифты | `RemoveUnusedObjects = true` | Удаляет шрифты, которые не используются. | +| PDF с большим объёмом метаданных | `RemoveMetadata = true` | Убирает скрытые XML/блоки метаданных. | + +Вы можете объединить эти параметры в объект `OptimizationOptions` и передать его в `pdfDoc.Optimize(options)`. + +## Часто задаваемые вопросы и особые случаи + +**Что если PDF уже оптимизирован?** +Aspose.Pdf всё равно просканирует документ, но изменение размера будет минимальным. Запуск оптимизатора на уже лёгком файле безопасен; он ничего не испортит. + +**Можно ли сжать зашифрованные PDF?** +Да, но перед вызовом `Optimize` нужно указать пароль. Пример: + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**Что насчёт PDF с векторной графикой?** +Векторные объекты уже лёгкие, поэтому оптимизатор сосредотачивается на растровых изображениях и метаданных. Ожидайте умеренный прирост для файлов, состоящих только из векторов. + +## Полный, исполняемый пример + +Ниже представлено автономное консольное приложение, которое можно скопировать и вставить в новый `.csproj`. Оно демонстрирует всё обсужденное — от загрузки до проверки. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +Запустите программу, откройте `Optimized.pdf` в любом просмотрщике, и вы увидите тот же макет страниц, те же чёткие изображения, но более лёгкий файл. Это магия **без потерь сжатия pdf**. + +## Заключение + +Мы рассмотрели **как сжать pdf** файлы с помощью встроенного оптимизатора Aspose.Pdf, продемонстрировали практический процесс **уменьшения размера pdf файла**, и объяснили причины каждого шага. Следуя трёхшаговой схеме — загрузка, оптимизация, сохранение — вы можете **уменьшать размер pdf файла** «на лету», сохранять изображения нетронутыми с помощью **без потерь сжатия pdf** и уверенно **сохранять оптимизированный pdf** для дальнейшего использования. + +Готовы к следующему вызову? Попробуйте связать этот оптимизатор с пакетным скриптом для обработки всей папки, или поэкспериментировать с опциональными `OptimizationOptions`, чтобы вытеснить последние несколько килобайт. Те же принципы работают независимо от того, создаёте ли вы настольный инструмент, веб‑API или серверный пакетный процесс. + +Есть дополнительные вопросы о работе с PDF, особенностях Aspose.Pdf или ввод‑выводе файлов в .NET? Оставьте комментарий ниже, и давайте продолжать обсуждение. Счастливого сжатия! + +{{< /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/programming-with-security-and-signatures/_index.md b/pdf/russian/net/programming-with-security-and-signatures/_index.md index 93a8346a6..7ad6a2653 100644 --- a/pdf/russian/net/programming-with-security-and-signatures/_index.md +++ b/pdf/russian/net/programming-with-security-and-signatures/_index.md @@ -34,6 +34,8 @@ | [Подпишите с помощью смарт-карты, используя подпись в файле PDF](./sign-with-smart-card-using-pdf-file-signature/) | Узнайте, как подписывать файлы PDF с помощью смарт-карты с Aspose.PDF для .NET. Следуйте этому пошаговому руководству для безопасных цифровых подписей. | | [Подпишите с помощью смарт-карты, используя поле подписи](./sign-with-smart-card-using-signature-field/) | Узнайте, как безопасно подписывать PDF-файлы с помощью смарт-карты с помощью Aspose.PDF для .NET. Следуйте нашему пошаговому руководству для легкой реализации. | | [Проверка подписей PDF в C# – Как читать подписанные PDF-файлы](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) | Узнайте, как проверять подписи PDF и читать подписанные файлы с помощью Aspose.PDF для .NET на C#. | +| [Как проверить подпись в PDF с помощью C# – Полное руководство Aspose](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) | Узнайте, как проверять подписи PDF в C# с помощью Aspose.PDF для .NET. Пошаговое руководство для разработчиков. | +| [Добавить цифровую подпись PDF в C# – Полное пошаговое руководство](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) | Узнайте, как добавить цифровую подпись в PDF с помощью Aspose.PDF для .NET на C#. Полное пошаговое руководство. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/russian/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/russian/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..5995134bb --- /dev/null +++ b/pdf/russian/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,259 @@ +--- +category: general +date: 2026-03-06 +description: Добавьте цифровую подпись PDF с помощью Aspose.PDF. Узнайте, как создать + отдельную подпись PKCS7 и подписать PDF, используя PFX с пользовательским обратным + вызовом. +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: ru +og_description: Быстро добавьте цифровую подпись в PDF. Это руководство показывает, + как создать откреплённую подпись PKCS7 и подписать PDF с помощью PFX в C#. +og_title: Добавление цифровой подписи PDF в C# – Полный учебник по программированию +tags: +- Aspose.PDF +- C# +- Digital Signature +title: Добавление цифровой подписи в PDF на C# – полное пошаговое руководство +url: /ru/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Добавление цифровой подписи PDF – Полное пошаговое руководство + +Когда‑то вам нужно было **add digital signature pdf** файлы, но вы не знали, с чего начать? Вы не одиноки; многие разработчики сталкиваются с тем же, когда документы требуют юридически обязательной подписи, а код умеет только генерировать обычные PDF. + +В этом руководстве мы пошагово рассмотрим практическое решение, которое позволяет **add digital signature pdf** документы с помощью Aspose.PDF для .NET, создать PKCS#7 отделённую подпись и подписать PDF сертификатом PFX — всё на чистом C#. К концу вы получите готовый фрагмент кода, поймёте «почему» каждого вызова и узнаете, как адаптировать подход под особые случаи. + +## Что вы узнаете + +- Как загрузить неподписанный PDF и подготовить его к подписи. +- Механика **create pkcs7 detached signature** и почему может быть предпочтительнее отделённая подпись, а не встроенная. +- Точные шаги для **sign pdf using pfx** с пользовательским обратным вызовом, дающим полный контроль над криптографическим процессом. +- Советы по устранению распространённых проблем (отсутствующий сертификат, неверный алгоритм хеширования и т.д.). + +### Требования + +| Требование | Причина | +|-------------|--------| +| .NET 6.0 или новее | Современные возможности языка и лучшая работа с памятью. | +| Aspose.PDF for .NET (NuGet‑пакет) | Предоставляет `PdfFileSignature`, `PKCS7Detached` и другие утилиты для PDF. | +| Действительный PFX‑файл (`.pfx`) с закрытым ключом | Необходим для шага **sign pdf using pfx**. | +| Базовые знания C# | Код прост, но понимание операторов `using` помогает. | + +> **Совет:** Держите пароль от PFX вне системы контроля версий — используйте переменные окружения или Azure Key Vault в продакшене. + +--- + +## Как добавить цифровую подпись PDF с помощью Aspose.PDF + +Ниже процесс разбит на пять удобных шагов. Каждый шаг включает фрагмент кода, объяснение *почему* он важен и быструю проверку. + +![Скриншот подписанного PDF в просмотрщике, показывающий видимое поле подписи](/images/add-digital-signature-pdf.png "пример добавления цифровой подписи pdf") + +### Шаг 1 – Загрузка неподписанного PDF‑документа + +Сначала нам нужен объект `Document`, представляющий PDF, который вы хотите подписать. Использование `using var` гарантирует автоматическое освобождение файлового дескриптора. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**Почему?** +Aspose рассматривает PDF как объектный граф; его загрузка даёт доступ к страницам, аннотациям и внутреннему байтовому потоку, который позже будет хеширован для подписи. + +### Шаг 2 – Инициализация помощника PdfFileSignature + +`PdfFileSignature` — класс, который действительно применяет криптографическую оболочку. Он работает рука‑в‑руку с `PKCS7Detached`. + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**Почему?** +Разделение подписывающего от документа позволяет переиспользовать тот же экземпляр `Document` для других операций (например, добавления водяных знаков) перед финальной подписью. + +### Шаг 3 – Создание PKCS#7 отделённой подписи (Create PKCS7 Detached Signature) + +**PKCS#7 отделённая подпись** хранит только хеш PDF, а не сам PDF. Это идеально для больших документов или когда нужно оставить оригинальный файл неизменным. + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**Почему пользовательский обратный вызов?** +Иногда ключ подписи находится в HSM или Azure Key Vault, и вы не можете напрямую извлечь закрытый ключ. Предоставив `CustomSignHash`, вы передаёте хеш в сервис, где хранится ключ, сохраняя закрытый материал в безопасности. + +**А если пользовательский обратный вызов не нужен?** +Можно опустить `CustomSignHash`; Aspose автоматически использует закрытый ключ из PFX. Однако кастомный путь более гибок и соответствует требованиям комплаенса. + +### Шаг 4 – Применение подписи к конкретной странице (Sign PDF Using PFX) + +Теперь мы размещаем видимое поле подписи на странице. Прямоугольник задаёт положение и размер (в пунктах). + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**Почему указывать прямоугольник?** +Видимая подпись позволяет конечному пользователю увидеть, что документ подписан. Если установить `isVisible` в `false`, подпись станет невидимой — всё равно действительной, но её труднее обнаружить. + +**Крайний случай:** Если у PDF нет страниц (пустой файл), вызов бросит `ArgumentOutOfRangeException`. Всегда проверяйте `pdfDocument.Pages.Count > 0` перед подписью. + +### Шаг 5 – Сохранение подписанного PDF + +Наконец, сохраняем подписанный документ на диск. Можно также напрямую передать его в ответе ASP.NET Core. + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**Совет по проверке:** Откройте полученный файл в Adobe Acrobat Reader. Панель подписи должна показывать зелёную галочку (при условии, что сертификат доверен на машине). + +--- + +## Полный рабочий пример + +Объединив всё вместе, получаем автономную консольную программу, которую можно скопировать, вставить и запустить (после корректировки путей и паролей). + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**Ожидаемый вывод:** Консоль выводит «✅ PDF signed successfully!», а файл `CustomSigned.pdf` появляется в той же папке. При открытии вы увидите виджет подписи в координатах (100,100)‑(300,200). + +--- + +## Часто задаваемые вопросы и крайние случаи + +### Что если мой PFX защищён смарт‑картой? + +Используйте делегат `CustomSignHash`, чтобы передать хеш драйверу смарт‑карты. Драйвер вернёт байты подписи, и Aspose встроит их, не раскрывая закрытый ключ. + +### Можно ли подписать несколько страниц одновременно? + +Да. Вызывайте `pdfSigner.Sign` внутри цикла, меняя `pageNumber` и при необходимости прямоугольник для каждой страницы. Учтите, что каждый вызов добавляет отдельный объект подписи; некоторые просмотрщики могут перечислять их по отдельности. + +### Как изменить алгоритм хеширования? + +`PKCS7Detached` по умолчанию использует SHA‑256, но можно задать свойство `HashAlgorithm`: + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +Убедитесь, что ваш провайдер подписи поддерживает выбранный алгоритм. + +### Что если цепочка сертификатов не доверена на клиентской машине? + +Включите полную цепочку в PFX или распространите корневой сертификат в хранилище доверенных у конечного пользователя. Иначе Acrobat покажет «Signature is unknown». + +### Совместима ли отделённая подпись с PDF/A‑3? + +PDF/A‑3 требует встроенных подписей, поэтому отделённый PKCS#7 может не соответствовать требованиям. В этом случае уберите делегат `CustomSignHash` и позвольте Aspose выполнить подпись internally, что создаст встроенную подпись. + +--- + +## Лучшие практики для продакшна + +1. **Никогда не храните пароли в коде.** Получайте их из переменных окружения или менеджера секретов. +2. **Проверяйте PDF перед подписью.** Повреждённые файлы вызывают `PdfFileSignatureException`. +3. **Записывайте алгоритм хеширования и отпечаток сертификата** для аудита. +4. **Тестируйте в разных PDF‑просмотрщиках** (Adobe Reader, Foxit, Chrome), чтобы убедиться, что подпись отображается корректно. +5. **Рассмотрите возможность тайм‑стампинга** путем добавления запроса к TSA (Time‑Stamp Authority), что дополнительно укрепит юридическую силу подписи. + +--- + +## Заключение + +Мы только что показали, как **add digital signature pdf** файлы с помощью Aspose.PDF, создать **PKCS#7 detached signature** и **sign pdf using pfx** с пользовательским обратным вызовом. Полный пример работает «из коробки», а объяснения дают уверенность в настройке процесса для HSM, сервисов тайм‑стампа или соответствия PDF/A. + +Далее вы можете изучить **signing multiple documents in batch**, интегрировать **Azure Key Vault** для безопасного хранения ключей или добавить **visual customization** к внешнему виду подписи. Все эти темы опираются непосредственно на фундамент, заложенный здесь. + +Если вы прошли все шаги, у вас теперь надёжное, пригодное для цитирования решение, которым можно поделиться с коллегами — или даже сослаться в ответе AI‑ассистента. Счастливой подписи, и не стесняйтесь оставить комментарий, если что‑то осталось неясным! + +{{< /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/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/russian/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..013a5c3fa --- /dev/null +++ b/pdf/russian/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,199 @@ +--- +category: general +date: 2026-03-06 +description: Узнайте, как проверять подпись в PDF с помощью Aspose PDF на C#. Пошаговая + проверка подписи PDF, валидация подписи PDF и обработка скомпрометированных подписей. +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: ru +og_description: Как проверить подпись в PDF с помощью Aspose PDF. Следуйте этому руководству, + чтобы выполнить проверку подписи PDF, подтвердить подпись PDF и обнаружить скомпрометированные + подписи в C#. +og_title: Как проверить подпись в PDF с помощью C# – Полное руководство Aspose +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: Как проверить подпись в PDF с помощью C# – Полное руководство Aspose +url: /ru/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как проверить подпись в PDF с помощью C# – Полное руководство Aspose + +Когда‑то задумывались **как проверить подпись** в PDF, не теряя волосы? Вы не одиноки. Многие разработчики сталкиваются с проблемой, когда им нужна **pdf signature verification** для соответствия требованиям или аудита, а обычный подход «просто довериться библиотеке» может обернуться проблемами. + +В этом руководстве мы пройдем практическое, сквозное решение, которое не только **validate pdf signature**, но и сообщает, была ли подпись подделана. Мы будем использовать библиотеку **Aspose PDF**, что означает, что код работает на .NET 6+, .NET Framework 4.6+ и даже .NET Core. К концу вы получите готовый фрагмент кода, который можно вставить в любой проект C#. + +## Что понадобится + +- Пакет NuGet **Aspose.Pdf** (последняя версия на момент написания – 23.12). +- Среда разработки .NET (Visual Studio, Rider или VS Code). +- Подписанный PDF‑файл (назовём его `Signed.pdf`). +- Базовые знания C# – ничего сложного, только обычные `using` и ввод/вывод через `Console`. + +Вот и всё. Никаких дополнительных сервисов, никаких скрытых конфигурационных файлов. Готовы? Поехали. + +![how to verify signature diagram](image.png "how to verify signature") + +## Шаг 1: Настройте проект для проверки подписи PDF + +Прежде чем вы сможете вызвать любой API Aspose, нужно добавить ссылку на библиотеку. Откройте терминал или консоль диспетчера пакетов и выполните: + +```bash +dotnet add package Aspose.Pdf +``` + +Или, если предпочитаете графический интерфейс, найдите **Aspose.Pdf** в менеджере пакетов NuGet и установите его. Этот шаг критичен, потому что без сборки **aspose pdf signature** вы не сможете позже получить доступ к классу `PdfFileSignature`. + +> **Pro tip:** Нацельтесь на .NET 6 или выше, чтобы получить лучшую производительность и избежать предупреждений о совместимости со старыми версиями. + +## Шаг 2: Загрузите PDF‑документ + +После установки пакета можно загрузить PDF, который нужно проверить. Класс `Document` представляет весь файл в памяти. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**Почему это важно:** Загрузка документа даёт доступ к его внутренним структурам, включая поля подписи. Если файл отсутствует или повреждён, `Document` бросит исключение, которое вы можете перехватить для более мягкой реакции пользователя. + +## Шаг 3: Создайте объект Aspose PdfFileSignature + +Имея документ в руках, следующий шаг – создать экземпляр `PdfFileSignature`. Этот фасадный класс умеет читать, проверять и управлять цифровыми подписями, встроенными в PDF. + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**Пояснение:** Конструктор `PdfFileSignature` принимает загруженный `Document`. Внутри он разбирает словарь подписи, делая доступными методы `VerifySignature` и `IsSignatureCompromised`. + +## Шаг 4: Проверьте целостность подписи + +Сердце **pdf signature verification** – метод `VerifySignature`. Он возвращает `true`, если криптографический хеш совпадает с сохранённым значением и цепочка сертификатов доверена (при условии, что вы настроили менеджер доверия, что мы опустим для краткости). + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +Если у вас несколько подписей, просто измените индекс (`0`, `1`, …). Метод проверяет и целостность, и доверие за один вызов, поэтому он является предпочтительным в большинстве сценариев. + +## Шаг 5: Обнаружьте поддельную подпись + +Даже «валидная» подпись может быть подделана, если документ был изменён после подписания. Aspose предоставляет `IsSignatureCompromised` для обнаружения такого случая. + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**Когда использовать:** Представьте, что PDF подписан, а затем пользователь добавил комментарий или изменил страницу. Хеш изменится, и `IsSignatureCompromised` вернёт `true`, в то время как `VerifySignature` может остаться `true`, если сам сертификат в порядке. Проверка обоих флагов даёт полную картину. + +## Шаг 6: Интерпретируйте результаты + +Теперь у нас есть два булевых значения: `isSignatureValid` и `isSignatureCompromised`. Превратим их в дружелюбный вывод в консоль. + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### Ожидаемый вывод + +| Сценарий | Вывод в консоли | +|------------------------------------------|--------------------------------| +| Валидна и не подделана | `Signature OK` | +| Валидна, но подделана (документ изменён) | `Signature compromised!` | +| Невалидна (сертификат не доверен, хеш не совпадает) | `Signature verification failed` | + +Эта таблица помогает быстро сопоставить булевые результаты с понятными сообщениями. + +## Полный рабочий пример + +Собрав всё вместе, получаем полностью готовую к запуску программу: + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +Скопируйте, вставьте, поправьте `pdfPath` и запустите. Если всё настроено правильно, вы увидите одно из трёх сообщений, перечисленных выше. + +## Распространённые подводные камни и советы по проверке подписи PDF + +| Проблема | Почему происходит | Как исправить / избежать | +|----------|-------------------|--------------------------| +| **Отсутствует лицензия Aspose** | Бесплатная оценочная версия добавляет водяной знак и может ограничивать некоторые вызовы API. | Зарегистрировать лицензию (`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`). | +| **Несколько подписей, но неверный индекс** | Вы проверяете не ту подпись, получая ложные отрицательные результаты. | Пройтись циклом по `signatureVerifier.GetSignatureCount()` и проверить каждую. | +| **Цепочка сертификатов не доверена** | `VerifySignature` падает, если корневой CA отсутствует в доверенном хранилище. | Добавить удостоверяющий центр в хранилище Windows Trusted Root или настроить пользовательский `CertificateValidator`. | +| **Файл заблокирован другим процессом** | Открытие PDF, который ещё открыт где‑то, может вызвать `IOException`. | Использовать `FileStream` с `FileShare.ReadWrite` или скопировать файл во временную папку сначала. | +| **Неправильный путь к PDF** | Простая опечатка приводит к `FileNotFoundException`. | Проверить путь с помощью `File.Exists(pdfPath)` перед загрузкой. | + +### Пограничные случаи, с которыми вы можете столкнуться + +- **Отсоединённые подписи**: Некоторые PDF хранят подписи внешне. В текущей версии `PdfFileSignature` Aspose поддерживает только встроенные подписи. +- **Подписи с отметкой времени**: Если нужно проверять тайм‑стампинг‑авторитет (TSA), придётся вызвать `VerifySignature` с пользовательским объектом `VerificationOptions` — это выходит за рамки данного быстрого руководства, но важно для проектов с жёсткими требованиями к соответствию. + +## Следующие шаги – расширение логики проверки + +Теперь, когда вы освоили основы **how to verify signature**, вы можете: + +1. **Validate PDF signature** против списка доверенных сертификатов (например, корпоративного PKI). +2. **Экспортировать детали подписи** (имя подписанта, время подписания, отпечаток сертификата) с помощью `GetSignatureInfo`. +3. **Пакетно обрабатывать несколько PDF** в папке, записывая результаты в CSV для аудита. + +Все эти задачи легко реализовать, расширяя представленный код, и они остаются в рамках экосистемы **aspose pdf signature**. + +--- + +**В двух словах**, теперь вы точно знаете **how to verify signature** в PDF с помощью C# и Aspose, как обнаружить поддельную подпись и что делать, если проверка не прошла. Подход надёжен, работает с несколькими подписями и может быть интегрирован в более крупные конвейеры обработки документов. + +Есть свои варианты использования? Может, вам нужно подписывать PDF, а не проверять их, или вы работаете с зашифрованными PDF. Оставьте комментарий, и мы разберём эти сценарии вместе. Счастливого кодинга! + +{{< /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/programming-with-stamps-and-watermarks/_index.md b/pdf/russian/net/programming-with-stamps-and-watermarks/_index.md index e69e43d79..096505657 100644 --- a/pdf/russian/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/russian/net/programming-with-stamps-and-watermarks/_index.md @@ -36,6 +36,7 @@ | [Изображение в заголовке](./image-in-header/) | Узнайте, как добавить изображение в заголовок PDF-файла с помощью Aspose.PDF для .NET в этом пошаговом руководстве. | | [Номер страницы в верхнем и нижнем колонтитуле с использованием плавающего поля](./page-number-in-header-footer-using-floating-box/) | Легко добавляйте номера страниц в верхний и нижний колонтитулы PDF-файла с помощью плавающего поля с Aspose.PDF для .NET в этом пошаговом руководстве. | | [Штампы номеров страниц в файле PDF](./page-number-stamps/) Узнайте, как добавлять штампы номеров страниц в файлы PDF с помощью Aspose.PDF для .NET, из нашего простого руководства, дополненного примером кода. | +| [Создание PDF-документа с нумерацией Бейтса на C# – Полное руководство](./create-pdf-document-with-bates-numbering-in-c-full-guide/) | Узнайте, как добавить нумерацию Бейтса в PDF-документы с помощью Aspose.PDF для .NET на C# в этом полном руководстве. | | [Таблица в разделе «Заголовок и нижний колонтитул»](./table-in-header-footer-section/) | Узнайте, как легко добавить текст в нижний колонтитул PDF-файла с помощью Aspose.PDF для .NET. Пошаговое руководство включено для бесшовной интеграции. | | [Текст в нижнем колонтитуле PDF-файла](./text-in-footer/) | Узнайте, как добавить текст в нижний колонтитул PDF-файла с помощью Aspose.PDF для .NET. | | [Текст в заголовке PDF-файла](./text-in-header/) | Научитесь добавлять текстовые заголовки в PDF-файлы с помощью Aspose.PDF для .NET с помощью этого пошагового руководства. Улучшайте свои документы эффективно и действенно. | diff --git a/pdf/russian/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/russian/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..4bf60ddca --- /dev/null +++ b/pdf/russian/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,184 @@ +--- +category: general +date: 2026-03-06 +description: Создайте PDF‑документ на C# и легко добавьте номера Бейтса. Узнайте, + как добавить пустую страницу в PDF, разместить штамп на странице и реализовать нумерацию + Бейтса. +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: ru +og_description: Создайте PDF‑документ на C# и добавьте номер Бейтса. Это руководство + показывает, как добавить пустую страницу PDF, разместить штамп на странице и применить + нумерацию Бейтса. +og_title: Создание PDF‑документа с нумерацией Бейтса – учебник C# +tags: +- Aspose.Pdf +- C# +- PDF automation +title: Создание PDF‑документа с нумерацией Бейтса в C# – Полное руководство +url: /ru/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Создание PDF‑документа с нумерацией Бейтса в C# + +Когда‑нибудь вам нужно было **создать PDF‑документ** на C# и вы задавались вопросом, как добавить нумерацию Бейтса, не теряя волосы? Вы не одиноки — юридические фирмы, суды и даже некоторые корпоративные команды по соблюдению норм сталкиваются с этой задачей каждый день. Хорошая новость? С несколькими строками кода Aspose.Pdf вы можете создать совершенно новый PDF, добавить пустую страницу и нанести правильный номер Бейтса в одном плавном процессе. + +В этом руководстве мы пройдем весь процесс: от настройки проекта, до добавления пустой PDF‑страницы, до выяснения **how to add bates numbering**, и, наконец, **place stamp on page** и сохранения результата. К концу у вас будет готовый фрагмент кода, который можно вставить в любое приложение .NET. Никаких расплывчатых ссылок, только полный, исполняемый пример. + +## Что понадобится + +- **.NET 6+** (или .NET Framework 4.6+ – Aspose.Pdf работает с обоими) +- **Aspose.Pdf for .NET** пакет NuGet (`Install-Package Aspose.Pdf`) +- Хорошая IDE (Visual Studio, Rider или VS Code с расширением C#) + +Вот и всё. Никаких дополнительных DLL, никаких внешних сервисов. Погрузимся. + +## Шаг 1: Создание PDF‑документа – начальная настройка + +Сначала нам нужен новый объект `Document`. Представьте его как пустой холст, на котором будет размещено всё остальное. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **Почему это важно:** Класс `Document` является точкой входа для любой операции Aspose. Его создание дает доступ к коллекции `Pages`, метаданным и настройкам безопасности — всем строительным блокам профессионального PDF. + +## Шаг 2: Добавление пустой страницы PDF + +PDF без страниц — как книга без листов, довольно бесполезно. Добавление пустой страницы простое, и оно предоставляет поверхность для нанесения номера Бейтса. + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **Полезный совет:** Если нужны несколько страниц, просто вызывайте `pdfDocument.Pages.Add()` в цикле. Каждый вызов возвращает новый объект `Page`, который можно настраивать независимо. + +## Шаг 3: Как добавить нумерацию Бейтса – создание TextStamp + +Теперь переходим к сути: **Bates number**. В Aspose.Pdf это просто `TextStamp` со специальным флагом артефакта. + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **Почему мы устанавливаем `Artifact`**: Некоторые PDF‑просмотрщики показывают номера Бейтса как поисковые метаданные. Пометка штампа как артефакта `BatesNumbering` гарантирует, что последующие инструменты автоматически распознают его. + +## Шаг 4: Размещение штампа на странице + +С готовым штампом мы теперь **place stamp on page**. Это шаг, на котором визуальный номер действительно появляется в PDF. + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **Особый случай:** Если нужно, чтобы номер увеличивался на каждой странице, следует пройтись по `pdfDocument.Pages` в цикле и обновлять `batesStamp.Value` перед вызовом `AddStamp`. В данном примере используется простое статическое значение “Bates‑001”. + +## Шаг 5: Сохранение и проверка результата + +Наконец, сохраняем PDF на диск. Выберите папку, в которую у вас есть права записи; иначе возникнет `UnauthorizedAccessException`. + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +Когда откроете `BatesStamped.pdf` в любом просмотрщике, вы должны увидеть крошечный “Bates‑001”, аккуратно размещённый в правом нижнем углу пустой страницы. + +> **Ожидаемый результат:** +> ![PDF with Bates number stamp](image-placeholder.png "PDF with Bates number stamp") +> *Alt text: PDF с штампом номера Бейтса в правом нижнем углу.* + +Если номер не отображается, проверьте значения отступов и убедитесь, что размер страницы не слишком мал (по умолчанию A4 подходит). Также убедитесь, что флаг `Artifact` не удаляется какими‑либо инструментами пост‑обработки. + +## Полный рабочий пример + +Ниже приведена полная, готовая к копированию программа. Она включает все директивы `using` и комментарии, чтобы вы не потерялись. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +Запустите программу, откройте PDF, и вы увидите номер Бейтса точно там, где мы указали. 🎉 + +## Распространённые варианты и подводные камни + +| Сценарий | Что изменить | Почему | +|----------|----------------|-----| +| **Несколько страниц, увеличивающиеся номера** | Пройтись по `pdfDocument.Pages`, установить `batesStamp.Value = $"Bates-{i:D3}"` перед `AddStamp` | Даёт каждой странице уникальный идентификатор, типично для юридических пакетов | +| **Другой расположение (верх‑лево)** | Изменить `HorizontalAlignment = HorizontalAlignment.Left` и `VerticalAlignment = VerticalAlignment.Top` | Некоторые организации предпочитают номер в заголовке вместо нижнего колонтитула | +| **Пользовательский шрифт или цвет** | Установить `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` | Повышает читаемость или соответствует требованиям бренда | +| **Добавление существующего PDF в качестве фона** | Загрузить исходный PDF с помощью `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` | Полезно, когда нужно нанести штамп поверх заранее сгенерированной формы | + +## Подведение итогов + +Мы только что показали, как **create PDF document**, **add blank page pdf**, и **add bates number** с помощью Aspose.Pdf for .NET, затем **place stamp on page** и сохранить файл. Код намеренно компактный, чтобы вы могли адаптировать его к более крупным рабочим процессам — будь то пакетная обработка десятков файлов или интеграция в веб‑сервис. + +Если вы готовы пойти дальше, рассмотрите: + +- Автоматизировать логику увеличения для больших дел. +- Встроить генерацию PDF в API ASP.NET Core. +- Добавить безопасность (защиту паролем) с помощью `pdfDocument.Encrypt(...)`. + +Не стесняйтесь экспериментировать, ломать вещи и задавать вопросы в комментариях. Приятного кодинга, и пусть ваши PDF‑файлы всегда будут идеально проставлены! + +{{< /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/programming-with-tagged-pdf/_index.md b/pdf/russian/net/programming-with-tagged-pdf/_index.md index 38fcad230..3f22ff459 100644 --- a/pdf/russian/net/programming-with-tagged-pdf/_index.md +++ b/pdf/russian/net/programming-with-tagged-pdf/_index.md @@ -45,6 +45,7 @@ | [Элементы структуры текста в файле PDF](./text-structure-elements/) Научитесь манипулировать элементами структуры текста в PDF-файлах с помощью Aspose.PDF для .NET. Это пошаговое руководство охватывает все необходимое для создания структурированных PDF-файлов. | | [Проверить PDF-файл](./validate-pdf/) | Узнайте, как проверить PDF-файл с помощью Aspose.PDF для .NET. Проверьте его соответствие стандартам и создайте отчет о проверке. | | [Создать тегированный PDF на C# – Полное пошаговое руководство](./create-tagged-pdf-in-c-complete-step-by-step-guide/) | Подробное руководство по созданию полностью тегированного PDF в C# с использованием Aspose.PDF, шаг за шагом. | +| [Создать тегированный PDF на C# – Пошаговое руководство](./create-tagged-pdf-in-c-step-by-step-guide/) | Пошаговое руководство по созданию тегированного PDF в C# с использованием Aspose.PDF. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/russian/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/russian/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..1aa0fdbe9 --- /dev/null +++ b/pdf/russian/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,282 @@ +--- +category: general +date: 2026-03-06 +description: Создайте PDF с тегами с помощью Aspose.Pdf на C#. Узнайте, как добавить + изображение в PDF, установить позицию рисунка и пометить PDF для обеспечения доступности. +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: ru +og_description: Создайте PDF с тегами с помощью Aspose.Pdf. Это руководство показывает, + как добавить изображение в PDF, установить позицию фигуры и пометить PDF для обеспечения + доступности. +og_title: Создание тегированного PDF в C# – Полный учебник +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: Создание помеченного PDF в C# — пошаговое руководство +url: /ru/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Создание помеченного PDF в C# – Полный учебник + +Когда‑нибудь вам нужно было **create tagged PDF** в C#, но вы не знали, с чего начать? Вы не одиноки; доступность сегодня обязательна, а помеченный PDF – это основа соответствующего документа. В этом учебнике мы пройдем реальный пример, который **adds image to PDF**, задает позицию фигуры и показывает **how to tag PDF** с помощью Aspose.Pdf. К концу вы получите полностью помеченный PDF, готовый к отправке кому угодно. + +Мы охватим всё: от загрузки существующего файла до сохранения финального результата, чтобы вам не пришлось искать “how to add image” в других местах. Без лишних слов — только чёткое, готовое к запуску решение, работающее с Aspose.Pdf 23.8 (самой последней на момент написания). Возьмите свою IDE и приступим. + +--- + +## Что понадобится + +- **Aspose.Pdf for .NET** (NuGet‑пакет `Aspose.Pdf`). +- .NET 6+ (или .NET Framework 4.7.2+). +- Исходный PDF, у которого уже есть логическая структура (т.е. он уже помечен) – если нет, включите пометку через `pdfDocument.TaggedContent = true`. +- Файл изображения (`image.png`), который вы хотите встроить. + +Это всё. Никаких дополнительных библиотек, никаких скрытых конфигурационных файлов. + +--- + +## Шаг 1: Загрузка существующего PDF‑документа (Create Tagged PDF Base) + +Первое, что мы делаем, — открываем PDF, который хотим улучшить. Загрузка файла даёт нам доступ к его логической структуре, что необходимо для **create tagged pdf** процессов. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*Почему это важно:* Без дерева тегов PDF не будет передавать структурную информацию скрин‑ридерам. Включение пометок гарантирует, что любые новые элементы (например, фигура) наследуют правильную иерархию. + +--- + +## Шаг 2: Доступ к корню логической структуры (How to Tag PDF) + +Теперь мы погружаемся в логическую структуру PDF. Корневой элемент является контейнером для всех тегов – представьте его как схему документа. + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*Объяснение:* `logicalRoot` позволяет нам добавлять новые теги, такие как `
` или `
`. Это ядро **how to tag PDF** программно. + +--- + +## Шаг 3: Создание тега Figure и установка его позиции (Set Figure Position) + +Тег *Figure* группирует визуальный контент с необязательной подписью. Мы создадим его, зададим позицию и привяжем к корню. + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*Почему мы задаём позицию:* Шаг **set figure position** определяет, где визуальный элемент окажется на странице. Если пропустить его, фигура может появиться в неожиданном месте или быть невидимой для вспомогательных технологий. + +--- + +## Шаг 4: Добавление визуального представления – вставка изображения (Add Image to PDF) + +С тегом на месте нам нужно реальное изображение. Это часть, отвечающая за **add image to pdf**. + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*Ключевой момент:* Координаты прямоугольника должны соответствовать `figureTag.Position`, определённому ранее; иначе фигура и её визуальное содержимое будут рассинхронизированы, нарушая доступность. + +--- + +## Шаг 5: Сохранение обновлённого PDF (Finish Creating Tagged PDF) + +Наконец, сохраняем изменения в новый файл. Оставлять оригинал нетронутым — хорошая практика. + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +На этом этапе у вас есть файл **create tagged pdf**, содержащий правильно позиционированное изображение, обёрнутое в тег `
`. Откройте `output.pdf` в Adobe Acrobat и проверьте панель *Tags* – вы должны увидеть узел `Figure` под корнем. + +--- + +## Полный, готовый к запуску пример + +Ниже приведена полная программа, которую можно скопировать и вставить в консольное приложение. Все шаги уже расположены в правильном порядке. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### Ожидаемый результат + +- `output.pdf` открывается с изображением, отображённым в точках (100, 150), размером 300 × 200 точек. +- Панель *Tags* показывает элемент `Figure`, охватывающий изображение. +- Инструменты чтения с экрана объявляют «Figure» перед описанием картинки, удовлетворяя базовым требованиям доступности. + +--- + +## Часто задаваемые вопросы и особые случаи + +### Что делать, если исходный PDF ещё не помечен? + +Aspose.Pdf позволяет включить пометку, установив `pdfDocument.TaggedContent.IsTagged = true;`. Библиотека сгенерирует дерево тегов по умолчанию, после чего вы сможете добавлять пользовательские теги, как показано. + +### Можно ли добавить подпись к фигуре? + +Да. После создания `figureTag` вы можете прикрепить `Paragraph` с `TextFragment` и задать его `Tag` как `Caption`. Пример: + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### Как разместить фигуру на другой странице? + +Замените `var firstPage = pdfDocument.Pages[1];` нужным индексом страницы, например `pdfDocument.Pages[3]`. Не забудьте скорректировать координаты `Position`, если размер страницы отличается. + +### Что если нужно пометить несколько изображений? + +Создайте новый `Figure` для каждого изображения, задайте каждому уникальную `Position` и добавьте соответствующий объект `Image` на нужную страницу. Цикл по коллекции изображений отлично подходит. + +### Работает ли это с соответствием PDF/A? + +Aspose.Pdf поддерживает PDF/A‑1b, PDF/A‑2b и PDF/A‑3b. При генерации документа PDF/A убедитесь, что режим соответствия установлен перед сохранением: + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +Логика пометок остаётся той же. + +--- + +## Профессиональные советы и подводные камни + +- **Pro tip:** Всегда используйте абсолютные пути или `Path.Combine`, чтобы избежать ошибок «file‑not‑found» во время выполнения. +- **Watch out for:** Несоответствие координат между тегом `Figure` и прямоугольником `Image` – вспомогательные технологии полагаются на эту синхронизацию. +- **Performance note:** При обработке большого количества страниц оборачивайте поток изображения в блок `using`, чтобы быстро освобождать ресурсы. +- **Version check:** Показанный API работает с Aspose.Pdf 23.8+. Более старые версии могут иметь слегка отличающиеся названия классов (например, `LogicalStructureElement` вместо `FigureElement`). + +--- + +## Заключение + +Мы только что **create tagged pdf** от начала до конца, продемонстрировали **add image to pdf** и показали, как **set figure position**, отвечая одновременно на **how to tag pdf** и **how to add image** в едином, связном примере. Код готов к запуску, объяснения покрывают «почему» каждого шага, и теперь у вас есть прочная база для создания доступных PDF в C#. + +Готовы к следующему вызову? Попробуйте добавить таблицы с тегами `
` или внедрить слой соответствия PDF/A‑2b для архивных целей. Один и тот же шаблон – загрузка, доступ к логической структуре, создание тега, привязка визуального контента, сохранение – применяется ко многим задачам по доступности PDF. + +Если столкнётесь с проблемой или у вас есть сценарий, который здесь не охвачен, оставьте комментарий ниже. Счастливой разметки и приятного создания PDF, которые могут читать все! + +![Diagram showing a PDF with a Figure tag and image – illustrates how to create tagged pdf](placeholder-image.png "create tagged pdf example") + +{{< /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/digital-signatures/_index.md b/pdf/spanish/net/digital-signatures/_index.md index 2a0b3a733..16adab08e 100644 --- a/pdf/spanish/net/digital-signatures/_index.md +++ b/pdf/spanish/net/digital-signatures/_index.md @@ -47,6 +47,9 @@ Aprenda a verificar firmas digitales en archivos PDF con Aspose.PDF para .NET. E ### [Verificar firma PDF en C# – Guía paso a paso](./verify-pdf-signature-in-c-step-by-step-guide/) Aprenda a verificar firmas PDF en C# usando Aspose.PDF con una guía paso a paso. +### [Cómo leer firmas en PDF con C# – Guía paso a paso](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +Aprenda a leer y extraer firmas digitales de archivos PDF usando C# y Aspose.PDF con esta guía paso a paso. + ### [Domine la firma y verificación de PDF con Aspose.PDF .NET](./mastering-aspose-pdf-net-sign-verify-smart-card-certificates/) Un tutorial de código para Aspose.PDF Net diff --git a/pdf/spanish/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/spanish/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..cdcc72d9d --- /dev/null +++ b/pdf/spanish/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-03-06 +description: Cómo leer firmas en un PDF usando C#. Aprende a cargar documentos PDF + con C#, listar firmas PDF y obtener firmas digitales PDF de forma rápida y fiable. +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: es +og_description: Cómo leer firmas en un PDF usando C#. Esta guía muestra cómo cargar + un documento PDF en C#, listar las firmas del PDF y recuperar firmas digitales del + PDF en unos pocos pasos fáciles. +og_title: Cómo leer firmas en PDF con C# – Guía completa +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: Cómo leer firmas en PDF con C# – Guía paso a paso +url: /es/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo leer firmas en PDF con C# – Guía completa + +¿Alguna vez te has preguntado **cómo leer firmas** que ya están incrustadas en un archivo PDF? Tal vez estés construyendo un panel de cumplimiento, o simplemente necesites auditar contratos firmados antes de que lleguen a tu base de datos. La buena noticia es que con unas pocas líneas de C# y la biblioteca Aspose.Pdf puedes extraer los nombres de las firmas directamente del archivo—sin necesidad de inspección manual. + +En este tutorial recorreremos la carga de un documento PDF en C#, la enumeración de firmas PDF y la obtención de información de firmas digitales PDF. Al final tendrás una aplicación de consola lista para ejecutar que imprime cada nombre de firma que encuentra, además de consejos para manejar casos especiales como archivos protegidos con contraseña. + +## Prerrequisitos + +- .NET 6.0 o posterior (el código también funciona con .NET Framework 4.6+) +- Aspose.Pdf for .NET (puedes obtener una licencia temporal gratuita desde el sitio web de Aspose) +- Un PDF que ya contenga una o más firmas digitales (el ejemplo `MultiSigned.pdf` está incluido en el repositorio) + +> **Consejo profesional:** Si usas Visual Studio, habilita *Nullable Reference Types* para detectar errores relacionados con null temprano. + +## Paso 1: Cargar el documento PDF en C# + +Lo primero que necesitamos es un objeto `Document` que represente el archivo PDF en disco. La clase `Document` de Aspose.Pdf maneja todo, desde la extracción simple de texto hasta el procesamiento complejo de formularios. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**Por qué es importante:** Cargar el PDF valida que el archivo exista y sea legible. Si el archivo está corrupto o la ruta es incorrecta, abortamos temprano en lugar de encontrarnos con errores crípticos más adelante al intentar enumerar firmas. + +## Paso 2: Crear un asistente `PdfFileSignature` + +Aspose separa el manejo genérico de PDF (`Document`) de las operaciones específicas de firmas (`PdfFileSignature`). Instanciar este asistente nos da acceso a métodos como `GetSignatureNames()`. + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**Por qué es importante:** La clase `PdfFileSignature` sabe cómo analizar las entradas del diccionario `/Sig` del PDF, que es donde viven las firmas digitales. Usarla garantiza que leamos las firmas exactamente como fueron añadidas, preservando cualquier metadato criptográfico. + +## Paso 3: Recuperar todos los nombres de firma + +Ahora llega el núcleo de **cómo leer firmas**: llamar a `GetSignatureNames()`. Este método devuelve una matriz de strings que contiene los *nombres de campo* de cada firma. + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**Lo que verás:** Si `MultiSigned.pdf` contiene tres firmas llamadas `Signature1`, `Signature2` y `Signature3`, la salida en la consola será: + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## Paso 4: (Opcional) Verificar la validez de cada firma + +Leer los nombres suele ser suficiente, pero muchos proyectos también necesitan saber si cada firma sigue siendo válida. Aspose permite validar una firma por su nombre de campo: + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **Caso límite:** Si el PDF está protegido con contraseña, debes proporcionar la contraseña antes de llamar a `VerifySignature`. Usa `pdfDocument.Encrypt.Password = "yourPassword";` justo después de cargar el documento. + +## Ejemplo completo funcionando + +A continuación tienes el programa completo que puedes copiar y pegar en un nuevo proyecto de consola (`dotnet new console`). Incluye todos los pasos, manejo de errores y verificación opcional. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**Salida esperada** (suponiendo tres firmas válidas): + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## Manejo de variaciones comunes + +| Situación | Qué cambiar | Por qué | +|-----------|-------------|---------| +| **PDF protegido con contraseña** | Establece `pdfDocument.Encrypt.Password = "yourPwd";` antes de crear `PdfFileSignature`. | Sin la contraseña los diccionarios de firmas están encriptados y `GetSignatureNames()` devuelve una matriz vacía. | +| **PDFs grandes ( > 100 MB )** | Usa `pdfSigner.GetSignatureNames(0, 10)` para paginar los resultados (primer parámetro = índice de inicio). | Cargar toda la lista de firmas de una vez puede consumir mucha memoria. | +| **Sin firmas** | El código ya imprime una advertencia amigable. Considera registrar esto como un evento de auditoría. | Ayuda a los procesos posteriores a decidir si rechazar el archivo o solicitar al usuario una versión firmada. | +| **Nombres de campo de firma personalizados** | El método devuelve el nombre de campo que se usó al firmar, por ejemplo `EmployeeApproval`. No se necesita trabajo extra. | Permite mapear firmas a roles de negocio. | + +## Mejores prácticas y consejos + +- **Liberar objetos**: El patrón `using var pdfSigner` garantiza que los recursos nativos se liberen rápidamente. +- **Licenciar temprano**: Llama `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` al inicio de `Main` para evitar la marca de agua de evaluación. +- **Seguridad en hilos**: Si procesas muchos PDFs en paralelo, instancia un `PdfFileSignature` separado por hilo. La clase no es segura para hilos. +- **Registro**: En producción, reemplaza `Console.WriteLine` por un logger estructurado (Serilog, NLog) para capturar los nombres exactos de firma en los registros de auditoría. +- **Comprobación de versión**: El código funciona con Aspose.Pdf for .NET 23.10 y versiones posteriores. Versiones anteriores pueden requerir `PdfSignature` en lugar de `PdfFileSignature`. + +## Conclusión + +Hemos cubierto **cómo leer firmas** de un PDF usando C#. Al cargar el documento PDF, crear un asistente `PdfFileSignature` y llamar a `GetSignatureNames()`, puedes listar cada firma digital incrustada en el archivo. La verificación opcional añade una capa de confianza, y el código de ejemplo muestra exactamente cómo integrar esto en una aplicación de consola del mundo real. + +¿Listo para el siguiente paso? Prueba combinar esto con `DigitalSignatureUtil` de Aspose para extraer los certificados de los firmantes, o alimenta la lista de firmas a un panel de cumplimiento que marque los contratos no firmados. Las posibilidades son infinitas—solo recuerda **cargar documento PDF C#**, **enumerar firmas PDF** y **obtener firmas digitales PDF** siempre que necesites una auditoría rápida. + +¡Feliz codificación, y que tus PDFs siempre permanezcan firmados de forma segura! + +{{< /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-conversion/_index.md b/pdf/spanish/net/document-conversion/_index.md index 3fee8c790..220bce241 100644 --- a/pdf/spanish/net/document-conversion/_index.md +++ b/pdf/spanish/net/document-conversion/_index.md @@ -57,6 +57,7 @@ Aprenderá a especificar la configuración de conversión, extraer texto e imág | [Ruta de la imagen de XML a PDF](./xml-to-pdfset-image-path/) Aprenda a convertir XML a PDF fácilmente con Aspose.PDF para .NET. Esta guía detallada le guiará paso a paso por el proceso, desde la configuración hasta la finalización. | [XPS a PDF](./xps-to-pdf/) Aprenda a convertir archivos XPS a PDF con Aspose.PDF para .NET con este tutorial paso a paso. Ideal para desarrolladores y aficionados a la documentación. | [Convertir PDF a PDF/X‑4 en C# – Tutorial paso a paso ASP.NET PDF](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | Aprenda a convertir PDF a PDF/X‑4 con Aspose.PDF para .NET en este tutorial paso a paso. | +| [Tutorial de Aspose PDF: Convertir PDF a PDF/X‑4 en C#](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) | Aprenda a convertir PDF a PDF/X‑4 usando Aspose.PDF para .NET con esta guía paso a paso. | | [pdf a png tutorial – Convertir páginas PDF a PNG en C#](./pdf-to-png-tutorial-convert-pdf-pages-to-png-in-c/) | Aprenda a convertir páginas PDF a PNG usando Aspose.PDF para .NET con esta guía paso a paso. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/spanish/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/spanish/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..eb6cb0d20 --- /dev/null +++ b/pdf/spanish/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-03-06 +description: El tutorial de Aspose PDF muestra cómo usar Aspose para cargar un documento + PDF en C#, convertir PDF a PDF/X‑4 y guardar el PDF convertido de manera eficiente. +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: es +og_description: El tutorial de Aspose PDF explica cómo cargar un documento PDF en + C#, convertirlo al formato PDF/X‑4 y guardar el PDF convertido con ejemplos de código + claros. +og_title: 'Tutorial de Aspose PDF: Convertir PDF a PDF/X‑4 en C#' +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: 'Tutorial de Aspose PDF: Convertir PDF a PDF/X‑4 en C#' +url: /es/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tutorial de Aspose PDF: Convertir PDF a PDF/X‑4 en C# + +¿Alguna vez te has preguntado cómo usar Aspose para convertir un PDF normal en un archivo PDF/X‑4 sin esfuerzo? No eres el único—los desarrolladores a menudo necesitan una forma fiable de **load PDF document C#**‑style, convertirlo y luego **save the converted PDF** para flujos de trabajo posteriores. En esta guía, recorreremos un ejemplo completo y ejecutable que hace exactamente eso, usando la última versión de Aspose.Pdf para .NET. + +Cubrirémos todo, desde la instalación de la biblioteca, la carga de un PDF de origen, la conversión al estándar PDF/X‑4 y, finalmente, la persistencia del resultado en disco. Al final tendrás una comprensión sólida de **how to use Aspose** para este escenario de conversión común, además de consejos para manejar casos límite. + +## Requisitos previos + +- .NET 6.0 o posterior (el código funciona también en .NET Framework, pero se recomienda .NET 6+). +- Un archivo de licencia válido de Aspose.Pdf para .NET (o puedes ejecutar en modo de evaluación para una prueba rápida). +- Visual Studio 2022 o cualquier IDE compatible con C#. +- Un archivo PDF de entrada ubicado en `YOUR_DIRECTORY/input.pdf`. + +No se requieren paquetes NuGet adicionales más allá de `Aspose.Pdf`. + +## Instalar Aspose.Pdf vía NuGet + +Abre tu terminal o la Consola del Administrador de Paquetes y ejecuta: + +```bash +dotnet add package Aspose.Pdf +``` + +Eso descarga la última versión estable (a partir de marzo 2026, versión 23.12). Si prefieres la interfaz gráfica, busca *Aspose.Pdf* en el Administrador de paquetes NuGet e instálalo. + +## Paso 1: Cargar documento PDF en C# con Aspose + +Lo primero que debes hacer es cargar el PDF de origen en memoria. La clase `Document` de Aspose es el punto de entrada. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**Por qué es importante:** Cargar el archivo valida que la ruta exista y que el PDF no esté corrupto. El bloque `try/catch` te brinda una forma elegante de mostrar errores—útil cuando el archivo proviene de cargas de usuarios. + +## Paso 2: Convertir PDF al formato PDF/X‑4 + +PDF/X‑4 es un subconjunto de PDF diseñado para impresión y archivado fiables. Convertir garantiza que todas las fuentes estén incrustadas y que el archivo cumpla con los estándares de la industria. + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**¿Por qué elegir `ConvertErrorAction.Delete`?** Algunos PDFs heredados contienen elementos (como anotaciones no compatibles) que de otro modo detendrían la conversión. Eliminarlos mantiene el proceso fluido, pero deberías revisar el resultado si necesitas preservar esos elementos. + +### Opcional: Verificar el éxito de la conversión + +Si deseas estar aún más seguro, puedes inspeccionar el `PdfFormat` del documento después de la conversión: + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## Paso 3: Guardar el archivo PDF convertido + +Ahora que el documento está en formato PDF/X‑4, escríbelo de nuevo en disco. + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**Resultado que verás:** Aparecerá un nuevo archivo llamado `Converted_PDFX4.pdf` en `YOUR_DIRECTORY`. Ábrelo con cualquier visor de PDF que soporte PDF/X‑4 (Adobe Acrobat, Foxit, etc.) y notarás que todas las fuentes están incrustadas y el documento cumple con la especificación PDF/X‑4. + +![aspose pdf tutorial - converting PDF to PDF/X‑4](/images/aspose-pdf-conversion.png "aspose pdf tutorial showing PDF/X‑4 conversion result") + +*El texto alternativo de la imagen incluye la palabra clave principal, cumpliendo con los requisitos SEO.* + +## Ejemplo completo de extremo a extremo + +Juntándolo todo, aquí tienes una aplicación de consola autónoma que puedes copiar y pegar en un nuevo proyecto C#: + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +Ejecuta el programa y deberías ver mensajes en la consola que confirmen cada paso. Si algo falla, los mensajes de error te indicarán la etapa exacta. + +## Preguntas frecuentes y casos límite + +### ¿Qué pasa si necesito conservar anotaciones? + +`ConvertErrorAction.Delete` elimina objetos no compatibles, incluidas algunas anotaciones. Cambia a `ConvertErrorAction.Keep` si preservarlas es crucial, pero prueba el resultado—algunas anotaciones pueden seguir generando advertencias de cumplimiento. + +### ¿Cómo manejo PDFs grandes (cientos de MB)? + +Aspose.Pdf transmite el archivo, por lo que el uso de memoria se mantiene moderado. Sin embargo, podrías querer aumentar los umbrales de `System.GC` o procesar el documento en fragmentos (p. ej., convertir página por página) para archivos extremadamente grandes. + +### ¿Puedo convertir varios archivos en lote? + +Claro. Envuelve la lógica de carga‑conversión‑guardado en un bucle `foreach` que recorra un directorio de PDFs. Recuerda manejar excepciones por archivo para que un PDF defectuoso no aborta todo el lote. + +### ¿Esto funciona en .NET Core en Linux? + +Sí. Aspose.Pdf es multiplataforma. Solo asegúrate de que el paquete NuGet `Aspose.Pdf` esté referenciado y de que tengas instalados los archivos de fuentes apropiados en el host Linux si necesitas renderizado de texto. + +## Consejos profesionales del campo + +- **Establece una licencia temprano**: `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` – esto elimina la marca de agua de evaluación y mejora el rendimiento. +- **Validar la salida**: Usa `PdfFormatValidator` de Aspose para confirmar programáticamente el cumplimiento de PDF/X‑4 antes de distribuir el archivo. +- **Registrar el tiempo de conversión**: Los lotes grandes se benefician al medir cada conversión (`Stopwatch`) para detectar regresiones de rendimiento. +- **Evita rutas codificadas**: Prefiere archivos de configuración o variables de entorno para `inputPath` y `outputPath`—hace que la aplicación sea portátil. + +## Conclusión + +En este **Aspose PDF Tutorial** demostramos un flujo de trabajo limpio de extremo a extremo para **how to use Aspose** para **load PDF document C#**, convertirlo al estándar **PDF/X‑4** y **save the converted PDF**. El fragmento es completamente ejecutable, explica el *por qué* detrás de cada paso y destaca los obstáculos que podrías encontrar en proyectos del mundo real. + +Ahora que tienes los conceptos básicos, puedes ampliar la solución—procesar en lote decenas de archivos, incrustar metadatos personalizados o integrar la conversión en una API web. Las posibilidades son amplias, y Aspose.Pdf te brinda las herramientas para lograrlo rápidamente. + +¿Tienes más preguntas sobre el procesamiento de PDFs con Aspose? Deja un comentario, explora la documentación oficial de Aspose o experimenta con el código anterior. ¡Feliz conversión! + +{{< /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-creation/_index.md b/pdf/spanish/net/document-creation/_index.md index cccca33db..85211ff38 100644 --- a/pdf/spanish/net/document-creation/_index.md +++ b/pdf/spanish/net/document-creation/_index.md @@ -77,6 +77,12 @@ Un tutorial de código para Aspose.PDF Net ### [Crear documento PDF con Aspose.PDF – Añadir página, forma y guardar](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) Aprenda a crear un documento PDF, agregar una página y una forma, y guardarlo usando Aspose.PDF para .NET. +### [Crear documento PDF con Aspose.PDF – Guía paso a paso](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +Aprenda a crear documentos PDF paso a paso usando Aspose.PDF para .NET, desde la configuración inicial hasta guardar el archivo. + +### [Crear documento PDF con Aspose.PDF – Guía completa en C#](./create-pdf-document-with-aspose-pdf-full-c-guide/) +Aprenda a crear un documento PDF, añadir páginas y formas, y guardarlo con Aspose.PDF para .NET usando C#. + ## Recursos adicionales - [Documentación de Aspose.PDF para la red](https://docs.aspose.com/pdf/net/) diff --git a/pdf/spanish/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/spanish/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..810076df6 --- /dev/null +++ b/pdf/spanish/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-06 +description: Crear documento PDF en C# usando Aspose.PDF – aprende cómo agregar páginas + en blanco al PDF, cuadro de texto, widget y guardar el PDF rápidamente. +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: es +og_description: Crear documento PDF en C# con Aspose.PDF. Esta guía muestra cómo agregar + páginas en blanco al PDF, cuadro de texto, widget y cómo guardar el PDF. +og_title: Crear documento PDF con Aspose.PDF – Tutorial completo de C# +tags: +- pdf +- csharp +- aspose +- forms +title: Crear documento PDF con Aspose.PDF – Guía completa en C# +url: /es/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crear documento PDF con Aspose.PDF – Guía completa en C# + +¿Alguna vez necesitaste **crear un documento pdf** desde cero en un proyecto .NET y te preguntaste por dónde empezar? No estás solo; muchos desarrolladores se topan con el mismo obstáculo cuando el primer requisito dice “generar un PDF rellenable con el mismo cuadro de texto en tres páginas”. ¿La buena noticia? Con Aspose.PDF puedes generar un PDF de aspecto profesional con solo unas pocas líneas. + +En este tutorial recorreremos todo el proceso: desde inicializar un nuevo PDF, **agregar páginas en blanco pdf**, insertar un **textbox**, replicarlo con anotaciones **widget**, y finalmente **guardar el PDF** en disco. Al final tendrás un archivo listo para usar llamado *MultiWidgetField.pdf* y una comprensión sólida de por qué cada paso es importante. + +## Qué cubre esta guía + +- Requisitos previos que necesitas antes de escribir una sola línea de código. +- Creación paso a paso de un documento PDF usando Aspose.PDF para .NET. +- Cómo agregar páginas en blanco, un campo de formulario textbox y instancias de widget adicionales. +- Consejos para manejar problemas comunes (p. ej., indexación de páginas, colisiones de nombres de campos). +- Un programa C# completo, listo para copiar y pegar, que puedes ejecutar hoy. + +Sin enlaces a documentación externa, sin atajos de “ver la API” — todo lo que necesitas está aquí. + +## Requisitos previos + +Antes de comenzar, asegúrate de tener: + +1. **.NET 6.0** (o cualquier versión posterior) instalado en tu máquina. +2. Una licencia activa de **Aspose.PDF for .NET** o una clave de evaluación temporal. +3. Un entorno de desarrollo como **Visual Studio 2022** o **VS Code** con la extensión de C#. + +Eso es todo — nada más necesario. + +## Paso 1: Inicializar el documento PDF y agregar páginas en blanco + +Lo primero que haces cuando **creas un documento pdf** programáticamente es instanciar un objeto `Document`. Piensa en ello como abrir un cuaderno nuevo. Luego agregas las páginas que necesitas; en nuestro caso, tres páginas en blanco. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**Por qué es importante:** Aspose.PDF trata las páginas como una colección basada en cero internamente, pero su API pública es basada en 1, por lo que `Pages[1]` es la primera página que acabas de agregar. Añadir las páginas al principio te brinda un lienzo donde colocar los campos de formulario más tarde, y es mucho más barato que insertar páginas sobre la marcha después de que el documento haya crecido. + +> **Consejo profesional:** Si solo necesitas una página, puedes omitir el bucle y llamar a `pdfDocument.Pages.Add()` una vez. Añadir varias páginas en un bucle mantiene el código escalable. + +## Paso 2: Definir un campo de formulario TextBox en la primera página + +Ahora que tenemos tres hojas en blanco, coloquemos un **textbox** en la primera. Un `TextBoxField` es un elemento de formulario que los usuarios finales pueden escribir cuando el PDF se abre en Acrobat Reader o cualquier visor de PDF que soporte formularios. + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**¿Por qué las coordenadas del rectángulo?** Aspose.PDF usa puntos (1/72 de pulgada). El rectángulo `(100, 700, 300, 730)` coloca el textbox aproximadamente a mitad de la página, 200 pt de ancho y 30 pt de alto. Ajusta estos números para que encajen en tu diseño. + +> **Pregunta frecuente:** *¿Necesito establecer la propiedad `Value`?* +> No, es opcional. Dejarla vacía muestra un campo en blanco; establecer un valor predeterminado puede guiar al usuario. + +## Paso 3: Agregar anotaciones Widget para el mismo campo en las páginas 2 y 3 + +Un **widget** es la representación visual de un campo de formulario en una página específica. Por defecto, un campo aparece solo en la página donde se creó. Para reutilizar el mismo textbox en otras páginas, adjuntas objetos `WidgetAnnotation` adicionales a la colección `Widgets` del campo. + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**¿Por qué widgets?** Sin ellos, el usuario vería el textbox solo en la página 1, aunque el campo subyacente exista. Los widgets te permiten compartir un único campo lógico entre varias páginas, asegurando que el texto ingresado aparezca en todas las páginas donde se muestra el campo. + +> **Caso límite:** Si necesitas el textbox en diferentes coordenadas en cada página, simplemente cambia los valores de `Rectangle` para cada widget. + +## Paso 4: Registrar el campo en la colección de formularios del documento + +Aspose.PDF mantiene un registro central de todos los campos de formulario. Añadir el campo a la colección `Form` lo incorpora a la estructura interactiva del PDF. + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +El segundo argumento (`"Comment"`) es el **nombre totalmente calificado** del campo. Debe ser único en todo el documento; de lo contrario Aspose lanzará una excepción. + +## Paso 5: Guardar el PDF resultante – Cómo guardar PDF + +Finalmente, persistimos el documento en memoria en disco. Esta es la parte de **cómo guardar pdf** del tutorial. + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**¿Por qué especificar una ruta absoluta?** Usar una ruta absoluta evita confusiones sobre el directorio de trabajo, especialmente al ejecutar el programa desde el depurador de Visual Studio. Si prefieres una ruta relativa, solo asegúrate de que la carpeta exista antes de llamar a `Save`. + +### Resultado esperado + +Abre *MultiWidgetField.pdf* en Adobe Acrobat Reader. Verás el mismo textbox en las páginas 1, 2 y 3. Escribe algo en el campo en cualquier página — el texto aparecerá instantáneamente en las otras páginas porque comparten el mismo campo de formulario subyacente. + +![Ejemplo de crear documento PDF que muestra un textbox en tres páginas](https://example.com/placeholder-image.png "Ejemplo de crear documento PDF que muestra un textbox en tres páginas") + +*Texto alternativo de la imagen: Ejemplo de crear documento PDF que muestra un textbox en tres páginas.* + +## Ejemplo completo, listo para ejecutar + +A continuación tienes el programa completo que puedes copiar en un nuevo proyecto de consola (`dotnet new console`) y ejecutar. Todos los pasos ya están ordenados, y el código incluye comentarios para mayor claridad. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +Ejecuta el programa, navega a `C:\Temp\`, y abre el PDF generado. Verás los tres textbox idénticos listos para la entrada del usuario. + +## Variaciones comunes y casos límite + +| Escenario | Qué cambiar | Por qué | +|----------|-------------|--------| +| **Tamaño de textbox diferente en cada página** | Ajustar los valores de `Rectangle` para cada `WidgetAnnotation`. | Permite adaptar el campo a diseños variables. | +| **Campo de solo lectura** | Establecer `commentField.ReadOnly = true;`. | Impide que los usuarios editen el contenido después del llenado inicial. | +| **Textbox multilínea** | Establecer `commentField.Multiline = true;` y aumentar la altura del rectángulo. | Habilita comentarios más extensos sin necesidad de desplazamiento. | +| **Agregar un segundo campo** | Crear otro `TextBoxField` (o cualquier `FormField`) y repetir los pasos 2‑4 con un nombre nuevo. | Puedes recopilar múltiples piezas de información en el mismo PDF. | + +## Consejos profesionales y errores a evitar + +- **Indexación de páginas:** Recuerda que `pdfDocument.Pages[1]` es la primera página, no `[0]`. Mezclar índices basados en 0 y en 1 genera excepciones “Index out of range”. +- **Colisiones de nombres de campos:** Dos campos no pueden compartir el mismo nombre totalmente calificado. Si obtienes un error por nombres duplicados, verifica la cadena que pasas a `Form.Add`. +- **Licencia vs. Evaluación:** La versión de evaluación añade una marca de agua en cada página. Implementa una licencia válida para eliminarla en producción. +- **Rendimiento:** Añadir cientos de páginas en un bucle está bien, pero si necesitas generar PDFs masivos (miles de páginas), considera usar + +{{< /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-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/spanish/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..c10598326 --- /dev/null +++ b/pdf/spanish/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-03-06 +description: Crear documento PDF usando Aspose.PDF en C#. Aprende cómo agregar una + página PDF, dibujar un rectángulo PDF, añadir una forma PDF y controlar el grosor + del borde del rectángulo, todo en un solo tutorial. +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: es +og_description: Crear documento PDF en C# con Aspose.PDF. Este tutorial muestra cómo + agregar una página PDF, dibujar un rectángulo PDF, añadir una forma PDF y establecer + el grosor del borde del rectángulo. +og_title: Crear documento PDF con Aspose.PDF – Guía completa +tags: +- Aspose.PDF +- C# +- PDF generation +title: Crear documento PDF con Aspose.PDF – Guía paso a paso +url: /es/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crear documento PDF con Aspose.PDF – Guía paso a paso + +¿Alguna vez necesitaste **crear documento PDF** programáticamente y no sabías por dónde empezar? No estás solo—muchos desarrolladores se topan con el mismo obstáculo cuando sus aplicaciones deben generar facturas, informes o certificados al instante. + +La buena noticia es que con Aspose.PDF para .NET puedes hacerlo en unas pocas líneas, y también aprenderás a **add page PDF**, **draw rectangle PDF**, **add shape PDF**, y ajustar el **rectangle border thickness** mientras lo haces. ¡Vamos a sumergirnos. + +## Lo que construirás + +Al final de esta guía tendrás una aplicación de consola C# totalmente funcional que: + +1. **Creates a PDF document** desde cero. +2. **Adds a page PDF** al documento. +3. **Draws a rectangle PDF** en esa página. +4. **Validates** que el rectángulo permanezca dentro de los límites de la página (**add shape PDF** paso). +5. Establece un **rectangle border thickness** personalizado. +6. Guarda el resultado como `ShapeValidated.pdf`. + +Sin servicios externos, sin configuraciones misteriosas—solo C# puro y Aspose.PDF. + +### Requisitos previos + +- .NET 6.0 o posterior (el código también funciona con .NET Framework 4.6+). +- Una referencia al paquete NuGet `Aspose.Pdf`. Puedes agregarlo mediante: + +```bash +dotnet add package Aspose.Pdf +``` + +- Un editor de texto o IDE—Visual Studio, VS Code, Rider, lo que prefieras. + +> **Consejo profesional:** Si estás en una máquina corporativa, asegúrate de que el feed de NuGet no esté bloqueado; de lo contrario obtendrás un error de “Package not found”. + +--- + +## Crear documento PDF – Inicializar el documento + +El primer paso es crear un objeto `Document`. Piensa en él como el lienzo en blanco donde vivirán cada página y forma. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +¿Por qué necesitamos este objeto? Representa todo el archivo PDF en memoria, dándonos acceso a la colección `Pages`, metadatos y configuraciones de seguridad. Una vez que tienes el documento, puedes comenzar a apilar páginas, texto, imágenes y gráficos vectoriales. + +--- + +## Añadir una página al PDF (add page pdf) + +Un PDF sin páginas es esencialmente un archivo vacío—inútil. Añadir una página es sencillo, y puedes personalizar su tamaño si lo deseas. Aquí usamos el tamaño A4 predeterminado. + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +El método `Add()` devuelve una nueva instancia `Page` que ya forma parte de la colección `Pages`, por lo que puedes comenzar a dibujar en ella de inmediato. En escenarios reales podrías iterar sobre un conjunto de datos y añadir decenas de páginas; la misma llamada de una sola línea funciona en cada iteración. + +--- + +## Dibujar una forma rectangular (draw rectangle pdf) + +Ahora la parte visual: un rectángulo con un borde visible. Aquí es donde entra en juego **draw rectangle pdf**. + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +Un par de cosas a tener en cuenta: + +- `Rect` usa puntos (1 pt ≈ 1/72 pulgada). Las coordenadas definen las esquinas inferior‑izquierda y superior‑derecha, por lo que puedes controlar el ancho y la altura con precisión. +- `BorderInfo` te permite especificar qué lados tienen una línea y cuán gruesa es. Aquí aplicamos una línea de 2 puntos a **todos** los lados, dando al rectángulo un aspecto limpio y uniforme. + +--- + +## Validar la ubicación de la forma (add shape pdf) + +Antes de colocar el rectángulo en la página, es prudente verificar que encaje dentro del área imprimible de la página. Aspose.PDF ofrece un método auxiliar útil para ello. + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +¿¿Por qué molestarse? Si colocas accidentalmente una forma parcialmente fuera de la pantalla, el visor de PDF puede recortarla, lo que genera una experiencia de usuario confusa. Esta cláusula de protección **add shape pdf** garantiza que solo añadas contenido que será completamente visible. + +--- + +## Guardar el PDF (add page pdf) + +Finalmente, guardamos el documento en memoria en disco. Puedes elegir cualquier ubicación donde tengas permiso de escritura. + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +Después de ejecutar el programa, abre `ShapeValidated.pdf`—deberías ver una sola página con un rectángulo con borde ordenado centrado aproximadamente en el medio. + +--- + +## Resultado esperado + +Cuando abras el PDF generado, verás: + +- Una página de tamaño A4. +- Un rectángulo cuya esquina inferior‑izquierda comienza en (50 pt, 50 pt) y cuya esquina superior‑derecha termina en (600 pt, 800 pt). +- Un borde de **2 puntos** de grosor rodeando el rectángulo. + +Si la consola imprimió “PDF created successfully!”, sabes que el código se ejecutó sin activar la verificación de límites. + +![Diagrama que muestra cómo crear un documento PDF con Aspose.PDF](https://example.com/diagram-create-pdf.png "Crear documento PDF – visión visual") + +*El texto alternativo de la imagen incluye la palabra clave principal para cumplir con los requisitos de SEO.* + +--- + +## Preguntas comunes y casos límite + +### ¿Qué pasa si necesito un tamaño de página diferente? + +Reemplaza la página predeterminada con un tamaño personalizado: + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### ¿Cómo cambio el color del borde? + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### ¿Puedo añadir múltiples formas en la misma página? + +Absolutamente. Simplemente repite el bloque **add shape pdf** con un nuevo `RectangleShape` (u otras subclases de `Shape`) y ajusta las coordenadas `Rect` según corresponda. + +### ¿Qué pasa si el rectángulo supera los límites de la página? + +La llamada `IsShapeWithinBounds` devolverá `false`. En código de producción podrías querer redimensionar la forma automáticamente: + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +--- + +## Recapitulación + +Hemos recorrido todo el ciclo de vida de **creating a PDF document** con Aspose.PDF: + +1. Inicializa el `Document`. +2. **Add a page PDF** usando `Pages.Add()`. +3. **Draw a rectangle PDF** mediante `RectangleShape`. +4. **Add shape PDF** solo después de confirmar que permanece dentro de la página. +5. Controla el **rectangle border thickness** con `BorderInfo`. +6. Guarda el archivo. + +Ese es todo el flujo de trabajo en menos de 60 líneas de código. + +--- + +## ¿Qué sigue? + +- **Add text**: Usa `TextFragment` para colocar títulos o etiquetas dentro del rectángulo. +- **Insert images**: La clase `Image` te permite incrustar logotipos o gráficos. +- **Create tables**: Perfecto para facturas o informes de datos. +- **Apply security**: Protege el PDF con contraseña si contiene datos sensibles. + +Cada uno de esos temas se basa en los fundamentos cubiertos aquí, por lo que estás bien posicionado para explorar escenarios más avanzados de generación de PDF. + +### Sigue experimentando + +No te detengas en un solo rectángulo—prueba con diferentes formas, colores y estilos de línea. La API de Aspose.PDF es amplia, y cuanto más juegues, más cómodo te sentirás. Si encuentras un obstáculo, la documentación oficial de Aspose es un buen acompañante, pero recuerda que el código que ves arriba es una solución completa, lista para copiar y pegar que puedes ejecutar hoy. + +¡Feliz codificación, y que tus PDFs siempre se rendericen exactamente como los imaginaste! + +{{< /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 1cb5659fc..f698596c1 100644 --- a/pdf/spanish/net/document-manipulation/_index.md +++ b/pdf/spanish/net/document-manipulation/_index.md @@ -207,7 +207,7 @@ Aprenda a recortar eficientemente los espacios en blanco de documentos PDF con A Aprenda a actualizar enlaces en archivos PDF mediante programación con Aspose.PDF para .NET. Automatice las actualizaciones de enlaces de forma eficiente con esta guía paso a paso. ### [Cómo actualizar el color del texto del enlace PDF con Aspose.PDF .NET: una guía completa](./update-pdf-link-text-color-aspose-net/) -Aprenda a cambiar fácilmente el color del texto de los enlaces en archivos PDF con Aspose.PDF para .NET. Esta guía completa incluye consejos de instalación, implementación y optimización. +Aprenda a cambiar fácilmente el color del texto de los enlaces en archivos PDF con Aspose.PDF .NET. Esta guía completa incluye consejos de instalación, implementación y optimización. ### [Insertar páginas en PDF con Aspose.PDF para .NET: una guía completa para la manipulación de documentos](./insert-pages-pdf-aspose-dotnet-guide/) Aprenda a insertar páginas en un PDF con Aspose.PDF para .NET. Esta guía paso a paso abarca todo, desde la configuración hasta la implementación, ideal para desarrolladores de C#. @@ -216,7 +216,7 @@ Aprenda a insertar páginas en un PDF con Aspose.PDF para .NET. Esta guía paso Aprenda a insertar páginas en un PDF con Aspose.PDF para .NET con esta guía paso a paso. Optimice su flujo de trabajo documental. ### [Insertar una página vacía en un PDF con Aspose.PDF .NET: una guía completa](./aspose-pdf-net-insert-empty-page/) -Aprenda a insertar páginas vacías en documentos PDF fácilmente con Aspose.PDF para .NET. Siga esta guía paso a paso para mejorar sus habilidades de manipulación de documentos. +Aprenda a insertar páginas vacías en documentos PDF fácilmente con Aspose.PDF .NET. Siga esta guía paso a paso para mejorar sus habilidades de manipulación de documentos. ### [Domine el método MakeNUp de Aspose.PDF .NET para diseños PDF eficientes](./aspose-pdf-net-make-nup-method-pdf-layout/) Aprenda a reorganizar eficientemente varias páginas PDF en nuevos diseños con el método MakeNUp de Aspose.PDF .NET. Ideal para boletines, folletos e informes. @@ -306,11 +306,14 @@ Aprenda a dividir un archivo PDF en páginas individuales con Aspose.PDF para .N Aprenda a dividir páginas PDF en archivos separados con Aspose.PDF para .NET. Esta guía completa incluye consejos de configuración, implementación y optimización. ### [Dividir y crear archivos PDF con Aspose.PDF .NET | Guía de manipulación de documentos](./split-create-pdf-aspose-pdf-net/) -Aprenda a dividir archivos PDF de varias páginas y a crear nuevos archivos PDF con Aspose.PDF para .NET. Siga esta guía completa con ejemplos de código. +Aprenda a dividir archivos PDF de varias páginas y a crear nuevos archivos PDF con Aspose.PDF .NET. Siga esta guía completa con ejemplos de código. ### [Guía definitiva para la manipulación de PDF con Aspose.PDF .NET: Carga, guarda y reemplaza texto de forma eficiente](./master-pdf-manipulation-aspose-pdf-net/) Aprenda a dominar la manipulación de PDF con Aspose.PDF para .NET. Esta guía explica cómo cargar, guardar y reemplazar texto en PDF, ideal para desarrolladores que buscan eficiencia. +### [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. + ## Recursos adicionales - [Documentación de Aspose.PDF para la red](https://docs.aspose.com/pdf/net/) diff --git a/pdf/spanish/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/spanish/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..e9617349e --- /dev/null +++ b/pdf/spanish/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-06 +description: Aprende a redactar PDF usando Aspose PDF en C#. Esta guía paso a paso + muestra cómo cargar un documento PDF en C#, acceder a la primera página del PDF + y eliminar una imagen del PDF. +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: es +og_description: Cómo redactar PDF rápidamente con Aspose PDF en C#. Carga el documento + PDF, accede a la primera página del PDF y elimina la imagen del PDF en solo unas + pocas líneas de código. +og_title: Cómo redactar PDF en C# – Tutorial de Aspose PDF +tags: +- Aspose PDF +- C# +- PDF Redaction +title: Cómo redactar PDF en C# con Aspose PDF – Guía completa +url: /es/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo redactar PDF en C# con Aspose PDF – Guía completa + +¿Alguna vez te has preguntado **cómo redactar PDF** sin despeinarte? Tal vez te hayan entregado un contrato que oculta un logotipo confidencial, o un informe que aún muestra una imagen de marcador de posición que necesitas eliminar. En esos momentos querrás una forma confiable y programática de eliminar ese contenido, sin necesidad de trucos manuales de Acrobat. + +En este tutorial recorreremos una solución concisa y de extremo a extremo que **carga documento PDF C#**, **accede a la primera página del PDF**, y luego **elimina la imagen del PDF** usando la poderosa biblioteca **Aspose PDF**. Al final tendrás un PDF completamente redactado listo para su distribución, y entenderás por qué cada línea de código es importante. + +> **Consejo profesional:** Aspose PDF funciona con .NET Framework 4.6+ y .NET Core 3.1+, así que estás cubierto tanto si usas Windows, Linux o macOS. + +![ejemplo de cómo redactar pdf](redact-pdf-before-after.png){alt="ejemplo de cómo redactar pdf"} + +## Lo que necesitarás + +- **Aspose.PDF for .NET** (último paquete NuGet) +- Un **entorno de desarrollo C#** (Visual Studio, Rider o VS Code) +- Un PDF de muestra que contenga un recurso de imagen que deseas eliminar (lo llamaremos `Sensitive.pdf`) + +Sin herramientas de terceros adicionales, sin OCR, solo código puro. + +## Paso 1: Cargar documento PDF C# – El primer paso + +Antes de poder redactar cualquier cosa, debes cargar el archivo en memoria. La clase `Document` es el punto de entrada para cada operación de Aspose PDF. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**Por qué es importante:** +`Document` analiza toda la estructura del PDF, construyendo un modelo de objetos que te permite manipular páginas, recursos y anotaciones. Si el archivo no se puede cargar (ruta incorrecta, PDF corrupto), se lanzará una excepción de inmediato, de modo que sepas temprano que algo está mal. + +### Trampa común + +> *“Obtengo una `FileNotFoundException` aunque el archivo exista.”* +> Asegúrate de que la ruta sea absoluta o de que el directorio de trabajo de tu proyecto coincida con la ubicación de `Sensitive.pdf`. Usar `Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")` puede ayudar a evitar dolores de cabeza con rutas relativas. + +## Paso 2: Acceder a la primera página del PDF – Donde está la imagen + +Las imágenes se almacenan como recursos por página. En muchos PDFs simples, la primera página es la culpable, así que vamos a obtenerla. + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**Por qué es importante:** +Aspose PDF usa un índice basado en 1 para las páginas, lo cual es un poco inusual comparado con la mayoría de colecciones .NET. Acceder a la página incorrecta podría significar que redactes el contenido equivocado — o peor, dejar la imagen sensible sin tocar. + +### Consideración de caso límite + +Si tu documento no tiene páginas (un PDF vacío), intentar `pdfDocument.Pages[1]` lanzará una `IndexOutOfRangeException`. Una verificación rápida puede salvarte: + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +## Paso 3: Eliminar imagen del PDF – Redactar el recurso + +Aspose PDF te permite eliminar un recurso por nombre. La mayoría de las imágenes se nombran `Im1`, `Im2`, etc., pero puedes inspeccionar `firstPage.Resources.Images` para confirmar. + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**Por qué es importante:** +`RedactResource` elimina la imagen *y* cualquier referencia a ella en la página, asegurando que el espacio visual se rellene con un área en blanco en lugar de un enlace roto. Es una forma limpia y estándar de PDF para borrar contenido. + +### Cómo encontrar el nombre correcto de la imagen + +Si no estás seguro de si la imagen se llama `"Im1"`: + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +Ejecuta este fragmento, revisa la salida de la consola y reemplaza `"Im1"` con la clave real que veas. + +## Paso 4: Guardar el PDF redactado – Terminar el trabajo + +Ahora que la imagen no deseada ha desaparecido, escribe los cambios de vuelta al disco. + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**Por qué es importante:** +Guardar en un archivo **nuevo** mantiene el original intacto — una red de seguridad en caso de que necesites revertir. Si debes sobrescribir, simplemente apunta el método `Save` a la ruta original, pero ten en cuenta que la operación es irreversible. + +### Verificando el resultado + +Abre `Redacted.pdf` en cualquier visor de PDF. El espacio de la imagen debería aparecer en blanco, y el resto del documento debería verse idéntico al original. Si el diseño de la página parece desplazado, verifica que solo hayas eliminado el recurso previsto y no un XObject compartido. + +## Ejemplo completo funcionando + +Juntando todo, aquí tienes el programa completo, listo para ejecutar: + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**Salida esperada** (en la consola): + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +Cuando abras `Redacted.pdf`, la imagen que antes era `Im1` habrá desaparecido, dejando una página limpia. + +## Preguntas frecuentes + +### ¿Esto funciona con PDFs encriptados? + +Si el PDF de origen está protegido con contraseña, pasa la contraseña al constructor `Document`: + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### ¿Qué pasa si la imagen aparece en varias páginas? + +Recorre cada página y llama a `RedactResource` con el mismo nombre de imagen (o descubre el nombre por página). Ejemplo: + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### ¿Puedo redactar texto de la misma manera? + +Sí—usa `page.Contents.RedactText("confidential")` o emplea la clase `Redactor` para patrones más avanzados. Eso es un tutorial completo por sí mismo, pero el principio refleja lo que hicimos con las imágenes. + +## Conclusión – Lo que logramos + +Hemos respondido **cómo redactar PDF** programáticamente mediante: + +1. **Cargar documento PDF C#** con Aspose PDF. +2. **Acceder a la primera página del PDF** para localizar el recurso objetivo. +3. **Eliminar imagen del PDF** mediante `RedactResource`. +4. **Guardar** la versión limpiada de forma segura. + +Este enfoque es rápido, repetible y funciona en trabajos por lotes — perfecto para canalizaciones de cumplimiento o generación automática de informes. + +Si estás listo para llevarlo más allá, considera explorar: + +- **Redacción por lotes** en una carpeta completa de PDFs. +- **Redactar texto** con patrones regex usando `Redactor`. +- **Incorporar una marca de agua** después de la redacción para señalar “sanitizado”. + +Pruébalo, ajusta la lógica del nombre de la imagen para tus propios archivos, + +{{< /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/performance-optimization/_index.md b/pdf/spanish/net/performance-optimization/_index.md index 13a040dcd..7036a92be 100644 --- a/pdf/spanish/net/performance-optimization/_index.md +++ b/pdf/spanish/net/performance-optimization/_index.md @@ -50,6 +50,9 @@ Domine el arte de convertir archivos SVG a PDF con precisión y eficiencia usand ### [Desincrustar fuentes en archivos PDF con Aspose.PDF para .NET: reducir el tamaño del archivo y mejorar el rendimiento](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) Aprenda a desincrustar fuentes de sus archivos PDF con Aspose.PDF para .NET. Optimice el rendimiento de sus archivos PDF, reduzca el tamaño de los archivos y mejore los tiempos de carga con esta guía paso a paso. +### [Cómo comprimir PDF con Aspose.PDF – guía rápida](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) +Aprenda a comprimir archivos PDF rápidamente usando Aspose.PDF con esta guía paso a paso. + ## Recursos adicionales - [Documentación de Aspose.PDF para la red](https://docs.aspose.com/pdf/net/) diff --git a/pdf/spanish/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/spanish/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..947ed4177 --- /dev/null +++ b/pdf/spanish/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,204 @@ +--- +category: general +date: 2026-03-06 +description: Aprende a comprimir PDF al instante usando Aspose.Pdf. Esta guía muestra + cómo reducir el tamaño del archivo PDF con compresión PDF sin pérdida. +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: es +og_description: ¿Cómo comprimir PDF usando Aspose.Pdf? Sigue este tutorial paso a + paso para reducir el tamaño del archivo PDF, lograr una compresión sin pérdida y + guardar archivos PDF optimizados. +og_title: cómo comprimir pdf con Aspose.Pdf – guía rápida +tags: +- pdf +- aspnet +- csharp +title: Cómo comprimir PDF con Aspose.Pdf – guía rápida +url: /es/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# cómo comprimir pdf con Aspose.Pdf – guía rápida + +¿Alguna vez te has preguntado **cómo comprimir pdf** sin convertirlos en un desastre borroso? No estás solo. La mayoría de los desarrolladores se topan con un muro cuando necesitan **reducir el tamaño del archivo pdf** para adjuntos de correo electrónico, cargas web o límites de almacenamiento, y temen perder la calidad de la imagen. + +En este tutorial recorreremos un ejemplo completo, listo para ejecutar, que muestra exactamente **cómo comprimir pdf** usando el optimizador incorporado de Aspose.Pdf. Al final sabrás cómo **encoger el tamaño del archivo pdf**, mantener tus imágenes nítidas con **compresión pdf sin pérdida**, y finalmente **guardar pdf optimizado** que funciona sin problemas con cualquier visor. + +## Lo que aprenderás + +- Cargar un PDF pesado (p. ej., uno lleno de imágenes de alta resolución) en memoria. +- Aplicar el optimizador de Aspose.Pdf con su configuración predeterminada sin pérdida. +- Persistir el resultado como un archivo nuevo y más pequeño. +- Consejos para ajustar la compresión si necesitas una reducción más agresiva. + +Sin herramientas externas, sin trucos misteriosos de línea de comandos—solo código C# limpio y explicaciones claras. + +## Requisitos previos + +Antes de sumergirnos, asegúrate de tener: + +| Requisito | Por qué es importante | +|-----------|-----------------------| +| .NET 6.0 o posterior (o .NET Framework 4.6+) | Aspose.Pdf es compatible con ambos; los tiempos de ejecución más recientes ofrecen mejor rendimiento. | +| Paquete NuGet Aspose.Pdf para .NET (`Aspose.Pdf`) | La clase `Document` se encuentra aquí. | +| Un PDF con imágenes grandes (p. ej., `HeavyImages.pdf`) | Te brinda algo tangible para reducir. | +| Visual Studio, Rider o cualquier editor de C# que prefieras | La comodidad es clave—elige lo que te resulte natural. | + +> **Consejo profesional:** Si trabajas en una canalización CI/CD, agrega la referencia NuGet en tu `.csproj` para que la compilación nunca la olvide. + +```xml + + + +``` + +## Paso 1: Cargar el PDF que deseas comprimir + +Primero necesitamos un objeto `Document` que apunte al archivo fuente. Piensa en ello como abrir un libro antes de comenzar a editar los capítulos. + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*Por qué es importante:* Cargar el archivo le da a Aspose.Pdf la oportunidad de leer todos los recursos incrustados (imágenes, fuentes, etc.). Sin este paso no hay nada que **encoger el tamaño del archivo pdf**. + +## Paso 2: Aplicar compresión PDF sin pérdida + +Aspose.Pdf incluye un método `Optimize` que, por defecto, ejecuta una rutina de **compresión pdf sin pérdida**. Elimina objetos redundantes, recomprime imágenes manteniendo la misma fidelidad visual y quita fuentes no utilizadas. + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*Por qué es importante:* El optimizador predeterminado está diseñado para **encoger el tamaño del archivo pdf** mientras preserva cada píxel. Si más tarde decides tolerar una ligera pérdida de calidad, el `OptimizationOptions` comentado te permite cambiar unos kilobytes extra por velocidad. + +## Paso 3: Guardar el PDF optimizado + +Ahora que el documento es más ligero, lo escribimos en un archivo nuevo. Mantener el original intacto es una buena práctica, sobre todo cuando pruebas diferentes configuraciones. + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +Después de guardar, compara los tamaños de archivo: + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +Deberías observar una disminución notable—a menudo **30‑70 %** dependiendo de cuántas imágenes de alta resolución había en el origen. + +![ilustración de cómo comprimir pdf](image.png "cómo comprimir pdf") + +*Texto alternativo de la imagen:* cómo comprimir pdf – antes y después de la optimización + +## Avanzado: Ajustar la compresión para escenarios específicos + +Aunque el optimizador predeterminado es excelente para la mayoría de los casos, a veces necesitas **encoger el tamaño del archivo pdf** aún más: + +| Escenario | Configuración a ajustar | Efecto | +|-----------|------------------------|--------| +| PDFs con muchas imágenes raster | `CompressImages = true` + `ImageQuality` más bajo (p. ej., 70) | Reduce la cantidad de bytes de la imagen, ligera pérdida visual. | +| PDFs que contienen fuentes duplicadas | `RemoveUnusedObjects = true` | Elimina fuentes que no están referenciadas. | +| PDFs con metadatos extensos | `RemoveMetadata = true` | Elimina bloques XML/metadatos ocultos. | + +Puedes combinar estos ajustes en un objeto `OptimizationOptions` y pasarlo a `pdfDoc.Optimize(options)`. + +## Preguntas frecuentes y casos límite + +**¿Qué pasa si el PDF ya está optimizado?** +Aspose.Pdf seguirá escaneando el documento, pero el cambio de tamaño será mínimo. Ejecutar el optimizador sobre un archivo ya ligero es seguro; no corromperá nada. + +**¿Puedo comprimir PDFs encriptados?** +Sí, pero debes proporcionar la contraseña antes de llamar a `Optimize`. Ejemplo: + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**¿Qué ocurre con los PDFs que contienen gráficos vectoriales?** +Los objetos vectoriales ya son ligeros, por lo que el optimizador se centra en imágenes raster y metadatos. Espera ganancias modestas en archivos puramente vectoriales. + +## Ejemplo completo y ejecutable + +A continuación tienes una aplicación de consola autocontenida que puedes copiar‑pegar en un nuevo `.csproj`. Demuestra todo lo discutido—desde la carga hasta la verificación. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +Ejecuta el programa, abre `Optimized.pdf` en cualquier visor y verás el mismo diseño de página, las mismas imágenes nítidas, pero un archivo más delgado. Esa es la magia de la **compresión pdf sin pérdida**. + +## Conclusión + +Hemos cubierto **cómo comprimir pdf** usando el optimizador incorporado de Aspose.Pdf, demostrado un flujo práctico para **reducir el tamaño del archivo pdf**, y explicado las razones subyacentes de cada paso. Siguiendo el patrón de tres pasos—cargar, optimizar, guardar—puedes **encoger el tamaño del archivo pdf** al vuelo, mantener tus imágenes intactas con **compresión pdf sin pérdida**, y guardar con confianza **pdf optimizado** para su consumo posterior. + +¿Listo para el próximo desafío? Prueba encadenar este optimizador con un script por lotes para procesar una carpeta completa, o experimenta con las `OptimizationOptions` opcionales para exprimir esos últimos kilobytes. Los mismos principios se aplican tanto si trabajas en una herramienta de escritorio, una API web o un trabajo por lotes del lado del servidor. + +¿Tienes más preguntas sobre el manejo de PDFs, curiosidades de Aspose.Pdf o I/O de archivos en .NET? Deja un comentario abajo y sigamos la conversación. ¡Feliz compresión! + +{{< /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/programming-with-security-and-signatures/_index.md b/pdf/spanish/net/programming-with-security-and-signatures/_index.md index e7795b23b..f452612f4 100644 --- a/pdf/spanish/net/programming-with-security-and-signatures/_index.md +++ b/pdf/spanish/net/programming-with-security-and-signatures/_index.md @@ -34,6 +34,8 @@ Este tutorial le ofrece una descripción detallada de los métodos y técnicas p | [Firmar con tarjeta inteligente usando la firma de un archivo PDF](./sign-with-smart-card-using-pdf-file-signature/) Aprenda a firmar archivos PDF con una tarjeta inteligente con Aspose.PDF para .NET. Siga esta guía paso a paso para firmas digitales seguras. | [Firmar con tarjeta inteligente usando el campo de firma](./sign-with-smart-card-using-signature-field/) Aprenda a firmar archivos PDF de forma segura con una tarjeta inteligente con Aspose.PDF para .NET. Siga nuestra guía paso a paso para una implementación sencilla. | [Comprobar firmas PDF en C# – Cómo leer archivos PDF firmados](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) Aprenda a comprobar y leer firmas PDF en C# con Aspose.PDF para .NET. Guía paso a paso para extraer información de firmas digitales. +| [Cómo verificar la firma en PDF usando C# – Guía completa de Aspose](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) Aprenda a verificar firmas en PDF usando C# con Aspose.PDF para .NET. Guía paso a paso para asegurar la autenticidad de sus documentos. +| [Agregar firma digital PDF en C# – Guía completa paso a paso](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) Aprenda a agregar una firma digital a un PDF con C# usando Aspose.PDF para .NET. Guía paso a paso para asegurar la autenticidad de sus documentos. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/spanish/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/spanish/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..fae41976d --- /dev/null +++ b/pdf/spanish/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-03-06 +description: Agregar firma digital a PDF usando Aspose.PDF. Aprende a crear una firma + PKCS7 separada y firmar PDF usando PFX con una devolución de llamada personalizada. +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: es +og_description: Añade una firma digital a PDF rápidamente. Esta guía muestra cómo + crear una firma PKCS7 separada y firmar un PDF usando PFX en C#. +og_title: Agregar firma digital PDF en C# – Tutorial completo de programación +tags: +- Aspose.PDF +- C# +- Digital Signature +title: Agregar firma digital PDF en C# – Guía completa paso a paso +url: /es/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Agregar firma digital PDF – Guía completa paso a paso + +¿Alguna vez necesitaste **add digital signature pdf** archivos pero no sabías por dónde empezar? No estás solo; muchos desarrolladores se topan con el mismo obstáculo cuando la documentación requiere una firma legalmente vinculante y la base de código solo sabe generar PDFs simples. + +En este tutorial recorreremos una solución práctica que te permite **add digital signature pdf** documentos usando Aspose.PDF for .NET, crear una firma PKCS#7 detached, y firmar el PDF con un certificado PFX, todo en C# puro. Al final tendrás un fragmento listo para ejecutar, comprenderás el “por qué” detrás de cada llamada y sabrás cómo adaptar el enfoque a casos límite. + +## Lo que aprenderás + +- Cómo cargar un PDF sin firmar y prepararlo para la firma. +- La mecánica de una **create pkcs7 detached signature** y por qué podrías preferir una detached sobre una embedded. +- Los pasos exactos para **sign pdf using pfx** con una devolución de llamada personalizada, dándote control total sobre el proceso criptográfico. +- Consejos para solucionar problemas comunes (certificado faltante, algoritmo de hash incorrecto, etc.). + +### Requisitos previos + +| Requisito | Razón | +|-------------|--------| +| .NET 6.0 o posterior | Características modernas del lenguaje y mejor gestión de memoria. | +| Aspose.PDF for .NET (paquete NuGet) | Proporciona `PdfFileSignature`, `PKCS7Detached` y otras utilidades PDF. | +| Un archivo PFX válido (`.pfx`) con clave privada | Necesario para el paso **sign pdf using pfx**. | +| Conocimientos básicos de C# | El código es sencillo, pero entender las sentencias `using` ayuda. | + +> **Consejo profesional:** Mantén la contraseña de tu PFX fuera del control de versiones; usa variables de entorno o Azure Key Vault para producción. + +--- + +## Cómo agregar firma digital PDF con Aspose.PDF + +A continuación dividimos el proceso en cinco pasos digestibles. Cada paso incluye un fragmento de código, una explicación de *por qué* es importante y una rápida verificación de consistencia. + +![Captura de pantalla de PDF firmado en un visor, mostrando un campo de firma visible](/images/add-digital-signature-pdf.png "ejemplo de add digital signature pdf") + +### Paso 1 – Cargar el documento PDF sin firmar + +Primero necesitamos un objeto `Document` que represente el PDF que deseas firmar. Usar `using var` garantiza que el manejador del archivo se libere automáticamente. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**¿Por qué?** +Aspose trata un PDF como un grafo de objetos; cargarlo te brinda acceso a páginas, anotaciones y al flujo de bytes interno que luego se hashará para la firma. + +### Paso 2 – Inicializar el asistente PdfFileSignature + +`PdfFileSignature` es la clase que realmente aplica el sobre criptográfico. Funciona de la mano con `PKCS7Detached`. + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**¿Por qué?** +Separar el firmante del documento te permite reutilizar la misma instancia `Document` para otras operaciones (p. ej., agregar marcas de agua) antes de finalizar la firma. + +### Paso 3 – Crear firma PKCS#7 Detached (Create PKCS7 Detached Signature) + +Una **PKCS#7 detached signature** almacena solo el hash del PDF, no el PDF en sí. Esto es ideal para documentos grandes o cuando necesitas mantener el archivo original sin cambios. + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**¿Por qué una devolución de llamada personalizada?** +A veces la clave de firma reside en un HSM o Azure Key Vault, y no puedes extraer la clave privada directamente. Al proporcionar `CustomSignHash` entregas el hash al servicio que posee la clave, manteniendo el material privado seguro. + +**¿Qué pasa si no necesitas una devolución de llamada personalizada?** +Puedes omitir `CustomSignHash`; Aspose usará automáticamente la clave privada dentro del PFX. Sin embargo, la ruta personalizada es más flexible y se alinea con los requisitos de cumplimiento. + +### Paso 4 – Aplicar la firma a una página específica (Sign PDF Using PFX) + +Ahora realmente colocamos un campo de firma visible en la página. El rectángulo define la ubicación y el tamaño (en puntos). + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**¿Por qué especificar un rectángulo?** +Una firma visible ayuda a los usuarios finales a ver que el documento está firmado. Si estableces `isVisible` a `false`, la firma se vuelve invisible—sigue siendo válida, pero más difícil de detectar. + +**Caso límite:** Si el PDF no tiene páginas (archivo vacío) la llamada lanza `ArgumentOutOfRangeException`. Siempre verifica `pdfDocument.Pages.Count > 0` antes de firmar. + +### Paso 5 – Guardar el PDF firmado + +Finalmente, persiste el documento firmado en disco. También puedes transmitirlo directamente a una respuesta en ASP.NET Core. + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**Consejo de verificación:** Abre el archivo resultante en Adobe Acrobat Reader. El panel de firmas debería mostrar una marca de verificación verde (si el certificado es de confianza en la máquina). + +--- + +## Ejemplo completo funcional + +Unificando todo, aquí tienes un programa de consola autónomo que puedes copiar y pegar y ejecutar (después de ajustar rutas y contraseñas). + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**Salida esperada:** La consola imprime “✅ PDF signed successfully!” y el archivo `CustomSigned.pdf` aparece en la misma carpeta. Al abrirlo, verás un widget de firma en las coordenadas (100,100)-(300,200). + +--- + +## Preguntas frecuentes y casos límite + +### ¿Qué pasa si mi PFX está protegido con una tarjeta inteligente? + +Utiliza el delegado `CustomSignHash` para enviar el hash al controlador de la tarjeta inteligente. El controlador devolverá los bytes de la firma, y Aspose los incrustará sin exponer nunca la clave privada. + +### ¿Puedo firmar varias páginas a la vez? + +Sí. Llama a `pdfSigner.Sign` dentro de un bucle, ajustando `pageNumber` y opcionalmente el rectángulo para cada página. Recuerda que cada llamada agrega un objeto de firma separado; algunos visores pueden listarlos individualmente. + +### ¿Cómo cambio el algoritmo de hash? + +`PKCS7Detached` por defecto usa SHA‑256, pero puedes establecer la propiedad `HashAlgorithm`: + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +Asegúrate de que tu proveedor de firma soporte el algoritmo elegido. + +### ¿Qué pasa si la cadena de certificados no es de confianza en la máquina cliente? + +Incluye la cadena completa en el PFX, o distribuye el certificado raíz al almacén de confianza del usuario final. De lo contrario Acrobat mostrará “Signature is unknown”. + +### ¿Es una firma detached compatible con PDF/A‑3? + +PDF/A‑3 requiere firmas incrustadas, por lo que una PKCS#7 detached puede no ser compatible. En ese caso elimina el delegado `CustomSignHash` y permite que Aspose maneje la firma internamente, lo que crea una firma incrustada. + +## Mejores prácticas para producción + +1. **Nunca codifiques contraseñas directamente.** Obténlas de variables de entorno o de un gestor de secretos. +2. **Valida el PDF antes de firmar.** Los archivos corruptos provocan `PdfFileSignatureException`. +3. **Registra el algoritmo de hash y la huella digital del certificado** para auditorías. +4. **Prueba con varios visores de PDF** (Adobe Reader, Foxit, Chrome) para asegurar que la firma aparezca como se espera. +5. **Considera la marca de tiempo** añadiendo una solicitud a una TSA (Time‑Stamp Authority), lo que refuerza aún más la validez legal de la firma. + +## Conclusión + +Acabamos de mostrarte cómo **add digital signature pdf** archivos usando Aspose.PDF, crear una **PKCS#7 detached signature**, y **sign pdf using pfx** con una devolución de llamada personalizada. El ejemplo completo funciona listo para usar, y las explicaciones te dan la confianza para ajustar el proceso para HSMs, servicios de marca de tiempo o cumplimiento PDF/A. + +A continuación, podrías explorar **signing multiple documents in batch**, integrar **Azure Key Vault** para almacenamiento seguro de claves, o agregar **visual customization** a la apariencia de la firma. Cada uno de esos temas se construye directamente sobre la base establecida aquí. + +Si has seguido los pasos, ahora tienes una solución sólida y digna de citar que puedes compartir con tus compañeros—o incluso referenciar en una respuesta de asistente impulsado por IA. ¡Feliz firma, y no dudes en dejar un comentario si algo no está claro! + +{{< /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/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/spanish/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..b2543d9cd --- /dev/null +++ b/pdf/spanish/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,199 @@ +--- +category: general +date: 2026-03-06 +description: Aprende cómo verificar la firma en un PDF con Aspose PDF en C#. Verificación + de firmas PDF paso a paso, valida la firma del PDF y maneja firmas comprometidas. +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: es +og_description: Cómo verificar la firma en un PDF con Aspose PDF. Sigue esta guía + para realizar la verificación de firmas en PDF, validar la firma del PDF y detectar + firmas comprometidas en C#. +og_title: Cómo verificar la firma en PDF usando C# – Guía completa de Aspose +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: Cómo verificar la firma en PDF usando C# – Guía completa de Aspose +url: /es/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo verificar la firma en PDF usando C# – Guía completa de Aspose + +¿Alguna vez te has preguntado **cómo verificar una firma** en un PDF sin volverte loco? No estás solo. Muchos desarrolladores se topan con un obstáculo cuando necesitan **verificación de firmas en PDF** por razones de cumplimiento o auditoría, y el enfoque habitual de “simplemente confiar en la biblioteca” puede resultar contraproducente. + +En este tutorial recorreremos una solución práctica, de extremo a extremo, que no solo **valida la firma PDF** sino que también te indica si la firma ha sido manipulada. Usaremos la biblioteca **Aspose PDF**, lo que significa que el código funciona en .NET 6+, .NET Framework 4.6+ e incluso .NET Core. Al final tendrás un fragmento listo‑para‑ejecutar que podrás insertar en cualquier proyecto C#. + +## Qué necesitarás + +- **Aspose.Pdf** paquete NuGet (última versión al momento de escribir – 23.12). +- Entorno de desarrollo .NET (Visual Studio, Rider o VS Code). +- Un archivo PDF firmado (lo llamaremos `Signed.pdf`). +- Conocimientos básicos de C# – nada sofisticado, solo las declaraciones `using` habituales y la entrada/salida de `Console`. + +¡Eso es todo! Sin servicios extra, sin archivos de configuración oscuros. ¿Listo? Vamos al grano. + +![diagrama de cómo verificar la firma](image.png "cómo verificar la firma") + +## Paso 1: Configura tu proyecto para la verificación de firmas PDF + +Antes de poder llamar a cualquier API de Aspose necesitas referenciar la biblioteca. Abre tu terminal o la Consola del Administrador de paquetes y ejecuta: + +```bash +dotnet add package Aspose.Pdf +``` + +O, si prefieres la interfaz gráfica, busca **Aspose.Pdf** en el Administrador de paquetes NuGet e instálalo. Este paso es crucial porque sin el ensamblado **aspose pdf signature** no podrás acceder a la clase `PdfFileSignature` más adelante. + +> **Consejo profesional:** Apunta a .NET 6 o superior para obtener el mejor rendimiento y evitar advertencias de compatibilidad heredada. + +## Paso 2: Cargar el documento PDF + +Ahora que el paquete está instalado, podemos cargar el PDF que queremos comprobar. La clase `Document` representa todo el archivo en memoria. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**Por qué es importante:** Cargar el documento nos da acceso a sus estructuras internas, incluidos los campos de firma. Si el archivo falta o está corrupto, `Document` lanzará una excepción, que puedes capturar para ofrecer una experiencia de usuario más amable. + +## Paso 3: Crear el objeto Aspose PdfFileSignature + +Con el documento en mano, el siguiente paso es instanciar `PdfFileSignature`. Esta clase fachada sabe cómo leer, verificar y manipular firmas digitales incrustadas en PDFs. + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**Explicación:** El constructor de `PdfFileSignature` recibe el `Document` cargado. Internamente analiza el diccionario de firmas, poniendo a disposición métodos como `VerifySignature` e `IsSignatureCompromised`. + +## Paso 4: Verificar la integridad de la firma + +El corazón de la **verificación de firmas PDF** es el método `VerifySignature`. Devuelve `true` si el hash criptográfico coincide con el valor almacenado y la cadena de certificados es de confianza (suponiendo que hayas configurado un gestor de confianza, lo cual omitiremos por brevedad). + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +Si tienes varias firmas, simplemente cambia el índice (`0`, `1`, …). El método verifica tanto la integridad como la confianza en una sola pasada, por lo que es la opción preferida en la mayoría de los escenarios. + +## Paso 5: Detectar una firma comprometida + +Incluso una firma “válida” puede estar comprometida si el documento se alteró después de firmarlo. Aspose nos brinda `IsSignatureCompromised` para detectar ese caso sutil. + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**Cuándo usarlo:** Supongamos que un PDF está firmado y luego un usuario agrega un comentario o modifica una página. El hash será diferente, y `IsSignatureCompromised` devolverá `true` mientras que `VerifySignature` podría seguir siendo `true` si el certificado en sí está bien. Comprobar ambas banderas te brinda una visión completa. + +## Paso 6: Interpretar los resultados + +Ahora tenemos dos booleanos: `isSignatureValid` e `isSignatureCompromised`. Convirtámoslos en una salida amigable para la consola. + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### Salida esperada + +| Escenario | Salida en consola | +|----------------------------------------|----------------------------------| +| Válida y no comprometida | `Signature OK` | +| Válida pero comprometida (documento modificado) | `Signature compromised!` | +| Inválida (certificado no confiable, hash no coincide) | `Signature verification failed` | + +Esa tabla te ayuda a mapear rápidamente los resultados booleanos a mensajes legibles. + +## Ejemplo completo y funcional + +Juntándolo todo, aquí tienes el programa completo, listo‑para‑ejecutar: + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +Copia, pega, ajusta el `pdfPath` y ejecuta. Si todo está configurado correctamente verás uno de los tres mensajes listados arriba. + +## Problemas comunes y consejos para la verificación de firmas PDF + +| Problema | Por qué ocurre | Cómo arreglar / evitar | +|----------|----------------|------------------------| +| **Licencia Aspose faltante** | La evaluación gratuita agrega una marca de agua y puede limitar algunas llamadas a la API. | Registra una licencia (`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`). | +| **Múltiples firmas pero índice incorrecto** | Podrías estar verificando la firma equivocada, lo que genera falsos negativos. | Recorre `signatureVerifier.GetSignatureCount()` e inspecciona cada una. | +| **Cadena de certificados no confiable** | `VerifySignature` falla si la CA raíz no está en el almacén de confianza. | Añade la CA firmante al almacén de Raíz de Confianza de Windows o configura un `CertificateValidator` personalizado. | +| **Archivo bloqueado por otro proceso** | Abrir un PDF que sigue abierto en otro lugar puede lanzar una `IOException`. | Usa un `FileStream` con `FileShare.ReadWrite` o copia a un archivo temporal primero. | +| **Ruta del PDF incorrecta** | Un simple error tipográfico genera `FileNotFoundException`. | Valida la ruta con `File.Exists(pdfPath)` antes de cargar. | + +### Casos límite que podrías encontrar + +- **Firmas desvinculadas**: Algunos PDFs almacenan firmas de forma externa. Actualmente `PdfFileSignature` de Aspose solo admite firmas incrustadas. +- **Firmas con sello de tiempo**: Si necesitas verificar la autoridad de sello de tiempo (TSA), deberás llamar a `VerifySignature` con un objeto `VerificationOptions` personalizado—fuera del alcance de esta guía rápida, pero importante para proyectos con altos requisitos de cumplimiento. + +## Próximos pasos – Extender tu lógica de validación + +Ahora que dominas los conceptos básicos de **cómo verificar una firma**, podrías querer: + +1. **Validar la firma PDF** contra una lista de certificados de confianza (p. ej., PKI corporativa). +2. **Exportar detalles de la firma** (nombre del firmante, hora de firma, huella del certificado) usando `GetSignatureInfo`. +3. **Procesar por lotes varios PDFs** en una carpeta, registrando los resultados en un CSV para fines de auditoría. + +Todas estas son extensiones sencillas del código que acabamos de cubrir y te mantienen dentro del mismo ecosistema **aspose pdf signature**. + +--- + +**En resumen**, ahora sabes exactamente **cómo verificar la firma** en un PDF usando C# y Aspose, cómo detectar una firma comprometida y qué hacer cuando la verificación falla. El enfoque es robusto, funciona con múltiples firmas y puede integrarse en pipelines de procesamiento de documentos más amplios. + +¿Tienes una variante de este escenario? Tal vez necesites firmar PDFs en lugar de verificarlos, o estés tratando con PDFs encriptados. Deja un comentario y exploraremos esas posibilidades juntos. ¡Feliz codificación! + +{{< /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/programming-with-stamps-and-watermarks/_index.md b/pdf/spanish/net/programming-with-stamps-and-watermarks/_index.md index 59b9cba21..6748c67f4 100644 --- a/pdf/spanish/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/spanish/net/programming-with-stamps-and-watermarks/_index.md @@ -39,6 +39,7 @@ Los tutoriales de Aspose.PDF "Programación con sellos y marcas de agua" para .N | [Tabla en la sección de encabezado y pie de página](./table-in-header-footer-section/) Aprenda a agregar texto fácilmente al pie de página de un archivo PDF con Aspose.PDF para .NET. Incluye una guía paso a paso para una integración perfecta. | [Texto en el pie de página del archivo PDF](./text-in-footer/) | Aprenda a agregar texto en el pie de página de un archivo PDF con Aspose.PDF para .NET. | | [Texto en el encabezado del archivo PDF](./text-in-header/) Aprenda a agregar encabezados de texto a archivos PDF con Aspose.PDF para .NET con este tutorial paso a paso. Mejore sus documentos de forma eficiente y eficaz. +| [Crear documento PDF con numeración Bates en C# – Guía completa](./create-pdf-document-with-bates-numbering-in-c-full-guide/) | Aprenda a crear documentos PDF con numeración Bates usando Aspose.PDF para .NET en C# con esta guía paso a paso. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/spanish/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/spanish/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..4ffcf1f44 --- /dev/null +++ b/pdf/spanish/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,184 @@ +--- +category: general +date: 2026-03-06 +description: Crea un documento PDF en C# y agrega números de Bates fácilmente. Aprende + cómo añadir una página en blanco al PDF, colocar un sello en la página e implementar + la numeración Bates. +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: es +og_description: Crear documento PDF en C# y agregar número de Bates. Esta guía muestra + cómo añadir una página en blanco al PDF, colocar un sello en la página y aplicar + numeración de Bates. +og_title: Crear documento PDF con numeración Bates – Tutorial de C# +tags: +- Aspose.Pdf +- C# +- PDF automation +title: Crear documento PDF con numeración Bates en C# – Guía completa +url: /es/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crear documento PDF con numeración Bates en C# + +¿Alguna vez necesitaste **crear un documento PDF** en C# y te preguntaste cómo añadir un número Bates sin volverte loco? No eres el único: despachos de abogados, tribunales e incluso algunos equipos de cumplimiento corporativo se enfrentan a este mismo reto a diario. ¿La buena noticia? Con unas pocas líneas de código de Aspose.Pdf puedes generar un PDF nuevo, añadir una página en blanco y estampar un número Bates correcto en un flujo continuo. + +En este tutorial recorreremos todo el proceso: desde la configuración del proyecto, pasando por la adición de una página en blanco al PDF, hasta descubrir **cómo añadir numeración Bates**, y finalmente **colocar el sello en la página** y guardar el resultado. Al final tendrás un fragmento listo para usar que podrás insertar en cualquier aplicación .NET. Sin referencias vagas, solo un ejemplo completo y ejecutable. + +## Lo que necesitarás + +- **.NET 6+** (o .NET Framework 4.6+ – Aspose.Pdf funciona con ambos) +- **Aspose.Pdf for .NET** paquete NuGet (`Install-Package Aspose.Pdf`) +- Un IDE decente (Visual Studio, Rider o VS Code con la extensión C#) + +Eso es todo. Sin DLLs extra, sin servicios externos. Vamos al grano. + +## Paso 1: Crear documento PDF – Configuración inicial + +Lo primero es obtener un objeto `Document` nuevo. Piensa en él como el lienzo vacío donde vivirá todo lo demás. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **Por qué importa:** La clase `Document` es el punto de entrada para cada operación de Aspose. Instanciarla te da acceso a la colección `Pages`, a los metadatos y a la configuración de seguridad, todos los bloques de construcción para un PDF profesional. + +## Paso 2: Añadir página en blanco al PDF + +Un PDF sin páginas es como un libro sin hojas: bastante inútil. Añadir una página en blanco es sencillo y nos brinda una superficie donde estampar el número Bates. + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **Consejo profesional:** Si necesitas varias páginas, simplemente llama a `pdfDocument.Pages.Add()` dentro de un bucle. Cada llamada devuelve un objeto `Page` nuevo que puedes personalizar de forma independiente. + +## Paso 3: Cómo añadir numeración Bates – Crear el TextStamp + +Ahora llega la parte esencial: el **número Bates**. En Aspose.Pdf es simplemente un `TextStamp` con una bandera de artefacto especial. + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **Por qué establecemos `Artifact`:** Algunos lectores de PDF exponen los números Bates como metadatos buscables. Marcar el sello como artefacto `BatesNumbering` garantiza que las herramientas posteriores lo reconozcan automáticamente. + +## Paso 4: Colocar el sello en la página + +Con el sello listo, ahora **colocamos el sello en la página**. Este es el paso donde el número visual aparece realmente en el PDF. + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **Caso límite:** Si necesitas que el número se incremente en cada página, deberías iterar sobre `pdfDocument.Pages` y actualizar `batesStamp.Value` antes de llamar a `AddStamp`. El ejemplo aquí se mantiene simple con un “Bates‑001” estático. + +## Paso 5: Guardar y verificar el resultado + +Finalmente, persistimos el PDF en disco. Elige una carpeta donde tengas permisos de escritura; de lo contrario, obtendrás una `UnauthorizedAccessException`. + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +Al abrir `BatesStamped.pdf` en cualquier visor deberías ver un pequeño “Bates‑001” ubicado discretamente en la esquina inferior derecha de la página en blanco. + +> **Salida esperada:** +> ![PDF con sello de número Bates](image-placeholder.png "PDF con sello de número Bates") +> *Texto alternativo: PDF con sello de número Bates en la esquina inferior‑derecha.* + +Si el número no aparece, verifica los valores de margen y asegúrate de que el tamaño de página no sea demasiado pequeño (el A4 predeterminado funciona bien). También confirma que la bandera `Artifact` no esté siendo eliminada por herramientas de post‑procesamiento. + +## Ejemplo completo y funcional + +A continuación tienes el programa completo, listo para copiar y pegar. Incluye todas las directivas `using` y comentarios para que no te pierdas. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +Ejecuta el programa, abre el PDF y verás el número Bates exactamente donde le indicamos. 🎉 + +## Variaciones comunes y trampas + +| Escenario | Qué cambiar | Por qué | +|----------|----------------|-----| +| **Múltiples páginas, números incrementales** | Recorrer `pdfDocument.Pages`, establecer `batesStamp.Value = $"Bates-{i:D3}"` antes de `AddStamp` | Asigna a cada página un identificador único, típico en paquetes legales | +| **Ubicación diferente (arriba‑izquierda)** | Cambiar `HorizontalAlignment = HorizontalAlignment.Left` y `VerticalAlignment = VerticalAlignment.Top` | Algunas organizaciones prefieren el número en el encabezado en lugar del pie de página | +| **Fuente o color personalizados** | Establecer `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` | Mejora la legibilidad o cumple con directrices de marca | +| **Añadir un PDF existente como fondo** | Cargar el PDF origen con `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` | Útil cuando necesitas estampar sobre un formulario ya generado | + +## Conclusión + +Acabamos de mostrar cómo **crear documento PDF**, **añadir página en blanco al PDF** y **añadir número Bates** usando Aspose.Pdf para .NET, luego **colocar el sello en la página** y guardar el archivo. El código está deliberadamente compacto para que puedas adaptarlo a flujos de trabajo más amplios, ya sea procesando docenas de archivos o integrándolo en un servicio web. + +Si estás listo para llevar esto más lejos, considera: + +- Automatizar la lógica de incremento para archivos de casos extensos. +- Incrustar la generación de PDF en una API ASP.NET Core. +- Añadir seguridad (protección con contraseña) mediante `pdfDocument.Encrypt(...)`. + +Siéntete libre de experimentar, romper cosas y hacer preguntas en los comentarios. ¡Feliz codificación, y que tus PDFs siempre estén perfectamente sellados! + +{{< /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/programming-with-tagged-pdf/_index.md b/pdf/spanish/net/programming-with-tagged-pdf/_index.md index 533ca41ee..f3d6571fa 100644 --- a/pdf/spanish/net/programming-with-tagged-pdf/_index.md +++ b/pdf/spanish/net/programming-with-tagged-pdf/_index.md @@ -37,7 +37,7 @@ Los tutoriales "Programación con PDF etiquetados" de Aspose.PDF para .NET le gu | [Propiedades de los elementos de estructura en un archivo PDF](./structure-elements-properties/) Guía paso a paso para trabajar con propiedades de elementos estructurales en archivos PDF con Aspose.PDF para .NET. Cree elementos estructurales con abundante información. | [Celda de tabla de estilos](./style-table-cell/) Aprenda a aplicar estilo a las celdas de una tabla PDF con Aspose.PDF para .NET con este tutorial detallado. Siga las instrucciones para crear y dar formato a atractivas tablas PDF. | [Elemento de tabla de estilos](./style-table-element/) | Aprenda a crear y diseñar un elemento de tabla en Aspose.PDF para .NET con instrucciones paso a paso, estilos personalizados y compatibilidad con PDF/UA. | -| [Fila de tabla de estilos](./style-table-row/) Aprenda a aplicar estilo a las filas de una tabla en un PDF usando Aspose.PDF para .NET con una guía paso a paso para mejorar el formato de su documento con facilidad. | +| [Fila de tabla de estilos](./style-table-row/) Aprenda a aplicar estilo a las filas de una tabla en un PDF usando Aspose.PDF para .NET con una guía paso a paso para mejorar el formato de su documento con facilidad. | [Estructura del texto de estilo en un archivo PDF](./style-text-structure/) Aprenda a aplicar estilo a la estructura del texto en archivos PDF con Aspose.PDF para .NET en este completo tutorial paso a paso. Transforme sus documentos. | [Contenido PDF etiquetado](./tagged-pdf-content/) Aprenda a trabajar con contenido etiquetado en un documento PDF con Aspose.PDF para .NET. Guía paso a paso para usar etiquetas. | [Etiquetar imagen en un PDF existente](./tag-image-in-existing-pdf/) Aprenda a etiquetar imágenes en archivos PDF existentes con Aspose.PDF para .NET. Guía paso a paso para mejorar la accesibilidad con compatibilidad con PDF/UA. @@ -45,6 +45,7 @@ Los tutoriales "Programación con PDF etiquetados" de Aspose.PDF para .NET le gu | [Elementos de la estructura del texto en un archivo PDF](./text-structure-elements/) Aprenda a manipular elementos de estructura de texto en archivos PDF con Aspose.PDF para .NET. Esta guía paso a paso cubre todo lo necesario para crear archivos PDF estructurados. | [Validar archivo PDF](./validate-pdf/) Aprenda a validar un archivo PDF con Aspose.PDF para .NET. Compruebe su cumplimiento de los estándares y genere un informe de validación. | | [Crear PDF etiquetado en C# – Guía completa paso a paso](./create-tagged-pdf-in-c-complete-step-by-step-guide/) | Aprenda a crear un PDF etiquetado en C# con Aspose.PDF para .NET siguiendo esta guía completa paso a paso. | +| [Crear PDF etiquetado en C# – Guía paso a paso](./create-tagged-pdf-in-c-step-by-step-guide/) | Aprenda a crear un PDF etiquetado en C# con Aspose.PDF para .NET siguiendo una guía paso a paso. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/spanish/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/spanish/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..0ee597ea3 --- /dev/null +++ b/pdf/spanish/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,263 @@ +--- +category: general +date: 2026-03-06 +description: Crea PDF etiquetado con Aspose.Pdf en C#. Aprende cómo agregar una imagen + al PDF, establecer la posición de la figura y etiquetar el PDF para accesibilidad. +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: es +og_description: Crear PDF etiquetado con Aspose.Pdf. Esta guía muestra cómo agregar + una imagen al PDF, establecer la posición de la figura y etiquetar el PDF para accesibilidad. +og_title: Crear PDF etiquetado en C# – Tutorial completo +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: Crear PDF etiquetado en C# – Guía paso a paso +url: /es/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crear PDF etiquetado en C# – Tutorial completo + +¿Alguna vez necesitaste **crear PDF etiquetado** en C# pero no sabías por dónde empezar? No estás solo; la accesibilidad es imprescindible hoy en día, y un PDF etiquetado es la columna vertebral de un documento conforme. En este tutorial recorreremos un ejemplo del mundo real que **añade una imagen al PDF**, establece la posición de la figura y muestra **cómo etiquetar PDF** usando Aspose.Pdf. Al final tendrás un PDF completamente etiquetado que podrás enviar a cualquiera. + +Cubrirémos todo, desde cargar un archivo existente hasta guardar la salida final, para que no tengas que buscar “cómo añadir una imagen” en otro lugar. Sin relleno—solo una solución clara y ejecutable que funciona con Aspose.Pdf 23.8 (la última disponible al momento de escribir). Prepara tu IDE y comencemos. + +--- + +## Lo que necesitarás + +- **Aspose.Pdf for .NET** (paquete NuGet `Aspose.Pdf`). +- .NET 6+ (o .NET Framework 4.7.2+). +- Un PDF de entrada que ya tenga una estructura lógica (es decir, ya esté etiquetado) – si no, puedes habilitar el etiquetado mediante `pdfDocument.TaggedContent = true`. +- Un archivo de imagen (`image.png`) que deseas incrustar. + +Eso es todo. Sin bibliotecas adicionales, sin archivos de configuración obscuros. + +## Paso 1: Cargar el documento PDF existente (Crear base de PDF etiquetado) + +Lo primero que hacemos es abrir el PDF que queremos mejorar. Cargar el archivo nos brinda acceso a su estructura lógica, lo cual es esencial para los flujos de trabajo de **crear PDF etiquetado**. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*Por qué es importante:* Sin un árbol de etiquetas el PDF no transmitirá información estructural a los lectores de pantalla. Habilitar el etiquetado asegura que cualquier elemento nuevo que añadamos (como una figura) herede la jerarquía adecuada. + +## Paso 2: Acceder a la raíz de la estructura lógica (Cómo etiquetar PDF) + +Ahora nos adentramos en la estructura lógica del PDF. El elemento raíz es el contenedor de todas las etiquetas—piénsalo como el esquema del documento. + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*Explicación:* `logicalRoot` nos permite añadir nuevas etiquetas como `
` o `
`. Este es el núcleo de **cómo etiquetar PDF** programáticamente. + +## Paso 3: Crear una etiqueta Figure y establecer su posición (Establecer posición de la figura) + +Una etiqueta *Figure* agrupa contenido visual con una leyenda opcional. Crearemos una, la posicionaremos y la adjuntaremos a la raíz. + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*Por qué establecemos una posición:* El paso de **establecer posición de la figura** determina dónde se coloca el elemento visual en la página. Si lo omites, la figura puede aparecer en una ubicación inesperada o ser invisible para la tecnología de asistencia. + +## Paso 4: Añadir una representación visual – Insertar una imagen (Añadir imagen al PDF) + +Con la etiqueta en su lugar, necesitamos una imagen real. Esta es la parte que responde a **añadir imagen al pdf**. + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*Punto clave:* Las coordenadas del rectángulo deben coincidir con `figureTag.Position` que definimos antes; de lo contrario, la figura y su contenido visual estarán desincronizados, rompiendo la accesibilidad. + +## Paso 5: Guardar el PDF actualizado (Finalizar creación de PDF etiquetado) + +Finalmente, guardamos los cambios en un nuevo archivo. Mantener el original sin tocar es una buena práctica. + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +En esta etapa tienes un archivo **crear PDF etiquetado** que contiene una imagen correctamente posicionada envuelta en una etiqueta `
`. Abre `output.pdf` en Adobe Acrobat y revisa el panel *Tags* – deberías ver un nodo `Figure` bajo la raíz. + +## Ejemplo completo, listo para ejecutar + +A continuación se muestra el programa completo que puedes copiar y pegar en una aplicación de consola. Todos los pasos ya están en el orden correcto. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### Resultado esperado + +- `output.pdf` se abre con la imagen mostrada en (100, 150) puntos, con un tamaño de 300 × 200 puntos. +- El panel *Tags* muestra un elemento `Figure` que envuelve la imagen. +- Las herramientas de lectores de pantalla anuncian “Figure” antes de describir la imagen, cumpliendo con los estándares básicos de accesibilidad. + +## Preguntas frecuentes y casos límite + +### ¿Qué pasa si el PDF de origen no está ya etiquetado? + +Aspose.Pdf te permite activar el etiquetado configurando `pdfDocument.TaggedContent.IsTagged = true;`. La biblioteca generará un árbol de etiquetas predeterminado, después del cual podrás añadir etiquetas personalizadas como se muestra. + +### ¿Puedo añadir una leyenda a la figura? + +Sí. Después de crear `figureTag`, puedes adjuntar un `Paragraph` con un `TextFragment` y establecer su `Tag` a `Caption`. Ejemplo: + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### ¿Cómo coloco la figura en una página diferente? + +Reemplaza `var firstPage = pdfDocument.Pages[1];` con el índice de página deseado, por ejemplo, `pdfDocument.Pages[3]`. Recuerda ajustar las coordenadas de `Position` si el tamaño de la página difiere. + +### ¿Qué pasa si necesito etiquetar varias imágenes? + +Crea un nuevo `Figure` para cada imagen, asigna a cada uno una `Position` única y añade el objeto `Image` correspondiente a la página adecuada. Recorrer una colección de imágenes funciona muy bien. + +### ¿Esto funciona con cumplimiento PDF/A? + +Aspose.Pdf admite PDF/A‑1b, PDF/A‑2b y PDF/A‑3b. Al generar un documento PDF/A, asegúrate de establecer el modo de cumplimiento antes de guardar: + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +La lógica de etiquetado sigue siendo la misma. + +## Consejos profesionales y trampas + +- **Consejo profesional:** Siempre usa rutas absolutas o `Path.Combine` para evitar errores de archivo no encontrado en tiempo de ejecución. +- **Cuidado con:** Coordenadas desajustadas entre la etiqueta `Figure` y el rectángulo `Image`—las tecnologías de asistencia dependen de esa alineación. +- **Nota de rendimiento:** Si procesas muchas páginas, envuelve el flujo de la imagen en un bloque `using` para liberar recursos rápidamente. +- **Verificación de versión:** La API mostrada funciona con Aspose.Pdf 23.8+. Las versiones anteriores pueden tener nombres de clases ligeramente diferentes (p. ej., `LogicalStructureElement` en lugar de `FigureElement`). + +## Conclusión + +Acabamos de **crear PDF etiquetado** de principio a fin, demostramos **añadir imagen al pdf** y mostramos cómo **establecer posición de la figura** mientras respondíamos a **cómo etiquetar pdf** y **cómo añadir imagen** en un único ejemplo coherente. El código está listo para ejecutarse, las explicaciones cubren el “por qué” de cada paso, y ahora tienes una base sólida para crear PDFs accesibles en C#. + +¿Listo para el próximo desafío? Intenta añadir tablas con etiquetas `
`, o incrusta una capa de cumplimiento PDF/A‑2b para propósitos de archivo. El mismo patrón—cargar, acceder a la estructura lógica, crear una etiqueta, adjuntar contenido visual, guardar—se aplica a la mayoría de las tareas de accesibilidad PDF. + +Si encuentras algún problema o tienes un caso de uso que no está cubierto aquí, deja un comentario abajo. ¡Feliz etiquetado y disfruta creando PDFs que todos puedan leer! + +![Diagrama que muestra un PDF con una etiqueta Figure y una imagen – ilustra cómo crear PDF etiquetado](placeholder-image.png "ejemplo de crear PDF etiquetado") + +{{< /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/digital-signatures/_index.md b/pdf/swedish/net/digital-signatures/_index.md index fe9a79ba6..7972030b4 100644 --- a/pdf/swedish/net/digital-signatures/_index.md +++ b/pdf/swedish/net/digital-signatures/_index.md @@ -53,6 +53,8 @@ Lär dig hur du verifierar digitala signaturer i PDF-filer med Aspose.PDF för . ### [Verifiera PDF-signatur i C# – Komplett guide för att validera digital signatur i PDF](./verify-pdf-signature-in-c-complete-guide-to-validate-digital/) Lär dig hur du verifierar PDF-signaturer i C# med en komplett guide för att validera digitala signaturer i PDF. +### [Hur man läser signaturer i PDF med C# – Steg‑för‑steg‑guide](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +Lär dig hur du läser digitala signaturer i PDF-filer med C#. Den här guiden visar steg-för-steg hur du extraherar och analyserar signaturdata. ## Ytterligare resurser diff --git a/pdf/swedish/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/swedish/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..ba4c07922 --- /dev/null +++ b/pdf/swedish/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-03-06 +description: Hur man läser signaturer i en PDF med C#. Lär dig att ladda PDF‑dokument + med C#, lista PDF‑signaturer och hämta digitala PDF‑signaturer snabbt och pålitligt. +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: sv +og_description: Hur man läser signaturer i en PDF med C#. Den här guiden visar hur + man laddar PDF-dokument i C#, listar PDF‑signaturer och hämtar digitala signaturer + i en PDF i några enkla steg. +og_title: Hur man läser signaturer i PDF med C# – Komplett guide +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: Hur man läser signaturer i PDF med C# – Steg‑för‑steg‑guide +url: /sv/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hur man läser signaturer i PDF med C# – Komplett guide + +Har du någonsin funderat **hur man läser signaturer** som redan är inbäddade i en PDF‑fil? Kanske bygger du en efterlevnads‑dashboard, eller så behöver du bara granska signerade kontrakt innan de hamnar i din databas. Den goda nyheten är att med några rader C# och Aspose.Pdf‑biblioteket kan du hämta signaturernas namn direkt ur filen—utan manuell inspektion. + +I den här handledningen går vi igenom hur du laddar ett PDF‑dokument i C#, listar PDF‑signaturer och hämtar information om digitala signaturer i PDF. I slutet har du en färdig körbar konsolapp som skriver ut varje signaturnamn den hittar, samt tips för att hantera kantfall som lösenordsskyddade filer. + +## Förutsättningar + +- .NET 6.0 eller senare (koden fungerar även med .NET Framework 4.6+) +- Aspose.Pdf för .NET (du kan hämta en gratis tillfällig licens från Aspose‑webbplatsen) +- En PDF som redan innehåller en eller flera digitala signaturer (exempel‑PDF‑filen `MultiSigned.pdf` ingår i repot) + +> **Proffstips:** Om du använder Visual Studio, aktivera *Nullable Reference Types* för att tidigt fånga null‑relaterade buggar. + +## Steg 1: Ladda PDF‑dokumentet i C# + +Det första vi behöver är ett `Document`‑objekt som representerar PDF‑filen på disken. Aspose.Pdf:s `Document`‑klass hanterar allt från enkel textutdragning till komplex formulärbehandling. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**Varför detta är viktigt:** Att ladda PDF‑filen validerar att filen finns och är läsbar. Om filen är korrupt eller sökvägen fel, avbryter vi tidigt istället för att stöta på kryptiska fel senare när vi försöker lista signaturerna. + +## Steg 2: Skapa en `PdfFileSignature`‑hjälpare + +Aspose separerar generisk PDF‑hantering (`Document`) från signatur‑specifika operationer (`PdfFileSignature`). Genom att instansiera denna hjälpare får vi tillgång till metoder som `GetSignatureNames()`. + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**Varför detta är viktigt:** `PdfFileSignature`‑klassen vet hur man parsar PDF‑filens `/Sig`‑dictionary‑poster, där de digitala signaturerna lagras. Att använda den säkerställer att vi läser signaturerna exakt som de lades till, och bevarar all kryptografisk metadata. + +## Steg 3: Hämta alla signaturnamn + +Nu kommer kärnan i **hur man läser signaturer**: anropa `GetSignatureNames()`. Denna metod returnerar en string‑array som innehåller *fältnamnen* för varje signatur. + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**Vad du kommer att se:** Om `MultiSigned.pdf` innehåller tre signaturer med namnen `Signature1`, `Signature2` och `Signature3`, kommer konsolutskriften att vara: + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## Steg 4: (Valfritt) Verifiera varje signaturs giltighet + +Att läsa namnen räcker ofta, men många projekt behöver också veta om varje signatur fortfarande är giltig. Aspose låter dig validera en signatur via dess fältnamn: + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **Kantfall:** Om PDF‑filen är lösenordsskyddad måste du ange lösenordet innan du anropar `VerifySignature`. Använd `pdfDocument.Encrypt.Password = "yourPassword";` direkt efter att dokumentet har laddats. + +## Fullt fungerande exempel + +Nedan är det kompletta programmet som du kan kopiera‑och‑klistra in i ett nytt konsolprojekt (`dotnet new console`). Det innehåller alla steg, felhantering och valfri verifiering. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**Förväntad utskrift** (förutsatt tre giltiga signaturer): + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## Hantera vanliga variationer + +| Situation | Vad du ska ändra | Varför | +|-----------|------------------|--------| +| **Lösenordsskyddad PDF** | Ställ in `pdfDocument.Encrypt.Password = "yourPwd";` innan du skapar `PdfFileSignature`. | Utan lösenordet är signatur‑dictionary‑poster krypterade och `GetSignatureNames()` returnerar en tom array. | +| **Stora PDF‑filer ( > 100 MB )** | Använd `pdfSigner.GetSignatureNames(0, 10)` för att paginera resultaten (första parametern = startindex). | Att ladda hela signaturlistan på en gång kan förbruka mycket minne. | +| **Inga signaturer alls** | Koden skriver redan ut en vänlig varning. Överväg att logga detta som en audit‑händelse. | Hjälper efterföljande processer att avgöra om filen ska avvisas eller om användaren ska ombeds skicka en signerad version. | +| **Anpassade signaturfält‑namn** | Metoden returnerar vilket fältnamn som helst som användes vid signeringen, t.ex. `EmployeeApproval`. Ingen extra kod behövs. | Gör det möjligt att mappa signaturer tillbaka till affärsroller. | + +## Bästa praxis & tips + +- **Dispose‑objekt**: Mönstret `using var pdfSigner` garanterar att inhemska resurser frigörs omedelbart. +- **Licensiera tidigt**: Anropa `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` i början av `Main` för att undvika evaluerings‑vattenstämpeln. +- **Trådsäkerhet**: Om du bearbetar många PDF‑filer parallellt, skapa en separat `PdfFileSignature` per tråd. Klassen är inte trådsäker. +- **Loggning**: För produktion, ersätt `Console.WriteLine` med en strukturerad logger (Serilog, NLog) så att du kan fånga de exakta signaturnamnen för audit‑spår. +- **Versionskontroll**: Koden fungerar med Aspose.Pdf för .NET 23.10 och nyare. Äldre versioner kan kräva `PdfSignature` istället för `PdfFileSignature`. + +## Slutsats + +Vi har gått igenom **hur man läser signaturer** från en PDF med C#. Genom att ladda PDF‑dokumentet, skapa en `PdfFileSignature`‑hjälpare och anropa `GetSignatureNames()` kan du lista varje digital signatur som är inbäddad i filen. Valfri verifiering ger ett extra förtroendelager, och exempel‑koden visar exakt hur du integrerar detta i en verklig konsolapp. + +Redo för nästa steg? Prova att kombinera detta med Aspose:s `DigitalSignatureUtil` för att extrahera signatörscertifikat, eller mata in signaturlistan i en efterlevnads‑dashboard som flaggar osignerade kontrakt. Möjligheterna är oändliga—kom bara ihåg att **ladda PDF‑dokument C#**, **lista PDF‑signaturer** och **hämta digitala signaturer PDF** när du behöver en snabb audit. + +Lycka till med kodningen, och må dina PDF‑filer alltid förbli säkert signerade! + +{{< /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-conversion/_index.md b/pdf/swedish/net/document-conversion/_index.md index e202e024c..3cf42df77 100644 --- a/pdf/swedish/net/document-conversion/_index.md +++ b/pdf/swedish/net/document-conversion/_index.md @@ -37,6 +37,7 @@ Du lär dig hur du anger konverteringsinställningar, extraherar text och bilder | [PDF till PDFA](./pdf-to-pdfa/) Lär dig hur du konverterar PDF-filer till PDF/A-format med Aspose.PDF för .NET med den här steg-för-steg-handledningen. | | [PDF till PDFA3b](./pdf-to-pdfa3b/) | Lär dig att konvertera PDF-filer till PDF/A-3B-format utan problem med Aspose.PDF för .NET i den här steg-för-steg-guiden. | | [Konvertera PDF till PDF/X‑4 i C# – Steg‑för‑steg ASP.NET PDF‑handledning](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | Lär dig hur du konverterar PDF till PDF/X‑4 med Aspose.PDF för .NET i en detaljerad steg‑för‑steg‑guide. | +| [Aspose PDF-handledning: Konvertera PDF till PDF/X‑4 i C#](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) | Lär dig hur du konverterar PDF-filer till PDF/X‑4-format med Aspose.PDF för .NET i en detaljerad steg‑för‑steg‑guide. | | [PDF till PNG-teckensnittstips](./pdf-to-png-font-hinting/) | Lär dig konvertera PDF till PNG med teckensnittstips med hjälp av Aspose.PDF för .NET i en enkel steg-för-steg-guide. | | [pdf till png‑handledning – Konvertera PDF‑sidor till PNG i C#](./pdf-to-png-tutorial-convert-pdf-pages-to-png-in-c/) | Lär dig hur du konverterar PDF‑sidor till PNG‑bilder i C# med Aspose.PDF för .NET i denna steg‑för‑steg‑guide. | | [PDF till PPT](./pdf-to-ppt/) | Lär dig hur du konverterar PDF till PPT med Aspose.PDF för .NET med den här steg-för-steg-guiden. Enkelt, effektivt och perfekt för presentationer. | diff --git a/pdf/swedish/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/swedish/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..ecff3a483 --- /dev/null +++ b/pdf/swedish/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-03-06 +description: Aspose PDF-handledning visar hur du använder Aspose för att läsa in ett + PDF‑dokument i C#, konvertera PDF till PDF/X‑4 och spara den konverterade PDF‑filen + effektivt. +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: sv +og_description: Aspose PDF‑handledning förklarar hur man laddar ett PDF‑dokument i + C#, konverterar det till PDF/X‑4‑format och sparar den konverterade PDF‑filen med + tydliga kodexempel. +og_title: 'Aspose PDF-handledning: Konvertera PDF till PDF/X‑4 i C#' +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: 'Aspose PDF-handledning: Konvertera PDF till PDF/X‑4 i C#' +url: /sv/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose PDF‑handledning: Konvertera PDF till PDF/X‑4 i C# + +Har du någonsin undrat hur man använder Aspose för att förvandla en vanlig PDF till en PDF/X‑4‑fil utan ansträngning? Du är inte ensam—utvecklare behöver ofta ett pålitligt sätt att **load PDF document C#**‑style, konvertera den, och sedan **save the converted PDF** för efterföljande arbetsflöden. I den här guiden går vi igenom ett komplett, körbart exempel som gör exakt det, med den senaste Aspose.Pdf för .NET. + +Vi täcker allt från att installera biblioteket, ladda en käll‑PDF, konvertera den till PDF/X‑4‑standarden och slutligen spara resultatet på disk. När du är klar har du en solid förståelse för **how to use Aspose** för detta vanliga konverteringsscenario, samt tips för att hantera edge cases. + +## Förutsättningar + +- .NET 6.0 eller senare (koden fungerar även på .NET Framework, men .NET 6+ rekommenderas). +- En giltig Aspose.Pdf för .NET‑licensfil (eller så kan du köra i utvärderingsläge för ett snabbt test). +- Visual Studio 2022 eller någon C#‑kompatibel IDE. +- En inmatnings‑PDF‑fil placerad i `YOUR_DIRECTORY/input.pdf`. + +Inga extra NuGet‑paket utöver `Aspose.Pdf` krävs. + +## Installera Aspose.Pdf via NuGet + +Öppna din terminal eller Package Manager Console och kör: + +```bash +dotnet add package Aspose.Pdf +``` + +Det hämtar den senaste stabila versionen (från och med mars 2026, version 23.12). Om du föredrar UI, sök efter *Aspose.Pdf* i NuGet Package Manager och installera det. + +## Steg 1: Ladda PDF‑dokument i C# med Aspose + +Det första du behöver göra är att läsa in käll‑PDF‑filen i minnet. Asposes `Document`‑klass är startpunkten. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**Varför detta är viktigt:** Att ladda filen validerar att sökvägen finns och att PDF‑filen inte är korrupt. `try/catch`‑blocket ger dig ett smidigt sätt att visa fel—praktiskt när filen kommer från användaruppladdningar. + +## Steg 2: Konvertera PDF till PDF/X‑4‑format + +PDF/X‑4 är en underuppsättning av PDF som är avsedd för pålitlig utskrift och arkivering. Konverteringen säkerställer att alla teckensnitt är inbäddade och att filen följer branschstandarder. + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**Varför välja `ConvertErrorAction.Delete`?** Vissa äldre PDF‑filer innehåller element (t.ex. ej stödda annotationer) som annars skulle stoppa konverteringen. Att ta bort dem håller processen smidig, men du bör granska resultatet om du behöver bevara dessa element. + +### Valfritt: Verifiera konverteringsframgång + +Om du vill vara extra säker kan du inspektera dokumentets `PdfFormat` efter konverteringen: + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## Steg 3: Spara den konverterade PDF‑filen + +Nu när dokumentet är i PDF/X‑4‑form, skriv tillbaka det till disk. + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**Resultat du kommer att se:** En ny fil med namnet `Converted_PDFX4.pdf` visas i `YOUR_DIRECTORY`. Öppna den med någon PDF‑visare som stödjer PDF/X‑4 (Adobe Acrobat, Foxit osv.) så märker du att alla teckensnitt är inbäddade och att dokumentet följer PDF/X‑4‑specifikationen. + +![aspose pdf-handledning - konverterar PDF till PDF/X‑4](/images/aspose-pdf-conversion.png "aspose pdf-handledning som visar PDF/X‑4 konverteringsresultat") + +*Bildens alt‑text innehåller huvudnyckelordet, vilket uppfyller SEO‑krav.* + +## Fullständigt end‑to‑end‑exempel + +Sätter vi ihop allt, så får du en självständig konsolapp som du kan kopiera‑klistra in i ett nytt C#‑projekt: + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +Kör programmet, så bör du se konsolmeddelanden som bekräftar varje steg. Om något går fel pekar felmeddelandena dig exakt på var problemet uppstod. + +## Vanliga frågor och edge‑cases + +### Vad om jag behöver behålla annotationer? + +`ConvertErrorAction.Delete` tar bort ej stödda objekt, inklusive vissa annotationer. Byt till `ConvertErrorAction.Keep` om det är kritiskt att bevara dem, men testa resultatet—vissa annotationer kan fortfarande ge varningar om efterlevnad. + +### Hur hanterar jag stora PDF‑filer (hundratals MB)? + +Aspose.Pdf strömmar filen, så minnesanvändningen förblir måttlig. Du kan dock vilja öka `System.GC`‑trösklarna eller bearbeta dokumentet i delar (t.ex. konvertera sida‑för‑sida) för extremt stora filer. + +### Kan jag konvertera flera filer i en batch? + +Absolut. Lägg in logiken för laddning‑konvertering‑sparande i en `foreach`‑loop som itererar över en katalog med PDF‑filer. Kom ihåg att hantera undantag per fil så att en dålig PDF inte avbryter hela batchen. + +### Fungerar detta på .NET Core på Linux? + +Ja. Aspose.Pdf är plattformsoberoende. Se bara till att `Aspose.Pdf`‑NuGet‑paketet refereras och att du har rätt teckensnittsfiler installerade på Linux‑värden om du behöver textrendering. + +## Pro‑tips från fältet + +- **Set a license early**: `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` – detta tar bort utvärderingsvattenstämpeln och förbättrar prestanda. +- **Validate the output**: Använd Asposes `PdfFormatValidator` för att programatiskt bekräfta PDF/X‑4‑efterlevnad innan du levererar filen. +- **Log conversion time**: Stora batcher drar nytta av att tidtaga varje konvertering (`Stopwatch`) för att upptäcka prestandaförsämringar. +- **Avoid hard‑coded paths**: Föredra konfigurationsfiler eller miljövariabler för `inputPath` och `outputPath`—gör appen portabel. + +## Slutsats + +I denna **Aspose PDF‑handledning** demonstrerade vi ett rent, end‑to‑end‑arbetsflöde för **how to use Aspose** att **load PDF document C#**, konvertera den till **PDF/X‑4**‑standarden och **save the converted PDF**. Koden är fullt körbar, förklarar *varför* bakom varje steg och lyfter fram fallgropar du kan stöta på i verkliga projekt. + +Nu när du har grunderna kan du utöka lösningen—batch‑processa dussintals filer, bädda in anpassad metadata eller integrera konverteringen i ett webb‑API. Möjligheterna är öppna, och Aspose.Pdf ger dig verktygen för att snabbt komma dit. + +Har du fler frågor om PDF‑hantering med Aspose? Lämna en kommentar, utforska den officiella Aspose‑dokumentationen eller experimentera med koden ovan. Lycka till med konverteringen! + +{{< /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-creation/_index.md b/pdf/swedish/net/document-creation/_index.md index 25ca8065f..80da234d4 100644 --- a/pdf/swedish/net/document-creation/_index.md +++ b/pdf/swedish/net/document-creation/_index.md @@ -77,6 +77,12 @@ En kodhandledning för Aspose.PDF Net ### [Skapa PDF-dokument med Aspose.PDF – Lägg till sida, form och spara](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) Lär dig hur du skapar ett PDF-dokument, lägger till en sida och former samt sparar det med Aspose.PDF för .NET. +### [Skapa PDF-dokument med Aspose.PDF – Steg‑för‑steg‑guide](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +Lär dig hur du steg‑för‑steg skapar ett PDF‑dokument med Aspose.PDF för .NET. + +### [Skapa PDF-dokument med Aspose.PDF – Fullständig C#‑guide](./create-pdf-document-with-aspose-pdf-full-c-guide/) +Lär dig steg‑för‑steg hur du skapar PDF‑dokument med Aspose.PDF i C# med fullständiga kodexempel. + ## Ytterligare resurser - [Aspose.PDF för nätdokumentation](https://docs.aspose.com/pdf/net/) diff --git a/pdf/swedish/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/swedish/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..130240081 --- /dev/null +++ b/pdf/swedish/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-06 +description: Skapa PDF-dokument i C# med Aspose.PDF – lär dig hur du lägger till tomma + PDF‑sidor, textrutor, widgetar och sparar PDF snabbt. +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: sv +og_description: Skapa PDF-dokument i C# med Aspose.PDF. Den här guiden visar hur du + lägger till tomma PDF‑sidor, textrutor, widgets och hur du sparar PDF. +og_title: Skapa PDF-dokument med Aspose.PDF – Komplett C#-handledning +tags: +- pdf +- csharp +- aspose +- forms +title: Skapa PDF-dokument med Aspose.PDF – Fullständig C#-guide +url: /sv/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Skapa PDF-dokument med Aspose.PDF – Fullständig C#-guide + +Har du någonsin behövt **skapa pdf-dokument** från grunden i ett .NET‑projekt och undrat var du ska börja? Du är inte ensam; många utvecklare stöter på samma hinder när det första kravet lyder “generera en ifyllbar PDF med samma textruta på tre sidor.” Den goda nyheten? Med Aspose.PDF kan du snabbt skapa en professionellt utseende PDF med bara några få rader. + +I den här handledningen går vi igenom hela processen: från att initiera en ny PDF, **adding blank pages pdf**, infoga en **textbox**, replikera den med **widget**‑annotationer och slutligen **saving the PDF** till disk. I slutet har du en färdigfil med namnet *MultiWidgetField.pdf* och en gedigen förståelse för varför varje steg är viktigt. + +## Vad den här guiden täcker + +- Förutsättningar du behöver innan du skriver en enda rad kod. +- Steg‑för‑steg‑skapande av ett PDF-dokument med Aspose.PDF för .NET. +- Hur du lägger till tomma sidor, ett textrutefält och ytterligare widget‑instanser. +- Tips för att hantera vanliga fallgropar (t.ex. sidindexering, fältnamnskollisioner). +- Ett komplett, kopiera‑och‑klistra‑klart C#‑program som du kan köra idag. + +Inga externa dokumentationslänkar, inga “se API-dokumenten”-genvägar—allt du behöver finns här. + +## Förutsättningar + +Innan du dyker ner, se till att du har: + +1. **.NET 6.0** (eller någon senare version) installerad på din maskin. +2. En aktiv **Aspose.PDF for .NET**‑licens eller en tillfällig utvärderingsnyckel. +3. En utvecklingsmiljö som **Visual Studio 2022** eller **VS Code** med C#‑tillägget. + +Det är allt—inget mer krävs. + +## Steg 1: Initiera PDF-dokumentet och lägg till tomma sidor + +Det första du gör när du **create pdf document** programatiskt är att instansiera ett `Document`‑objekt. Tänk på det som att öppna en helt ny anteckningsbok. Sedan lägger du till de sidor du behöver; i vårt fall tre tomma sidor. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**Varför detta är viktigt:** Aspose.PDF behandlar sidor som en noll‑baserad samling internt, men dess publika API är 1‑baserat, så `Pages[1]` är den första sidan du just lagt till. Att lägga till sidor i förväg ger dig en yta att placera formulärfält på senare, och det är mycket billigare än att infoga sidor i farten efter att dokumentet har växt. + +> **Proffstips:** Om du bara behöver en enda sida kan du hoppa över loopen och anropa `pdfDocument.Pages.Add()` en gång. Att lägga till flera sidor i en loop gör koden skalbar. + +## Steg 2: Definiera ett TextBox‑formulärfält på den första sidan + +Nu när vi har tre tomma blad, låt oss placera en **textbox** på den första. Ett `TextBoxField` är ett formulärelement som slutanvändare kan skriva i när PDF‑filen öppnas i Acrobat Reader eller någon PDF‑visare som stödjer formulär. + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**Varför rektangelkoordinaterna?** Aspose.PDF använder punkter (1/72 tum). Rektangeln `(100, 700, 300, 730)` placerar textrutan ungefär halvvägs ner på sidan, 200 pt bred och 30 pt hög. Justera dessa siffror för att passa din layout. + +> **Vanlig fråga:** *Behöver jag sätta `Value`‑egenskapen?* +> Nej, den är valfri. Att lämna den tom visar ett tomt fält; att sätta ett standardvärde kan vägleda användaren. + +## Steg 3: Lägg till Widget‑annotationer för samma fält på sidorna 2 och 3 + +En **widget** är den visuella representationen av ett formulärfält på en specifik sida. Som standard visas ett fält bara på den sida där det skapades. För att återanvända samma textruta på andra sidor, fäster du ytterligare `WidgetAnnotation`‑objekt till fältets `Widgets`‑samling. + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**Varför widgets?** Utan dem skulle användaren bara se textrutan på sida 1, även om det underliggande fältet finns. Widgets låter dig dela ett enda logiskt fält över flera sidor, så att den inmatade texten visas överallt där fältet visas. + +> **Edge case:** Om du behöver textrutan på olika koordinater på varje sida, ändra helt enkelt `Rectangle`‑värdena för varje widget. + +## Steg 4: Registrera fältet i dokumentets formulärsamling + +Aspose.PDF har ett centralt register över alla formulärfält. Att lägga till fältet i `Form`‑samlingen gör det till en del av PDF:ens interaktiva formulärstruktur. + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +Det andra argumentet (`"Comment"`) är fältets **fully qualified name**. Det måste vara unikt i hela dokumentet; annars kastar Aspose ett undantag. + +## Steg 5: Spara den resulterande PDF‑filen – Så sparar du PDF + +Till sist sparar vi det minnesbaserade dokumentet till disk. Detta är delen **how to save pdf** i handledningen. + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**Varför ange en absolut sökväg?** Att använda en absolut sökväg undviker förvirring kring arbetskatalogen, särskilt när programmet körs från Visual Studios debugger. Om du föredrar en relativ sökväg, se bara till att mappen finns innan du anropar `Save`. + +### Förväntat resultat + +Öppna *MultiWidgetField.pdf* i Adobe Acrobat Reader. Du kommer att se samma textruta på sidor 1, 2 och 3. Skriv något i fältet på någon sida—​texten visas omedelbart på de andra sidorna eftersom de delar samma underliggande formulärfält. + +![Exempel på skapa PDF-dokument som visar en textruta på tre sidor](https://example.com/placeholder-image.png "Exempel på skapa PDF-dokument") + +*Bildtext: Exempel på skapa PDF-dokument som visar en textruta på tre sidor.* + +## Fullt, körklart exempel + +Nedan är det kompletta programmet som du kan kopiera in i ett nytt konsolprojekt (`dotnet new console`) och köra. Alla steg är redan i rätt ordning, och koden innehåller kommentarer för tydlighet. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +Kör programmet, navigera till `C:\Temp\`, och öppna den genererade PDF‑filen. Du kommer att se de tre identiska textrutorna redo för användarinmatning. + +## Vanliga variationer & edge‑cases + +| Scenario | What to Change | Why | +|----------|----------------|-----| +| **Olika textrutestor på varje sida** | Justera `Rectangle`‑värdena för varje `WidgetAnnotation`. | Gör att du kan anpassa fältet till olika layouter. | +| **Read‑only‑fält** | Sätt `commentField.ReadOnly = true;`. | Förhindrar att användare kan redigera innehållet efter första ifyllning. | +| **Multi‑line‑textruta** | Sätt `commentField.Multiline = true;` och öka rektangelns höjd. | Möjliggör längre kommentarer utan att behöva scrolla. | +| **Lägga till ett andra fält** | Skapa ett annat `TextBoxField` (eller vilket `FormField` som helst) och upprepa steg 2‑4 med ett nytt namn. | Du kan samla flera informationsbitar i samma PDF. | + +## Proffstips & fallgropar att undvika + +- **Page Indexing:** Kom ihåg att `pdfDocument.Pages[1]` är den första sidan, inte `[0]`. Att blanda 0‑baserade och 1‑baserade index leder till “Index out of range”-undantag. +- **Field Naming Collisions:** Två fält kan inte dela samma fully qualified name. Om du får ett fel om duplicerade namn, dubbelkolla strängen du skickar till `Form.Add`. +- **License vs. Evaluation:** Utvärderingsversionen lägger till ett vattenstämpel på varje sida. Distribuera en giltig licens för att ta bort den i produktion. +- **Performance:** Att lägga till hundratals sidor i en loop är okej, men om du behöver generera enorma PDF‑filer (tusentals sidor), överväg att använda + +{{< /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-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/swedish/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..57b7be3a8 --- /dev/null +++ b/pdf/swedish/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-03-06 +description: Skapa PDF‑dokument med Aspose.PDF i C#. Lär dig hur du lägger till en + sida i PDF, ritar en rektangel i PDF, lägger till en form i PDF och kontrollerar + rektangelns kanttjocklek – allt i en och samma handledning. +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: sv +og_description: Skapa PDF-dokument i C# med Aspose.PDF. Denna handledning visar hur + man lägger till en sida i PDF, ritar en rektangel i PDF, lägger till en form i PDF + och ställer in rektangelns kanttjocklek. +og_title: Skapa PDF-dokument med Aspose.PDF – Komplett guide +tags: +- Aspose.PDF +- C# +- PDF generation +title: Skapa PDF-dokument med Aspose.PDF – Steg‑för‑steg‑guide +url: /sv/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Skapa PDF-dokument med Aspose.PDF – Steg‑för‑steg‑guide + +Har du någonsin behövt **skapa PDF-dokument** programatiskt och inte vetat var du ska börja? Du är inte ensam—många utvecklare stöter på samma problem när deras appar måste generera fakturor, rapporter eller certifikat i farten. + +Den goda nyheten är att med Aspose.PDF för .NET kan du göra det på några få rader, och du kommer även att lära dig hur du **lägger till sida PDF**, **ritar rektangel PDF**, **lägger till form PDF**, och justerar **rektangelns kanttjocklek** samtidigt. Låt oss dyka ner. + +## Vad du kommer att bygga + +I slutet av den här guiden kommer du att ha en fullt fungerande C#-konsolapp som: + +1. **Skapar ett PDF-dokument** från grunden. +2. **Lägger till en PDF-sida** i dokumentet. +3. **Ritar en PDF-rektangel** på den sidan. +4. **Validerar** att rektangeln förblir inom sidans gränser (**lägger till form PDF**-steget). +5. Ställer in en anpassad **rektangelkanttjocklek**. +6. Sparar resultatet som `ShapeValidated.pdf`. + +Inga externa tjänster, ingen mystisk konfiguration—bara ren C# och Aspose.PDF. + +### Förutsättningar + +- .NET 6.0 eller senare (koden fungerar även med .NET Framework 4.6+). +- En referens till NuGet‑paketet `Aspose.Pdf`. Du kan lägga till det via: + +```bash +dotnet add package Aspose.Pdf +``` + +- En textredigerare eller IDE—Visual Studio, VS Code, Rider, vad du än föredrar. + +> **Proffstips:** Om du använder en företagsmaskin, se till att NuGet‑flödet inte är blockerat; annars får du ett felmeddelandet “Package not found”. + +--- + +## Skapa PDF-dokument – Initiera dokumentet + +Det allra första steget är att skapa ett `Document`‑objekt. Tänk på det som en tom duk där varje sida och form kommer att finnas. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +Varför behöver vi det här objektet? Det representerar hela PDF‑filen i minnet och ger oss åtkomst till `Pages`‑samlingen, metadata och säkerhetsinställningar. När du har dokumentet kan du börja stapla sidor, text, bilder och vektorgrafik. + +--- + +## Lägg till en sida i PDF‑en (add page pdf) + +En PDF utan sidor är i princip en tom fil—meningslös. Att lägga till en sida är enkelt, och du kan anpassa dess storlek om du vill. Här använder vi standardstorleken A4. + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +`Add()`‑metoden returnerar en ny `Page`‑instans som redan är en del av `Pages`‑samlingen, så du kan omedelbart börja rita på den. I verkliga scenarier kan du loopa över en datamängd och lägga till dussintals sidor; samma enradiga anrop fungerar för varje iteration. + +--- + +## Rita en rektangel (draw rectangle pdf) + +Nu till den visuella delen: en rektangel med en synlig kant. Det är här **draw rectangle pdf** kommer in i bilden. + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +Några saker att notera: + +- `Rect` använder punkter (1 pt ≈ 1/72 tum). Koordinaterna definierar nedre vänstra och övre högra hörnet, så du kan exakt kontrollera bredd och höjd. +- `BorderInfo` låter dig specificera vilka sidor som får en linje och hur tjock linjen är. Här applicerar vi en 2‑punkts linje på **alla** sidor, vilket ger rektangeln ett rent, enhetligt utseende. + +--- + +## Validera formplacering (add shape pdf) + +Innan vi lägger rektangeln på sidan är det klokt att verifiera att den får plats inom sidans utskrivningsområde. Aspose.PDF erbjuder en praktisk hjälpfunktion för detta. + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +Varför bry sig? Om du av misstag placerar en form delvis utanför skärmen kan PDF‑visaren klippa den, vilket ger en förvirrande användarupplevelse. Detta **add shape pdf**‑skydd säkerställer att du bara lägger till innehåll som blir helt synligt. + +--- + +## Spara PDF‑en (add page pdf) + +Till sist sparar vi dokumentet i minnet till disk. Du kan välja vilken plats du har skrivrättigheter för. + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +Efter att ha kört programmet, öppna `ShapeValidated.pdf`—du bör se en enda sida med en prydligt kantad rektangel centrerad ungefär i mitten. + +--- + +## Förväntat resultat + +När du öppnar den genererade PDF‑en kommer du att se: + +- En A4‑stor sida. +- En rektangel vars nedre vänstra hörn börjar vid (50 pt, 50 pt) och vars övre högra hörn slutar vid (600 pt, 800 pt). +- En **2‑punkts tjock** kant som omger rektangeln. + +Om konsolen skrev ut “PDF created successfully!” vet du att koden kördes utan att trigga gränskontrollen. + +![Diagram som visar hur man skapar PDF-dokument med Aspose.PDF](https://example.com/diagram-create-pdf.png "Skapa PDF-dokument – visuell översikt") + +*Bildens alt‑text innehåller huvudnyckelordet för att uppfylla SEO‑kraven.* + +--- + +## Vanliga frågor & edge‑cases + +### Vad händer om jag behöver en annan sidstorlek? + +Byt ut standardsidan mot en anpassad storlek: + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### Hur ändrar jag kantfärgen? + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### Kan jag lägga till flera former på samma sida? + +Absolut. Upprepa bara **add shape pdf**‑blocket med en ny `RectangleShape` (eller andra `Shape`‑subklasser) och justera `Rect`‑koordinaterna därefter. + +### Vad händer om rektangeln överskrider sidans gränser? + +`IsShapeWithinBounds`‑anropet kommer att returnera `false`. I produktionskod kanske du vill automatiskt ändra storlek på formen: + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +--- + +## Sammanfattning + +Vi har gått igenom hela livscykeln för **att skapa ett PDF-dokument** med Aspose.PDF: + +1. Initiera `Document`. +2. **Lägg till en PDF-sida** med `Pages.Add()`. +3. **Rita en PDF-rektangel** via `RectangleShape`. +4. **Lägg till form PDF** endast efter att ha bekräftat att den förblir inom sidan. +5. Styr **rektangelkanttjockleken** med `BorderInfo`. +6. Spara filen. + +Det är hela arbetsflödet på mindre än 60 kodrader. + +--- + +## Vad blir nästa steg? + +- **Lägg till text**: Använd `TextFragment` för att placera titlar eller etiketter i rektangeln. +- **Infoga bilder**: `Image`‑klassen låter dig bädda in logotyper eller diagram. +- **Skapa tabeller**: Perfekt för fakturor eller datarapporter. +- **Applicera säkerhet**: Lösenordsskydda PDF‑en om den innehåller känslig data. + +Var och en av dessa ämnen bygger på grunderna som täcks här, så du är väl rustad att utforska mer avancerade PDF‑genereringsscenarier. + +### Fortsätt experimentera + +Stanna inte vid en enda rektangel—lek med olika former, färger och linjestilar. Aspose.PDF‑API:et är omfattande, och ju mer du experimenterar, desto bekvämare blir du. Om du stöter på problem är den officiella Aspose‑dokumentationen en bra följeslagare, men kom ihåg att koden du ser ovan är en komplett, kopiera‑och‑klistra‑klar lösning som du kan köra idag. + +Lycka till med kodandet, och må dina PDF‑filer alltid renderas exakt som du föreställt dig! + +{{< /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 d2766426b..ef40c17fa 100644 --- a/pdf/swedish/net/document-manipulation/_index.md +++ b/pdf/swedish/net/document-manipulation/_index.md @@ -311,6 +311,9 @@ Lär dig hur du delar upp flersidiga PDF-filer och skapar nya PDF-filer med Aspo ### [Ultimat guide till PDF-manipulation med Aspose.PDF .NET: Ladda, spara och ersätt text effektivt](./master-pdf-manipulation-aspose-pdf-net/) Lär dig hur du bemästrar PDF-manipulation med Aspose.PDF för .NET. Den här guiden behandlar hur man laddar, sparar och ersätter text i PDF-filer, perfekt för utvecklare som söker effektivitet. +### [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. + ## Ytterligare resurser - [Aspose.PDF för nätdokumentation](https://docs.aspose.com/pdf/net/) diff --git a/pdf/swedish/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/swedish/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..fbcfae08a --- /dev/null +++ b/pdf/swedish/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,250 @@ +--- +category: general +date: 2026-03-06 +description: Lär dig hur du redigerar PDF med Aspose PDF i C#. Denna steg‑för‑steg‑guide + visar hur du laddar ett PDF‑dokument i C#, får åtkomst till den första PDF‑sidan + och tar bort en bild från PDF‑filen. +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: sv +og_description: Hur man redigerar PDF snabbt med Aspose PDF i C#. Ladda PDF-dokumentet, + få åtkomst till den första PDF-sidan och ta bort en bild från PDF med bara några + rader kod. +og_title: Hur man maskar PDF i C# – Aspose PDF-handledning +tags: +- Aspose PDF +- C# +- PDF Redaction +title: Hur man maskerar PDF i C# med Aspose PDF – Komplett guide +url: /sv/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Så redigerar du PDF i C# med Aspose PDF – Komplett guide + +Har du någonsin undrat **hur man redigerar PDF**‑filer utan att svettas? Kanske har du fått ett avtal som döljer en konfidentiell logotyp, eller en rapport som fortfarande visar en platshållarbild du behöver radera. I sådana stunder vill du ha ett pålitligt, programmerbart sätt att ta bort det innehållet—utan manuell Acrobat‑trolleri. + +I den här handledningen går vi igenom en kortfattad, helhetslösning som **loads PDF document C#**, **access first PDF page** och sedan **remove image from PDF** med det kraftfulla **use Aspose PDF**‑biblioteket. När du är klar har du en helt redigerad PDF klar för distribution, och du förstår varför varje kodrad är viktig. + +> **Pro tip:** Aspose PDF fungerar med .NET Framework 4.6+ och .NET Core 3.1+, så du är täckt oavsett om du använder Windows, Linux eller macOS. + +--- + +![how to redact pdf example](redact-pdf-before-after.png){alt="exempel på hur man redigerar pdf"} + +## Vad du behöver + +- **Aspose.PDF for .NET** (senaste NuGet‑paketet) +- En **C#‑utvecklingsmiljö** (Visual Studio, Rider eller VS Code) +- Ett exempel‑PDF som innehåller en bildresurs du vill radera (vi kallar det `Sensitive.pdf`) + +Inga extra tredjepartsverktyg, ingen OCR, bara ren kod. + +--- + +## Steg 1: Load PDF Document C# – Första steget + +Innan du kan redigera något måste du ladda in filen i minnet. Klassen `Document` är startpunkten för varje Aspose PDF‑operation. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**Varför detta är viktigt:** +`Document` analyserar hela PDF‑strukturen och bygger en objektmodell som låter dig manipulera sidor, resurser och annotationer. Om filen inte kan läsas in (fel sökväg, korrupt PDF) kastas ett undantag omedelbart—så du tidigt vet att något är fel. + +### Vanligt fallgropp + +> *“Jag får ett `FileNotFoundException` även om filen finns.”* +> Se till att sökvägen är absolut eller att ditt projekts arbetskatalog matchar platsen för `Sensitive.pdf`. Att använda `Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")` kan hjälpa dig undvika problem med relativa sökvägar. + +--- + +## Steg 2: Access First PDF Page – Där bilden finns + +Bilder lagras som resurser per sida. I många enkla PDF‑filer är den första sidan boven, så låt oss hämta den. + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**Varför detta är viktigt:** +Aspose PDF använder ett 1‑baserat index för sidor, vilket är lite ovanligt jämfört med de flesta .NET‑samlingar. Att komma åt fel sida kan innebära att du redigerar fel innehåll—eller ännu värre, att den känsliga bilden lämnas orörd. + +### Edge‑Case‑övervägning + +Om ditt dokument saknar sidor (en tom PDF) kommer ett försök att använda `pdfDocument.Pages[1]` att kasta ett `IndexOutOfRangeException`. En snabb kontroll kan rädda dig: + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +--- + +## Steg 3: Remove Image from PDF – Redigera resursen + +Aspose PDF låter dig ta bort en resurs efter namn. De flesta bilder heter `Im1`, `Im2` osv., men du kan inspektera `firstPage.Resources.Images` för att bekräfta. + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**Varför detta är viktigt:** +`RedactResource` tar bort bilden *och* alla referenser till den på sidan, vilket säkerställer att det visuella hålet fylls med ett tomt område istället för en trasig länk. Det är ett rent, PDF‑standardiserat sätt att radera innehåll. + +### Så hittar du rätt bildnamn + +Om du inte är säker på om bilden heter `"Im1"`: + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +Kör detta kodsnutt, kontrollera konsolutdata och ersätt `"Im1"` med den faktiska nyckeln du ser. + +--- + +## Steg 4: Save the Redacted PDF – Slutför jobbet + +Nu när den oönskade bilden är borta skriver du tillbaka ändringarna till disk. + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**Varför detta är viktigt:** +Att spara till en **ny** fil behåller originalet intakt—en säkerhetsåtgärd om du behöver återgå. Om du måste skriva över, pekar du bara `Save`‑metoden på den ursprungliga sökvägen, men var medveten om att operationen är oåterkallelig. + +### Verifiera resultatet + +Öppna `Redacted.pdf` i någon PDF‑visare. Bildplatsen bör vara tom, och resten av dokumentet bör se identiskt ut som originalet. Om sidlayouten verkar förskjuten, dubbelkolla att du bara tog bort den avsedda resursen och inte ett delat XObject. + +--- + +## Fullt fungerande exempel + +Sätter ihop allt, här är det kompletta, körklara programmet: + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**Förväntad output** (i konsolen): + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +När du öppnar `Redacted.pdf` kommer bilden som tidigare var `Im1` att vara borta, vilket lämnar en ren sida. + +--- + +## Vanliga frågor + +### Fungerar detta med krypterade PDF‑filer? + +Om käll‑PDF‑filen är lösenordsskyddad, skicka lösenordet till `Document`‑konstruktorn: + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### Vad händer om bilden visas på flera sidor? + +Loopa igenom varje sida och anropa `RedactResource` på samma bildnamn (eller upptäck namnet per sida). Exempel: + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### Kan jag redigera text på samma sätt? + +Ja—använd `page.Contents.RedactText("confidential")` eller använd `Redactor`‑klassen för mer avancerade mönster. Det är en hel handledning i sig, men principen speglar vad vi gjorde för bilder. + +--- + +## Sammanfattning – Vad vi uppnådde + +Vi har svarat på **how to redact PDF**‑filer programatiskt genom att: + +1. **Loading PDF document C#** med Aspose PDF. +2. **Accessing first PDF page** för att hitta målresursen. +3. **Removing image from PDF** via `RedactResource`. +4. **Saving** den rensade versionen säkert. + +Denna metod är snabb, repeterbar och fungerar i batch‑jobb—perfekt för efterlevnads‑pipelines eller automatiserad rapportgenerering. + +Om du är redo att gå vidare, överväg att utforska: + +- **Batch redaction** över en hel mapp med PDF‑filer. +- **Redacting text** med regex‑mönster via `Redactor`. +- **Embedding a watermark** efter redigering för att signalera “sanitized”. + +Ge det ett försök, justera logiken för bildnamn för dina egna filer, + +{{< /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/performance-optimization/_index.md b/pdf/swedish/net/performance-optimization/_index.md index c51ec60fd..dca750678 100644 --- a/pdf/swedish/net/performance-optimization/_index.md +++ b/pdf/swedish/net/performance-optimization/_index.md @@ -50,6 +50,9 @@ Bemästra konsten att konvertera SVG-filer till PDF-filer med precision och effe ### [Avbädda teckensnitt i PDF-filer med Aspose.PDF för .NET: Minska filstorleken och förbättra prestandan](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) Lär dig hur du tar bort inbäddade teckensnitt från dina PDF-filer med Aspose.PDF för .NET. Optimera PDF-prestanda, minska filstorleken och förbättra laddningstiderna med den här steg-för-steg-guiden. +### [Hur du komprimerar PDF med Aspose.PDF – snabbguide](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) +Lär dig snabbt hur du komprimerar PDF-filer med Aspose.PDF för .NET för att minska filstorlek och förbättra prestanda. + ## Ytterligare resurser - [Aspose.PDF för nätdokumentation](https://docs.aspose.com/pdf/net/) diff --git a/pdf/swedish/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/swedish/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..97514ec28 --- /dev/null +++ b/pdf/swedish/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,202 @@ +--- +category: general +date: 2026-03-06 +description: Lär dig hur du komprimerar PDF omedelbart med Aspose.PDF. Den här guiden + visar hur du minskar PDF-filens storlek med förlustfri PDF-komprimering. +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: sv +og_description: Hur komprimerar du PDF med Aspose.Pdf? Följ den här steg‑för‑steg‑handledningen + för att minska PDF‑filens storlek, uppnå förlustfri PDF‑komprimering och spara optimerade + PDF‑filer. +og_title: hur man komprimerar PDF med Aspose.Pdf – snabb guide +tags: +- pdf +- aspnet +- csharp +title: hur man komprimerar pdf med Aspose.Pdf – snabbguide +url: /sv/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# hur man komprimerar pdf med Aspose.Pdf – snabbguide + +Har du någonsin undrat **hur man komprimerar pdf** filer utan att de blir en suddig röra? Du är inte ensam. De flesta utvecklare stöter på problem när de behöver **reducera pdf-filens storlek** för e‑postbilagor, webbladdningar eller lagringsgränser, men de är rädda för att förlora bildkvalitet. + +I den här handledningen går vi igenom ett komplett, färdigt att köra exempel som visar dig exakt **hur man komprimerar pdf** med Aspose.Pdf:s inbyggda optimizer. I slutet kommer du att veta hur du **minskar pdf-filens storlek**, behåller dina bilder skarpa med **förlustfri pdf‑komprimering**, och slutligen **sparar optimerad pdf**‑filer som fungerar bra med alla visare. + +## Vad du kommer att lära dig + +- Läs in en tung PDF (t.ex. en som är fylld med högupplösta bilder) i minnet. +- Applicera Aspose.Pdf:s optimizer med dess standardinställningar för förlustfri komprimering. +- Spara resultatet som en ny, mindre fil. +- Tips för att finjustera komprimeringen om du behöver en ännu tätare minskning. + +Inga externa verktyg, inga mystiska kommandorads‑trick – bara ren C#‑kod och tydliga förklaringar. + +## Förutsättningar + +| Krav | Varför det är viktigt | +|-------------|----------------| +| .NET 6.0 or later (or .NET Framework 4.6+) | Aspose.Pdf stöder båda; nyare runtime‑miljöer ger bättre prestanda. | +| Aspose.Pdf for .NET NuGet package (`Aspose.Pdf`) | `Document`‑klassen finns här. | +| A PDF with large images (e.g., `HeavyImages.pdf`) | Ger dig något konkret att minska. | +| Visual Studio, Rider, or any C# editor you prefer | Bekvämlighet är nyckeln – välj det som känns naturligt. | + +> **Pro tip:** Om du kör i en CI/CD‑pipeline, lägg till NuGet‑referensen i din `.csproj` så att bygget aldrig glömmer den. + +```xml + + + +``` + +## Steg 1: Läs in PDF‑filen du vill komprimera + +Först behöver vi ett `Document`‑objekt som pekar på källfilen. Tänk på det som att öppna en bok innan du börjar redigera kapitlen. + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*Varför detta är viktigt:* Att läsa in filen ger Aspose.Pdf möjlighet att läsa alla inbäddade resurser (bilder, teckensnitt osv.). Utan detta steg finns det inget att **minska pdf-filens storlek**. + +## Steg 2: Tillämpa förlustfri PDF‑komprimering + +Aspose.Pdf levereras med en `Optimize`‑metod som som standard kör en **förlustfri pdf‑komprimering**‑rutin. Den tar bort överflödiga objekt, komprimerar om bilder med samma visuella kvalitet och tar bort oanvända teckensnitt. + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*Varför detta är viktigt:* Standard‑optimizern är designad för att **minska pdf-filens storlek** samtidigt som varje pixel bevaras. Om du senare bestämmer dig för att du kan tolerera en liten kvalitetsförlust, låter den kommenterade `OptimizationOptions` dig byta några extra kilobyte mot hastighet. + +## Steg 3: Spara den optimerade PDF‑filen + +Nu när dokumentet är smalare skriver vi ut det till en ny fil. Att behålla originalet orört är en god vana, särskilt när du testar olika inställningar. + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +Efter sparandet, jämför filstorlekarna: + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +Du bör se ett märkbart fall – ofta **30‑70 %** beroende på hur många högupplösta bilder som fanns i källfilen. + +![hur man komprimerar pdf illustration](image.png "hur man komprimerar pdf") + +*Bildtext:* hur man komprimerar pdf – före och efter optimering + +## Avancerat: Finjustera komprimering för specifika scenarier + +Även om standard‑optimizern är bra för de flesta fall, ibland behöver du **minska pdf-filens storlek** ännu mer: + +| Scenario | Inställning att justera | Effekt | +|----------|-------------------|--------| +| PDFs with many raster images | `CompressImages = true` + lower `ImageQuality` (e.g., 70) | Minskar bildens byteantal, liten visuell förlust. | +| PDFs containing duplicate fonts | `RemoveUnusedObjects = true` | Tar bort teckensnitt som inte refereras. | +| PDFs with large metadata | `RemoveMetadata = true` | Tar bort dolda XML-/metadata‑block. | + +Du kan kombinera dessa i ett `OptimizationOptions`‑objekt och skicka det till `pdfDoc.Optimize(options)`. + +## Vanliga frågor & specialfall + +**Vad händer om PDF‑filen redan är optimerad?** +Aspose.Pdf kommer fortfarande att skanna dokumentet, men storleksförändringen blir minimal. Att köra optimizern på en redan smal fil är säkert; den kommer inte att förstöra någonting. + +**Kan jag komprimera krypterade PDF‑filer?** +Ja, men du måste ange lösenordet innan du anropar `Optimize`. Exempel: + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**Vad händer med PDF‑filer med vektorgrafik?** +Vektorobjekt är redan lätta, så optimizern fokuserar på rasterbilder och metadata. Förvänta dig måttliga förbättringar för rena vektor‑filer. + +## Fullständigt, körbart exempel + +Nedan är en fristående konsolapp som du kan kopiera och klistra in i ett nytt `.csproj`. Den demonstrerar allt som diskuterats – från inläsning till verifiering. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +Kör programmet, öppna `Optimized.pdf` i någon visare, och du kommer att se samma sidlayout, samma skarpa bilder, men en smalare fil. Det är magin med **förlustfri pdf‑komprimering**. + +## Slutsats + +Vi har gått igenom **hur man komprimerar pdf**‑filer med Aspose.Pdf:s inbyggda optimizer, demonstrerat ett praktiskt **reducera pdf-filens storlek**‑arbetsflöde, och förklarat de underliggande anledningarna till varje steg. Genom att följa det trestegs‑mönstret – läs in, optimera, spara – kan du **minska pdf-filens storlek** i farten, behålla dina bilder intakta med **förlustfri pdf‑komprimering**, och med säkerhet **spara optimerad pdf**‑filer för vidare konsumtion. + +Redo för nästa utmaning? Prova att kedja denna optimizer med ett batch‑skript för att bearbeta en hel mapp, eller experimentera med de valfria `OptimizationOptions` för att pressa ut de sista kilobyten. Samma principer gäller oavsett om du arbetar med ett skrivbordsverktyg, ett webb‑API eller ett server‑side batch‑jobb. + +Har du fler frågor om PDF‑hantering, Aspose.Pdf‑egenskaper eller .NET‑fil‑I/O? Lämna en kommentar nedan, så fortsätter vi samtalet. Lycka till med komprimeringen! + +{{< /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/programming-with-security-and-signatures/_index.md b/pdf/swedish/net/programming-with-security-and-signatures/_index.md index 4fb1ddeb5..179e4d4e3 100644 --- a/pdf/swedish/net/programming-with-security-and-signatures/_index.md +++ b/pdf/swedish/net/programming-with-security-and-signatures/_index.md @@ -24,16 +24,18 @@ Handledningen ger dig en detaljerad översikt över metoder och tekniker för at | [Ändra lösenord i PDF-fil](./change-password/) | Lär dig att enkelt ändra PDF-lösenord med Aspose.PDF för .NET. Vår steg-för-steg-guide guidar dig genom processen på ett säkert sätt. | | [Dekryptera PDF-filen](./decrypt/) | Lär dig hur du säkert dekrypterar PDF-filer med Aspose.PDF för .NET. Få steg-för-steg-vägledning för att förbättra dina dokumenthanteringsfärdigheter. | | [Bestäm rätt lösenord i PDF-filen](./determine-correct-password/) | Lås upp PDF-filer med rätt lösenord med Aspose.PDF för .NET. Lär dig hur du enkelt identifierar rätt lösenord. | -| [Digital inloggning i PDF-fil](./digitally-sign/) Lär dig hur du signerar PDF-filer digitalt med Aspose.PDF för .NET. Steg-för-steg-guide för att säkerställa att dina dokument är säkra och autentiska. | +| [Digital inloggning i PDF-fil](./digitally-sign/) Lär dig hur du signerar PDF-filer digitalt med Aspose.PDF för .NET. Steg-för-steg-guide för att säkerställa att dina dokument är säkra och autentiska. | | [Digital signering med tidsstämpel i PDF-fil](./digitally-sign-with-time-stamp/) | Lär dig hur du digitalt signerar en PDF med en tidsstämpel med Aspose.PDF för .NET. Den här steg-för-steg-guiden täcker förutsättningar, certifikatkonfiguration, tidsstämpling och mer. | | [Kryptera PDF-filen](./encrypt/) | Lär dig hur du krypterar dina PDF-filer utan problem med Aspose.PDF för .NET. Skydda känslig information med vår enkla steg-för-steg-guide. | | [Extraherar bild](./extracting-image/) | Lär dig enkelt hur du extraherar bilder från PDF-filer med Aspose.PDF för .NET. Följ vår steg-för-steg-guide för sömlös bildextrahering. | | [Extrahera signaturinformation](./extract-signature-info/) | Lär dig hur du extraherar digitala signaturer och certifikatinformation från PDF-dokument med Aspose.PDF för .NET. En komplett steg-för-steg-guide för C#-utvecklare. | -| [Är lösenordsskyddad](./is-password-protected/) Lär dig hur du kontrollerar om en PDF är lösenordsskyddad med Aspose.PDF för .NET i den här omfattande steg-för-steg-guiden. | +| [Är lösenordsskyddad](./is-password-protected/) Lär dig hur du kontrollerar om en PDF är lösenordsskyddad med Aspose.PDF för .NET i den här omfattande steg-för-steg-guiden. | | [Ange behörigheter i PDF-fil](./set-privileges/) | Lär dig hur du ställer in PDF-behörigheter med Aspose.PDF för .NET med den här steg-för-steg-guiden. Skydda dina dokument effektivt. | | [Signera med smartkort med PDF-filsignatur](./sign-with-smart-card-using-pdf-file-signature/) | Lär dig hur du signerar PDF-filer med ett smartkort med Aspose.PDF för .NET. Följ den här steg-för-steg-guiden för säkra digitala signaturer. | | [Signera med smartkort med hjälp av signaturfältet](./sign-with-smart-card-using-signature-field/) | Lär dig hur du signerar PDF-filer säkert med ett smartkort med Aspose.PDF för .NET. Följ vår steg-för-steg-guide för enkel implementering. | | [Kontrollera PDF-signaturer i C# – Så läser du signerade PDF-filer](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) | Lär dig hur du läser och verifierar signerade PDF-filer med Aspose.PDF för .NET i C#. | +| [Hur du verifierar signatur i PDF med C# – Komplett Aspose-guide](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) | Lär dig steg-för-steg hur du verifierar PDF‑signaturer i C# med Aspose.PDF för .NET. | +| [Lägg till digital signatur i PDF med C# – Komplett steg‑för‑steg‑guide](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) | Lär dig hur du lägger till en digital signatur i PDF med C# och Aspose.PDF för .NET. En komplett steg‑för‑steg‑guide. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/swedish/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/swedish/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..d780389f2 --- /dev/null +++ b/pdf/swedish/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-03-06 +description: Lägg till digital signatur i PDF med Aspose.PDF. Lär dig att skapa en + PKCS7‑detacherad signatur och signera PDF med PFX med en anpassad återuppringning. +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: sv +og_description: Lägg till digital signatur i PDF snabbt. Denna guide visar hur du + skapar en PKCS7-fristående signatur och signerar PDF med PFX i C#. +og_title: Lägg till digital signatur i PDF med C# – Fullständig programmeringshandledning +tags: +- Aspose.PDF +- C# +- Digital Signature +title: Lägg till digital signatur i PDF med C# – Komplett steg‑för‑steg‑guide +url: /sv/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Lägg till digital signatur PDF – Komplett steg‑för‑steg‑guide + +Har du någonsin behövt **add digital signature pdf**‑filer men inte vet var du ska börja? Du är inte ensam; många utvecklare stöter på samma problem när pappersarbetet kräver en juridiskt bindande signatur och kodbasen bara vet hur man genererar vanliga PDF‑filer. + +I den här handledningen går vi igenom en praktisk lösning som låter dig **add digital signature pdf**‑dokument med Aspose.PDF för .NET, skapa en PKCS#7‑detacherad signatur och signera PDF‑filen med ett PFX‑certifikat – allt i ren C#. I slutet har du ett färdigt kodexempel, förstår “varför” bakom varje anrop och vet hur du anpassar metoden för specialfall. + +## Vad du kommer att lära dig + +- Hur du laddar en osignerad PDF och förbereder den för signering. +- Mekanismerna bakom en **create pkcs7 detached signature** och varför du kan föredra en detached‑signatur framför en inbäddad. +- De exakta stegen för att **sign pdf using pfx** med en anpassad återuppringning, vilket ger dig full kontroll över den kryptografiska processen. +- Tips för att felsöka vanliga fallgropar (saknat certifikat, fel hash‑algoritm, etc.). + +### Förutsättningar + +| Krav | Orsak | +|------|-------| +| .NET 6.0 eller senare | Moderna språkfunktioner och bättre minneshantering. | +| Aspose.PDF för .NET (NuGet‑paket) | Tillhandahåller `PdfFileSignature`, `PKCS7Detached` och andra PDF‑verktyg. | +| En giltig PFX‑fil (`.pfx`) med privat nyckel | Krävs för steget **sign pdf using pfx**. | +| Grundläggande C#‑kunskaper | Koden är enkel, men förståelse för `using`‑satser hjälper. | + +> **Pro tip:** Håll ditt PFX‑lösenord utanför källkodskontrollen – använd miljövariabler eller Azure Key Vault i produktion. + +--- + +## Hur du lägger till digital signatur PDF med Aspose.PDF + +Nedan delar vi upp processen i fem lättsmälta steg. Varje steg innehåller ett kodexempel, en förklaring till *varför* det är viktigt, och en snabb kontroll. + +![Skärmdump av signerad PDF i en visare, visar ett synligt signaturfält](/images/add-digital-signature-pdf.png "exempel på add digital signature pdf") + +### Steg 1 – Ladda det osignerade PDF‑dokumentet + +Först behöver vi ett `Document`‑objekt som representerar den PDF du vill signera. Att använda `using var` säkerställer att filhandtaget frigörs automatiskt. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**Varför?** +Aspose behandlar en PDF som ett objekt‑graf; genom att ladda den får du åtkomst till sidor, annotationer och den interna byte‑strömmen som senare kommer att hash‑as för signaturen. + +### Steg 2 – Initiera PdfFileSignature‑hjälparen + +`PdfFileSignature` är klassen som faktiskt applicerar det kryptografiska paketet. Den fungerar hand‑i‑hand med `PKCS7Detached`. + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**Varför?** +Genom att separera signatören från dokumentet kan du återanvända samma `Document`‑instans för andra operationer (t.ex. lägga till vattenstämplar) innan signaturen slutförs. + +### Steg 3 – Skapa PKCS#7 Detached Signature (Create PKCS7 Detached Signature) + +En **PKCS#7 detached signature** lagrar endast hash‑värdet av PDF‑filen, inte själva PDF‑filen. Detta är idealiskt för stora dokument eller när du måste behålla originalfilen oförändrad. + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**Varför en anpassad återuppringning?** +Ibland finns signeringsnyckeln i ett HSM eller Azure Key Vault, och du kan inte extrahera den privata nyckeln direkt. Genom att tillhandahålla `CustomSignHash` överlämnar du hash‑värdet till den tjänst som har nyckeln, vilket håller det privata materialet säkert. + +**Vad händer om du inte behöver en anpassad återuppringning?** +Du kan utelämna `CustomSignHash`; Aspose kommer då automatiskt att använda den privata nyckeln i PFX‑filen. Den anpassade vägen är dock mer flexibel och följer efterlevnadskrav. + +### Steg 4 – Applicera signaturen på en specifik sida (Sign PDF Using PFX) + +Nu placerar vi faktiskt ett synligt signaturfält på sidan. Rektangeln definierar platsen och storleken (i punkter). + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**Varför specificera en rektangel?** +En synlig signatur hjälper slutanvändare att se att dokumentet är signerat. Om du sätter `isVisible` till `false` blir signaturen osynlig – fortfarande giltig, men svårare att upptäcka. + +**Edge case:** Om PDF‑filen saknar sidor (tom fil) kastas `ArgumentOutOfRangeException`. Verifiera alltid att `pdfDocument.Pages.Count > 0` innan du signerar. + +### Steg 5 – Spara den signerade PDF‑filen + +Slutligen sparar du den signerade dokumentet till disk. Du kan också strömma det direkt till ett svar i ASP.NET Core. + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**Verifieringstips:** Öppna den resulterande filen i Adobe Acrobat Reader. Signaturpanelen bör visa en grön bock (förutsatt att certifikatet är betrott på maskinen). + +--- + +## Komplett fungerande exempel + +När vi sätter ihop allt, här är ett fristående konsolprogram som du kan kopiera‑klistra in och köra (efter att ha justerat sökvägar och lösenord). + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**Förväntad output:** Konsolen skriver ut “✅ PDF signed successfully!” och filen `CustomSigned.pdf` visas i samma mapp. När den öppnas ser du en signaturwidget på koordinaterna (100,100)‑(300,200). + +## Vanliga frågor & edge cases + +### Vad händer om min PFX är skyddad med ett smartkort? + +Använd `CustomSignHash`‑delegaten för att vidarebefordra hash‑värdet till smart‑card‑drivrutinen. Drivrutinen returnerar signaturbyten, och Aspose bäddar in dem utan att någonsin exponera den privata nyckeln. + +### Kan jag signera flera sidor samtidigt? + +Ja. Anropa `pdfSigner.Sign` i en loop, justera `pageNumber` och eventuellt rektangeln för varje sida. Kom ihåg att varje anrop lägger till ett separat signaturobjekt; vissa visare kan lista dem individuellt. + +### Hur ändrar jag hash‑algoritmen? + +`PKCS7Detached` standardinställning är SHA‑256, men du kan sätta `HashAlgorithm`‑egenskapen: + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +Se till att din signeringsleverantör stödjer den valda algoritmen. + +### Vad händer om certifikatkedjan inte är betrodd på klientmaskinen? + +Inkludera hela kedjan i PFX‑filen, eller distribuera rotcertifikatet till slutanvändarens betrodda lagring. Annars kommer Acrobat att rapportera “Signature is unknown”. + +### Är en detached‑signatur kompatibel med PDF/A‑3? + +PDF/A‑3 kräver inbäddade signaturer, så en detached PKCS#7 kanske inte är kompatibel. I så fall kan du ta bort `CustomSignHash`‑delegaten och låta Aspose hantera signeringen internt, vilket skapar en inbäddad signatur. + +## Bästa praxis för produktion + +1. **Aldrig hårdkoda lösenord.** Hämta dem från miljövariabler eller en hemlighets‑hanterare. +2. **Validera PDF‑filen innan signering.** Korrupta filer orsakar `PdfFileSignatureException`. +3. **Logga hash‑algoritmen och certifikatets thumbprint** för revisionsspår. +4. **Testa med flera PDF‑visare** (Adobe Reader, Foxit, Chrome) för att säkerställa att signaturen visas som avsett. +5. **Överväg tidsstämpling** genom att lägga till en TSA‑förfrågan (Time‑Stamp Authority), vilket ytterligare stärker signaturens juridiska status. + +## Slutsats + +Vi har just visat dig hur du **add digital signature pdf**‑filer med Aspose.PDF, skapar en **PKCS#7 detached signature** och **sign pdf using pfx** med en anpassad återuppringning. Det kompletta exemplet körs direkt, och förklaringarna ger dig förtroendet att justera processen för HSM‑enheter, tidsstämpel‑tjänster eller PDF/A‑efterlevnad. + +Nästa steg kan vara att utforska **signing multiple documents in batch**, integrera **Azure Key Vault** för säker nyckellagring, eller lägga till **visual customization** till signaturens utseende. Varje ämne bygger direkt på den grund som lagts här. + +Om du har följt stegen har du nu en solid, citeringsvärd lösning som du kan dela med kollegor – eller till och med referera i ett AI‑drivet assistentsvar. Lycka till med signeringen, och tveka inte att lämna en kommentar om något inte är kristallklart! + +{{< /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/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/swedish/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..8db33c6cd --- /dev/null +++ b/pdf/swedish/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,199 @@ +--- +category: general +date: 2026-03-06 +description: Lär dig hur du verifierar signatur i en PDF med Aspose PDF i C#. Steg‑för‑steg + PDF‑signaturverifiering, validera PDF‑signatur och hantera komprometterade signaturer. +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: sv +og_description: Hur man verifierar signatur i en PDF med Aspose PDF. Följ den här + guiden för att utföra PDF‑signaturverifiering, validera PDF‑signatur och upptäcka + komprometterade signaturer i C#. +og_title: Hur man verifierar signatur i PDF med C# – Komplett Aspose‑guide +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: Hur man verifierar signatur i PDF med C# – Komplett Aspose‑guide +url: /sv/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hur man verifierar signatur i PDF med C# – Komplett Aspose‑guide + +Har du någonsin funderat på **hur man verifierar signatur** i en PDF utan att dra i håret? Du är inte ensam. Många utvecklare fastnar när de behöver **pdf signature verification** för efterlevnad eller revisionsändamål, och den vanliga “lita bara på biblioteket”-metoden kan gå fel. + +I den här handledningen går vi igenom en praktisk, end‑to‑end‑lösning som inte bara **validate pdf signature** utan också talar om för dig om signaturen har manipulerats. Vi använder **Aspose PDF**‑biblioteket, vilket betyder att koden fungerar på .NET 6+, .NET Framework 4.6+ och även .NET Core. När du är klar har du ett färdigt kodexempel som du kan klistra in i vilket C#‑projekt som helst. + +## Vad du behöver + +- **Aspose.Pdf**‑NuGet‑paket (senaste versionen vid skrivtillfället – 23.12). +- .NET‑utvecklingsmiljö (Visual Studio, Rider eller VS Code). +- En signerad PDF‑fil (vi kallar den `Signed.pdf`). +- Grundläggande kunskaper i C# – inget avancerat, bara vanliga `using`‑satser och `Console`‑I/O. + +Det är allt. Inga extra tjänster, inga kryptiska konfigurationsfiler. Är du redo? Då kör vi. + +![hur man verifierar signaturdiagram](image.png "hur man verifierar signatur") + +## Steg 1: Ställ in ditt projekt för PDF‑signaturverifiering + +Innan du kan anropa någon Aspose‑API måste du referera biblioteket. Öppna din terminal eller Package Manager Console och kör: + +```bash +dotnet add package Aspose.Pdf +``` + +Eller, om du föredrar UI‑metoden, sök efter **Aspose.Pdf** i NuGet Package Manager och installera det. Detta steg är kritiskt eftersom du utan **aspose pdf signature**‑assembly inte kan komma åt `PdfFileSignature`‑klassen senare. + +> **Proffstips:** Sikta på .NET 6 eller högre för bästa prestanda och för att undvika varningar om äldre kompatibilitet. + +## Steg 2: Ladda PDF‑dokumentet + +Nu när paketet är installerat kan vi ladda PDF‑filen vi vill kontrollera. Klassen `Document` representerar hela filen i minnet. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**Varför detta är viktigt:** När dokumentet laddas får vi tillgång till dess interna strukturer, inklusive signaturfälten. Om filen saknas eller är korrupt kastar `Document` ett undantag, vilket du kan fånga för en mer smidig användarupplevelse. + +## Steg 3: Skapa Aspose‑PdfFileSignature‑objektet + +Med dokumentet i handen är nästa steg att instansiera `PdfFileSignature`. Denna fasadklass vet hur man läser, verifierar och manipulerar digitala signaturer som är inbäddade i PDF‑filer. + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**Förklaring:** Konstruktorn för `PdfFileSignature` tar det laddade `Document`. Internt parsar den signatur‑dictionaryn och gör metoder som `VerifySignature` och `IsSignatureCompromised` tillgängliga. + +## Steg 4: Verifiera signaturens integritet + +Kärnan i **pdf signature verification** är metoden `VerifySignature`. Den returnerar `true` om den kryptografiska hashen matchar det lagrade värdet och certifikatkedjan är betrodd (förutsatt att du har konfigurerat en trust manager, vilket vi hoppar över för enkelhetens skull). + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +Om du har flera signaturer, ändra bara indexet (`0`, `1`, …). Metoden kontrollerar både integritet och förtroende i ett svep, vilket är anledningen till att den är förstahandsvalet i de flesta scenarier. + +## Steg 5: Upptäck en komprometterad signatur + +Även en “giltig” signatur kan vara komprometterad om dokumentet ändras efter signering. Aspose ger oss `IsSignatureCompromised` för att upptäcka detta subtila fall. + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**När du ska använda den:** Föreställ dig att en PDF är signerad, men en användare lägger till en kommentar eller ändrar en sida. Hashen blir annorlunda, och `IsSignatureCompromised` returnerar `true` medan `VerifySignature` fortfarande kan vara `true` om certifikatet i sig är okej. Att kontrollera båda flaggorna ger dig en komplett bild. + +## Steg 6: Tolka resultaten + +Nu har vi två booleska värden: `isSignatureValid` och `isSignatureCompromised`. Låt oss göra dem till ett vänligt konsolutskrift. + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### Förväntad utdata + +| Scenario | Konsolutdata | +|-----------------------------------------------------|----------------------------------| +| Giltig och inte komprometterad | `Signature OK` | +| Giltig men komprometterad (dokument ändrat) | `Signature compromised!` | +| Ogiltig (certifikat ej betrott, hash‑mismatch) | `Signature verification failed` | + +Denna tabell hjälper dig snabbt att mappa booleska resultat till mänskligt läsbara meddelanden. + +## Fullt fungerande exempel + +Sätter vi ihop allt får vi följande kompletta, körklara program: + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +Kopiera, klistra in, justera `pdfPath` och kör. Om allt är korrekt konfigurerat ser du ett av de tre meddelandena ovan. + +## Vanliga fallgropar och tips för PDF‑signaturverifiering + +| Problem | Varför det händer | Så här fixar/undviker du det | +|--------------------------------------------------|------------------------------------------------------|----------------------------------------------------------------| +| **Saknad Aspose‑licens** | Gratisutvärderingen lägger till ett vattenstämpel och kan begränsa vissa API‑anrop. | Registrera en licens (`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`). | +| **Flera signaturer men fel index** | Du kan kontrollera fel signatur, vilket ger falska negativa resultat. | Loopa igenom `signatureVerifier.GetSignatureCount()` och inspektera varje. | +| **Certifikatkedjan ej betrodd** | `VerifySignature` misslyckas om rot‑CA‑n inte finns i betrodd lagring. | Lägg till den signerande CA:n i Windows Trusted Root Store eller konfigurera en egen `CertificateValidator`. | +| **Filen låst av en annan process** | Att öppna en PDF som fortfarande är öppen någon annanstans kan kasta ett `IOException`. | Använd en `FileStream` med `FileShare.ReadWrite` eller kopiera till en temporär fil först. | +| **Fel PDF‑sökväg** | En enkel stavfel ger `FileNotFoundException`. | Validera sökvägen med `File.Exists(pdfPath)` innan du laddar. | + +### Edge‑fall du kan stöta på + +- **Detached signatures**: Vissa PDF‑filer lagrar signaturer externt. Aspose `PdfFileSignature` stödjer för närvarande endast inbäddade signaturer. +- **Timestamped signatures**: Om du behöver verifiera tidsstämpel‑auktoriteten (TSA) måste du anropa `VerifySignature` med ett eget `VerificationOptions`‑objekt – utanför räckhåll för den här snabba guiden men värt att notera för projekt med hög efterlevnad. + +## Nästa steg – Utöka din valideringslogik + +Nu när du behärskar grunderna i **how to verify signature** kanske du vill: + +1. **Validate PDF signature** mot en lista med betrodda certifikat (t.ex. företagets PKI). +2. **Exportera signaturdetaljer** (signatörens namn, signeringstid, certifikat‑thumbprint) med `GetSignatureInfo`. +3. **Batch‑processa flera PDF‑filer** i en mapp och logga resultat till en CSV för revisionsändamål. + +Alla dessa är enkla utökningar av koden vi just gått igenom, och de håller dig inom samma **aspose pdf signature**‑ekosystem. + +--- + +**Kort sagt**, du vet nu exakt **how to verify signature** i en PDF med C# och Aspose, hur du upptäcker en komprometterad signatur, och vad du ska göra när verifieringen misslyckas. Metoden är robust, fungerar med flera signaturer och kan integreras i större dokument‑bearbetningspipeline. + +Har du en variant på detta scenario? Kanske du behöver signera PDF‑filer istället för att verifiera dem, eller så hanterar du krypterade PDF‑filer. Lämna en kommentar så utforskar vi de vinklarna tillsammans. Lycka till med kodandet! + +{{< /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/programming-with-stamps-and-watermarks/_index.md b/pdf/swedish/net/programming-with-stamps-and-watermarks/_index.md index 42d43a9da..019048fa7 100644 --- a/pdf/swedish/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/swedish/net/programming-with-stamps-and-watermarks/_index.md @@ -39,6 +39,7 @@ Aspose.PDFs handledningar "Programmering med stämplar och vattenstämplar" för | [Tabell i sidhuvuds- och sidfotssektionen](./table-in-header-footer-section/) | Lär dig hur du enkelt lägger till text i sidfoten på en PDF-fil med Aspose.PDF för .NET. Steg-för-steg-guide ingår för sömlös integration. | | [Text i sidfoten på PDF-filen](./text-in-footer/) | Lär dig hur du lägger till text i sidfoten på en PDF-fil med Aspose.PDF för .NET. | | [Text i sidhuvudet på PDF-filen](./text-in-header/) | Lär dig lägga till textrubriker i PDF-filer med Aspose.PDF för .NET med den här steg-för-steg-handledningen. Förbättra dina dokument effektivt och ändamålsenligt. | +| [Skapa PDF-dokument med Bates-nummerering i C# – Fullständig guide](./create-pdf-document-with-bates-numbering-in-c-full-guide/) | Lär dig hur du skapar PDF-dokument med Bates-nummerering i C# med Aspose.PDF för .NET i en detaljerad steg-för-steg-guide. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/swedish/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/swedish/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..a5fd3e8a8 --- /dev/null +++ b/pdf/swedish/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,183 @@ +--- +category: general +date: 2026-03-06 +description: Skapa PDF-dokument i C# och lägg enkelt till bates‑nummer. Lär dig hur + du lägger till en tom PDF‑sida, placerar ett stämpel på sidan och implementerar + bates‑nummerering. +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: sv +og_description: Skapa PDF-dokument i C# och lägg till bates‑nummer. Denna guide visar + hur du lägger till en tom PDF‑sida, placerar en stämpel på sidan och tillämpar bates‑nummerering. +og_title: Skapa PDF-dokument med Bates-nummerering – C#-handledning +tags: +- Aspose.Pdf +- C# +- PDF automation +title: Skapa PDF-dokument med Bates-nummerering i C# – Fullständig guide +url: /sv/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Skapa PDF-dokument med Bates-nummerering i C# + +Har du någonsin behövt **skapa PDF-dokument** i C# och undrat hur du lägger till ett Bates‑nummer utan att rycka upp håret? Du är inte ensam—juridiska firmor, domstolar och till och med vissa företags‑compliance‑team stöter på exakt detta problem varje dag. Den goda nyheten? Med några rader Aspose.Pdf‑kod kan du skapa ett helt nytt PDF, lägga till en tom sida och stämpla ett korrekt Bates‑nummer i ett smidigt flöde. + +I den här handledningen går vi igenom hela processen: från att sätta upp projektet, till att lägga till en tom PDF‑sida, till att ta reda på **how to add bates numbering**, och slutligen **place stamp on page** och spara resultatet. I slutet har du ett färdigt kodsnutt som du kan klistra in i vilken .NET‑app som helst. Inga vaga referenser, bara ett komplett, körbart exempel. + +## Vad du behöver + +- **.NET 6+** (eller .NET Framework 4.6+ – Aspose.Pdf fungerar med båda) +- **Aspose.Pdf for .NET** NuGet‑paket (`Install-Package Aspose.Pdf`) +- En bra IDE (Visual Studio, Rider eller VS Code med C#‑tillägg) + +Det är allt. Inga extra DLL‑filer, inga externa tjänster. Låt oss dyka ner. + +## Steg 1: Skapa PDF-dokument – Initial setup + +Först och främst behöver vi ett nytt `Document`‑objekt. Tänk på det som en tom duk där allt annat kommer att finnas. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **Varför detta är viktigt:** `Document`‑klassen är startpunkten för varje Aspose‑operation. Att instansiera den ger dig åtkomst till `Pages`‑samlingen, metadata och säkerhetsinställningar—alla byggstenar för en professionell PDF. + +## Steg 2: Lägg till tom PDF‑sida + +En PDF utan sidor är som en bok utan sidor—ganska värdelös. Att lägga till en tom sida är enkelt, och det ger oss en yta att stämpla Bates‑numret på. + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **Pro tip:** Om du behöver flera sidor, anropa bara `pdfDocument.Pages.Add()` i en loop. Varje anrop returnerar ett nytt `Page`‑objekt som du kan anpassa oberoende. + +## Steg 3: Hur man lägger till Bates‑nummerering – Skapa TextStamp + +Nu kommer kärnan i saken: **Bates number**. I Aspose.Pdf är det bara en `TextStamp` med en speciell artifact‑flagga. + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **Varför vi sätter `Artifact`**: Vissa PDF‑läsare visar Bates‑nummer som sökbar metadata. Genom att flagga stämpeln som ett `BatesNumbering`‑artifact säkerställer du att efterföljande verktyg automatiskt kan känna igen den. + +## Steg 4: Placera stämpel på sida + +Med stämpeln klar, **place stamp on page** nu. Detta är steget där det visuella numret faktiskt visas i PDF‑filen. + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **Edge case:** Om du behöver att numret ökar på varje sida, skulle du loopa igenom `pdfDocument.Pages` och uppdatera `batesStamp.Value` innan du anropar `AddStamp`. Exemplet här håller det enkelt med ett statiskt “Bates‑001”. + +## Steg 5: Spara och verifiera resultatet + +Till sist sparar vi PDF‑filen till disk. Välj en mapp som du har skrivrättigheter till; annars får du ett `UnauthorizedAccessException`. + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +När du öppnar `BatesStamped.pdf` i någon visare bör du se en liten “Bates‑001” prydligt placerad i det nedre högra hörnet på den tomma sidan. + +> **Förväntat resultat:** +> ![PDF with Bates number stamp](image-placeholder.png "PDF with Bates number stamp") +> *Alt text:* PDF med Bates‑nummerstämpling i nedre högra hörnet. + +Om numret inte visas, dubbelkolla marginalvärdena och se till att sidstorleken inte är för liten (standard A4 fungerar bra). Bekräfta också att `Artifact`‑flaggan inte tas bort av några efterbearbetningsverktyg. + +## Fullständigt fungerande exempel + +Nedan är det kompletta, kopiera‑och‑klistra‑klara programmet. Det inkluderar alla `using`‑direktiv och kommentarer för att hålla dig orienterad. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +Kör programmet, öppna PDF‑filen, och du kommer att se Bates‑numret exakt där vi instruerade det att placeras. 🎉 + +## Vanliga variationer & fallgropar + +| Scenario | Vad som ska ändras | Varför | +|----------|--------------------|--------| +| **Multiple pages, incrementing numbers** | Loop through `pdfDocument.Pages`, set `batesStamp.Value = $"Bates-{i:D3}"` before `AddStamp` | Ger varje sida en unik identifierare, typiskt för juridiska paket | +| **Different placement (top‑left)** | Change `HorizontalAlignment = HorizontalAlignment.Left` and `VerticalAlignment = VerticalAlignment.Top` | Vissa organisationer föredrar numret i rubriken istället för i sidfoten | +| **Custom font or color** | Set `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` | Förbättrar läsbarheten eller uppfyller varumärkesriktlinjer | +| **Adding an existing PDF as a background** | Load the source PDF with `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` | Användbart när du behöver stämpla över ett förgenererat formulär | + +## Avslutning + +Vi har just visat hur man **create PDF document**, **add blank page pdf**, och **add bates number** med Aspose.Pdf för .NET, sedan **place stamp on page** och sparar filen. Koden är avsiktligt kompakt så att du kan anpassa den till större arbetsflöden—oavsett om du batchar dussintals filer eller integrerar i en webbtjänst. + +Om du är redo att gå vidare, överväg: + +- Automatisera inkrementeringslogiken för stora ärendefiler. +- Inbädda PDF‑genereringen i ett ASP.NET Core‑API. +- Lägga till säkerhet (lösenordsskydd) med `pdfDocument.Encrypt(...)`. + +Känn dig fri att experimentera, bryta saker och ställa frågor i kommentarerna. Lycka till med kodandet, och må dina PDF‑filer alltid vara perfekt stämplade! + +{{< /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/programming-with-tagged-pdf/_index.md b/pdf/swedish/net/programming-with-tagged-pdf/_index.md index 5acb518c2..4918aa43b 100644 --- a/pdf/swedish/net/programming-with-tagged-pdf/_index.md +++ b/pdf/swedish/net/programming-with-tagged-pdf/_index.md @@ -26,6 +26,7 @@ Aspose.PDF för .NET:s handledningar "Programmering med taggade PDF-filer" guida | [Skapa PDF med taggad bild](./create-pdf-with-tagged-image/) | Lär dig skapa en taggad PDF med bilder med Aspose.PDF för .NET. Följ vår steg-för-steg-guide för tillgänglig och professionell dokumentskapning. | | [Skapa PDF med taggad text](./create-pdf-with-tagged-text/) | Lär dig hur du skapar taggade PDF-filer med tillgängligt innehåll med Aspose.PDF för .NET i den här omfattande steg-för-steg-handledningen. | | [Skapa taggad PDF i C# – Komplett steg‑för‑steg‑guide](./create-tagged-pdf-in-c-complete-step-by-step-guide/) | Lär dig att skapa en taggad PDF i C# med en komplett steg‑för‑steg‑guide. | +| [Skapa taggad PDF i C# – Steg‑för‑steg‑guide](./create-tagged-pdf-in-c-step-by-step-guide/) | Lär dig att skapa en taggad PDF i C# med en tydlig steg‑för‑steg‑guide. | | [Skapa strukturelement](./create-structure-elements/) | Lär dig hur du skapar strukturelement i PDF med Aspose.PDF för .NET. En steg-för-steg-guide för förbättrad PDF-tillgänglighet och organisation. | | [Skapa strukturelementträd](./create-structure-elements-tree/) | Lär dig hur du skapar ett strukturelementträd i PDF-dokument med Aspose.PDF för .NET. Följ den här steg-för-steg-guiden. | | [Skapa tabellelement](./create-table-element/) Steg-för-steg-guide för att skapa ett arrayelement med Aspose.PDF för .NET. Generera enkelt dynamiska PDF-filer med tabeller. | diff --git a/pdf/swedish/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/swedish/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..b0eb20bcd --- /dev/null +++ b/pdf/swedish/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-03-06 +description: Skapa en taggad PDF med Aspose.Pdf i C#. Lär dig hur du lägger till en + bild i PDF, sätter figurens position och taggar PDF för tillgänglighet. +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: sv +og_description: Skapa taggad PDF med Aspose.Pdf. Denna guide visar hur du lägger till + en bild i PDF, ställer in figurens position och taggar PDF för tillgänglighet. +og_title: Skapa taggad PDF i C# – Komplett handledning +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: Skapa taggad PDF i C# – Steg‑för‑steg‑guide +url: /sv/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Skapa taggad PDF i C# – Komplett handledning + +Har du någonsin behövt **skapa taggad PDF** i C# men inte vetat var du ska börja? Du är inte ensam; tillgänglighet är ett måste nuförtiden, och en taggad PDF är ryggraden i ett kompatibelt dokument. I den här handledningen går vi igenom ett verkligt exempel som **lägger till bild i PDF**, sätter figurens position och visar **hur man taggar PDF** med Aspose.Pdf. När du är klar har du en fullt taggad PDF som du kan skicka till vem som helst. + +Vi täcker allt från att ladda en befintlig fil till att spara det slutgiltiga resultatet, så du slipper leta efter “hur man lägger till bild” någon annanstans. Inga onödiga utsvävningar – bara en klar, körbar lösning som fungerar med Aspose.Pdf 23.8 (den senaste vid skrivtillfället). Ta fram din IDE, så sätter vi igång. + +--- + +## Vad du behöver + +- **Aspose.Pdf for .NET** (NuGet‑paket `Aspose.Pdf`). +- .NET 6+ (eller .NET Framework 4.7.2+). +- En inmatnings‑PDF som redan har en logisk struktur (dvs. den är redan taggad) – om den inte är det kan du aktivera taggning via `pdfDocument.TaggedContent = true`. +- En bildfil (`image.png`) som du vill bädda in. + +Det är allt. Inga extra bibliotek, inga kryptiska konfigurationsfiler. + +--- + +## Steg 1: Ladda den befintliga PDF‑dokumentet (Skapa bas för taggad PDF) + +Det första vi gör är att öppna PDF‑filen vi vill förbättra. När vi laddar filen får vi tillgång till dess logiska struktur, vilket är avgörande för **create tagged pdf**‑arbetsflöden. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*Varför detta är viktigt:* Utan ett taggträd kommer PDF‑filen inte att förmedla strukturell information till skärmläsare. Att aktivera taggning säkerställer att alla nya element vi lägger till (som en figur) ärver rätt hierarki. + +--- + +## Steg 2: Åtkomst till rot för logisk struktur (Hur man taggar PDF) + +Nu går vi in i PDF‑filens logiska struktur. Rot‑elementet är behållaren för alla taggar – tänk på det som dokumentets innehållsförteckning. + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*Förklaring:* `logicalRoot` låter oss lägga till nya taggar såsom `
` eller `
`. Detta är kärnan i **how to tag PDF** programatiskt. + +--- + +## Steg 3: Skapa en Figure‑tagg och ange dess position (Ställ in figurposition) + +En *Figure*-tagg grupperar visuellt innehåll med en valfri bildtext. Vi skapar en, placerar den och fäster den i roten. + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*Varför vi anger en position:* Steget **set figure position** bestämmer var det visuella elementet hamnar på sidan. Hoppar du över detta kan figuren visas på en oväntad plats eller vara osynlig för hjälpmedel. + +--- + +## Steg 4: Lägg till en visuell representation – infoga en bild (Lägg till bild i PDF) + +Med taggen på plats behöver vi själva bilden. Detta är delen som svarar på **add image to pdf**. + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*Viktigt:* Rektangelkoordinaterna måste matcha `figureTag.Position` som vi definierade tidigare; annars blir figuren och dess visuella innehåll osynkroniserade, vilket bryter tillgängligheten. + +--- + +## Steg 5: Spara den uppdaterade PDF‑filen (Avsluta skapandet av taggad PDF) + +Till sist sparar vi förändringarna i en ny fil. Att behålla originalet orört är god praxis. + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +I detta skede har du en **create tagged pdf**‑fil som innehåller en korrekt placerad bild omsluten av en `
`‑tagg. Öppna `output.pdf` i Adobe Acrobat och kontrollera *Tags*-panelen – du bör se en `Figure`‑nod under roten. + +--- + +## Fullt, körbart exempel + +Nedan är hela programmet som du kan kopiera och klistra in i en konsolapp. Alla steg är redan i rätt ordning. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### Förväntat resultat + +- `output.pdf` öppnas med bilden placerad på (100, 150) punkter, med storleken 300 × 200 punkter. +- *Tags*-panelen visar ett `Figure`‑element som omsluter bilden. +- Skärmläsarverktyg annonserar “Figure” innan de beskriver bilden, vilket uppfyller grundläggande tillgänglighetsstandarder. + +--- + +## Vanliga frågor & kantfall + +### Vad händer om käll‑PDF‑filen inte redan är taggad? + +Aspose.Pdf låter dig slå på taggning genom att sätta `pdfDocument.TaggedContent.IsTagged = true;`. Biblioteket genererar då ett standard‑taggträd, varefter du kan lägga till egna taggar som visat. + +### Kan jag lägga till en bildtext till figuren? + +Ja. Efter att du skapat `figureTag` kan du fästa ett `Paragraph` med ett `TextFragment` och sätta dess `Tag` till `Caption`. Exempel: + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### Hur placerar jag figuren på en annan sida? + +Byt ut `var firstPage = pdfDocument.Pages[1];` mot önskat sidindex, t.ex. `pdfDocument.Pages[3]`. Kom ihåg att justera `Position`‑koordinaterna om sidstorleken skiljer sig. + +### Vad om jag behöver tagga flera bilder? + +Skapa en ny `Figure` för varje bild, ge varje en unik `Position` och lägg till motsvarande `Image`‑objekt på rätt sida. Att loopa över en samling bilder fungerar utmärkt. + +### Fungerar detta med PDF/A‑kompatibilitet? + +Aspose.Pdf stödjer PDF/A‑1b, PDF/A‑2b och PDF/A‑3b. När du genererar ett PDF/A‑dokument, se till att sätta compliance‑läget innan du sparar: + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +Taggningslogiken förblir densamma. + +--- + +## Pro‑tips & fallgropar + +- **Pro‑tips:** Använd alltid absoluta sökvägar eller `Path.Combine` för att undvika körningsfel där filen inte hittas. +- **Se upp för:** Mismatcherade koordinater mellan `Figure`‑taggen och `Image`‑rektangeln – hjälpmedel förlitar sig på den justeringen. +- **Prestanda‑notering:** Om du bearbetar många sidor, omslut bildströmmen med ett `using`‑block för att frigöra resurser omedelbart. +- **Versionskontroll:** API‑exemplet fungerar med Aspose.Pdf 23.8+. Äldre versioner kan ha något annorlunda klassnamn (t.ex. `LogicalStructureElement` istället för `FigureElement`). + +--- + +## Slutsats + +Vi har just **create tagged pdf** från början till slut, demonstrerat **add image to pdf**, och visat hur man **set figure position** samtidigt som vi svarade på **how to tag pdf** och **how to add image** i ett enda, sammanhängande exempel. Koden är klar att köras, förklaringarna täcker “varför” bakom varje steg, och du har nu en solid grund för att bygga tillgängliga PDF‑filer i C#. + +Redo för nästa utmaning? Prova att lägga till tabeller med `
`‑taggar, eller bädda in ett PDF/A‑2b‑kompatibilitetslager för arkiveringsändamål. Samma mönster – ladda, åtkomst till logisk struktur, skapa en tagg, fästa visuellt innehåll, spara – gäller för de flesta PDF‑tillgänglighetsuppgifter. + +Om du stöter på problem eller har ett användningsfall som inte täcks här, lämna en kommentar nedan. Lycka till med taggning, och ha kul när du bygger PDF‑filer som alla kan läsa! + +![Diagram som visar en PDF med en Figure‑tagg och bild – illustrerar hur man skapar taggad pdf](placeholder-image.png "exempel på skapa taggad pdf") + +{{< /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/digital-signatures/_index.md b/pdf/thai/net/digital-signatures/_index.md index 279dea29c..03a3a4eaf 100644 --- a/pdf/thai/net/digital-signatures/_index.md +++ b/pdf/thai/net/digital-signatures/_index.md @@ -59,6 +59,9 @@ ### [ตรวจสอบลายเซ็น PDF ด้วย C# – คู่มือฉบับสมบูรณ์เพื่อยืนยันลายเซ็นดิจิทัล PDF](./verify-pdf-signature-in-c-complete-guide-to-validate-digital/) เรียนรู้วิธีตรวจสอบและยืนยันลายเซ็นดิจิทัลในไฟล์ PDF ด้วย C# อย่างละเอียดและปลอดภัย +### [วิธีอ่านลายเซ็นใน PDF ด้วย C# – คู่มือทีละขั้นตอน](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +เรียนรู้วิธีอ่านลายเซ็นดิจิทัลจากไฟล์ PDF ด้วย C# อย่างละเอียดด้วยขั้นตอนที่ชัดเจน + ## แหล่งข้อมูลเพิ่มเติม - [Aspose.PDF สำหรับเอกสารประกอบ Net](https://docs.aspose.com/pdf/net/) diff --git a/pdf/thai/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/thai/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..7cd27a2d8 --- /dev/null +++ b/pdf/thai/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,232 @@ +--- +category: general +date: 2026-03-06 +description: วิธีอ่านลายเซ็นในไฟล์ PDF ด้วย C#. เรียนรู้การโหลดเอกสาร PDF ด้วย C#, + แสดงรายการลายเซ็น PDF, และดึงลายเซ็นดิจิทัลจาก PDF อย่างรวดเร็วและเชื่อถือได้. +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: th +og_description: วิธีอ่านลายเซ็นในไฟล์ PDF ด้วย C# คู่มือนี้แสดงวิธีโหลดเอกสาร PDF + ด้วย C# รายการลายเซ็น PDF และดึงลายเซ็นดิจิทัลจาก PDF ในไม่กี่ขั้นตอนง่าย ๆ +og_title: วิธีอ่านลายเซ็นใน PDF ด้วย C# – คู่มือฉบับสมบูรณ์ +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: วิธีอ่านลายเซ็นใน PDF ด้วย C# – คู่มือแบบขั้นตอนต่อขั้นตอน +url: /th/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีอ่านลายเซ็นใน PDF ด้วย C# – คู่มือฉบับสมบูรณ์ + +เคยสงสัยไหมว่า **วิธีอ่านลายเซ็น** ที่ฝังอยู่ในไฟล์ PDF แล้ว? บางทีคุณอาจกำลังสร้างแดชบอร์ดการปฏิบัติตามกฎ, หรือแค่ต้องการตรวจสอบสัญญาที่ลงนามก่อนที่ข้อมูลจะเข้าสู่ฐานข้อมูลของคุณ ข่าวดีคือด้วยเพียงไม่กี่บรรทัดของ C# และไลบรารี Aspose.Pdf คุณก็สามารถดึงชื่อลายเซ็นออกจากไฟล์ได้โดยไม่ต้องตรวจสอบด้วยตนเอง + +ในบทเรียนนี้เราจะอธิบายการโหลดเอกสาร PDF ด้วย C#, การแสดงรายการลายเซ็น PDF, และการดึงข้อมูลลายเซ็นดิจิทัลจาก PDF. เมื่อเสร็จสิ้นคุณจะมีแอปคอนโซลที่พร้อมรันซึ่งพิมพ์ชื่อลายเซ็นทุกชื่อที่พบ, พร้อมเคล็ดลับการจัดการกรณีพิเศษเช่นไฟล์ที่ป้องกันด้วยรหัสผ่าน + +## ข้อกำหนดเบื้องต้น + +- .NET 6.0 หรือใหม่กว่า (โค้ดนี้ยังทำงานกับ .NET Framework 4.6+ ด้วย) +- Aspose.Pdf for .NET (คุณสามารถรับไลเซนส์ชั่วคราวฟรีจากเว็บไซต์ของ Aspose) +- PDF ที่มีลายเซ็นดิจิทัลหนึ่งหรือหลายลายเซ็นอยู่แล้ว (ไฟล์ตัวอย่าง `MultiSigned.pdf` มีให้ในรีโพ) + +> **Pro tip:** หากคุณใช้ Visual Studio, เปิดใช้งาน *Nullable Reference Types* เพื่อจับบั๊กที่เกี่ยวกับ null ตั้งแต่ต้น + +## ขั้นตอนที่ 1: โหลดเอกสาร PDF ด้วย C# + +สิ่งแรกที่เราต้องการคืออ็อบเจกต์ `Document` ที่แทนไฟล์ PDF บนดิสก์. คลาส `Document` ของ Aspose.Pdf จัดการทุกอย่างตั้งแต่การสกัดข้อความง่าย ๆ ไปจนถึงการประมวลผลฟอร์มที่ซับซ้อน + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**ทำไมเรื่องนี้ถึงสำคัญ:** การโหลด PDF จะตรวจสอบว่าไฟล์มีอยู่และสามารถอ่านได้. หากไฟล์เสียหายหรือพาธผิด เราจะหยุดทำงานตั้งแต่ต้นแทนที่จะเจอข้อผิดพลาดที่ไม่ชัดเจนในภายหลังเมื่อพยายามเรียกดูลายเซ็น + +## ขั้นตอนที่ 2: สร้างตัวช่วย `PdfFileSignature` + +Aspose แยกการจัดการ PDF ทั่วไป (`Document`) ออกจากการทำงานที่เกี่ยวกับลายเซ็น (`PdfFileSignature`). การสร้างตัวช่วยนี้ทำให้เราสามารถเข้าถึงเมธอดเช่น `GetSignatureNames()` ได้ + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**ทำไมเรื่องนี้ถึงสำคัญ:** คลาส `PdfFileSignature` รู้วิธีแยกพจนานุกรม `/Sig` ของ PDF, ซึ่งเป็นที่เก็บลายเซ็นดิจิทัล. การใช้คลาสนี้ทำให้เรารับลายเซ็นได้ตรงตามที่ถูกเพิ่มเข้าไป, พร้อมรักษาเมตาดาต้าทางคริปโต + +## ขั้นตอนที่ 3: ดึงชื่อลายเซ็นทั้งหมด + +ต่อไปคือหัวใจของ **วิธีอ่านลายเซ็น**: เรียก `GetSignatureNames()`. เมธอดนี้จะคืนค่าอาร์เรย์ของสตริงที่บรรจุ *ชื่อฟิลด์* ของแต่ละลายเซ็น + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**สิ่งที่คุณจะเห็น:** หาก `MultiSigned.pdf` มีลายเซ็นสามอันชื่อ `Signature1`, `Signature2`, และ `Signature3`, ผลลัพธ์ในคอนโซลจะเป็น: + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## ขั้นตอนที่ 4: (ทางเลือก) ตรวจสอบความถูกต้องของแต่ละลายเซ็น + +การอ่านชื่ออาจเพียงพอสำหรับหลายกรณี, แต่หลายโครงการต้องการรู้ว่าลายเซ็นแต่ละอันยังคงเป็นที่เชื่อถือได้หรือไม่. Aspose ให้คุณตรวจสอบลายเซ็นโดยใช้ชื่อฟิลด์: + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **Edge case:** หาก PDF ถูกป้องกันด้วยรหัสผ่าน, คุณต้องใส่รหัสผ่านก่อนเรียก `VerifySignature`. ใช้ `pdfDocument.Encrypt.Password = "yourPassword";` ทันทีหลังจากโหลดเอกสาร + +## ตัวอย่างทำงานเต็มรูปแบบ + +ด้านล่างเป็นโปรแกรมทั้งหมดที่คุณสามารถคัดลอก‑วางลงในโปรเจกต์คอนโซลใหม่ (`dotnet new console`). โค้ดนี้รวมทุกขั้นตอน, การจัดการข้อผิดพลาด, และการตรวจสอบแบบเลือกได้ + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**ผลลัพธ์ที่คาดหวัง** (สมมติว่ามีลายเซ็นที่ถูกต้องสามอัน): + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## การจัดการความแตกต่างที่พบบ่อย + +| สถานการณ์ | สิ่งที่ต้องเปลี่ยน | ทำไม | +|-----------|----------------|-----| +| **PDF ที่ป้องกันด้วยรหัสผ่าน** | ตั้งค่า `pdfDocument.Encrypt.Password = "yourPwd";` ก่อนสร้าง `PdfFileSignature`. | หากไม่มีรหัสผ่าน พจนานุกรมลายเซ็นจะถูกเข้ารหัสและ `GetSignatureNames()` จะคืนอาร์เรย์ว่าง | +| **PDF ขนาดใหญ่ ( > 100 MB )** | ใช้ `pdfSigner.GetSignatureNames(0, 10)` เพื่อแบ่งหน้า (พารามิเตอร์แรก = ดัชนีเริ่มต้น). | การโหลดรายการลายเซ็นทั้งหมดพร้อมกันอาจใช้หน่วยความจำมาก | +| **ไม่มีลายเซ็นเลย** | โค้ดจะพิมพ์คำเตือนเป็นมิตรอยู่แล้ว. พิจารณาบันทึกเป็นเหตุการณ์การตรวจสอบ. | ช่วยกระบวนการต่อไปตัดสินใจว่าจะปฏิเสธไฟล์หรือขอให้ผู้ใช้อัปโหลดเวอร์ชันที่ลงนาม | +| **ชื่อฟิลด์ลายเซ็นแบบกำหนดเอง** | เมธอดจะคืนชื่อฟิลด์ที่ใช้ในขณะลงนาม, เช่น `EmployeeApproval`. ไม่ต้องทำอะไรเพิ่ม | ทำให้คุณสามารถแมปลายเซ็นกลับไปยังบทบาททางธุรกิจได้ | + +## แนวทางปฏิบัติที่ดีที่สุด & เคล็ดลับ + +- **Dispose อ็อบเจกต์**: รูปแบบ `using var pdfSigner` รับประกันว่าทรัพยากรเนทีฟจะถูกปล่อยอย่างทันท่วงที +- **ตั้งค่าไลเซนส์ตั้งแต่ต้น**: เรียก `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` ที่ส่วนเริ่มต้นของ `Main` เพื่อหลีกเลี่ยงลายน้ำการประเมินผล +- **ความปลอดภัยของเธรด**: หากคุณประมวลผล PDF จำนวนมากแบบขนาน, ให้สร้าง `PdfFileSignature` แยกต่างหากต่อเธรด. คลาสนี้ไม่รองรับการทำงานหลายเธรดพร้อมกัน +- **การบันทึก**: สำหรับการใช้งานจริง, แทนที่ `Console.WriteLine` ด้วยล็อกเกอร์แบบโครงสร้าง (Serilog, NLog) เพื่อบันทึกชื่อลายเซ็นอย่างแม่นยำสำหรับร่องรอยการตรวจสอบ +- **ตรวจสอบเวอร์ชัน**: โค้ดนี้ทำงานกับ Aspose.Pdf for .NET 23.10 ขึ้นไป. เวอร์ชันเก่าอาจต้องใช้ `PdfSignature` แทน `PdfFileSignature` + +## สรุป + +เราได้อธิบาย **วิธีอ่านลายเซ็น** จาก PDF ด้วย C# แล้ว. ด้วยการโหลดเอกสาร PDF, สร้างตัวช่วย `PdfFileSignature`, และเรียก `GetSignatureNames()`, คุณสามารถแสดงรายการลายเซ็นดิจิทัลทั้งหมดที่ฝังอยู่ในไฟล์ได้. การตรวจสอบความถูกต้องแบบเลือกเพิ่มความเชื่อมั่น, และโค้ดตัวอย่างแสดงวิธีผสานเข้ากับแอปคอนโซลจริง + +พร้อมก้าวต่อไปหรือยัง? ลองผสานกับ `DigitalSignatureUtil` ของ Aspose เพื่อสกัดใบรับรองผู้ลงนาม, หรือส่งรายการลายเซ็นไปยังแดชบอร์ดการปฏิบัติตามที่แจ้งเตือนสัญญาที่ยังไม่ได้ลงนาม. ความเป็นไปได้ไม่มีที่สิ้นสุด—เพียงจำไว้ว่า **load PDF document C#**, **list PDF signatures**, และ **get digital signatures PDF** ทุกครั้งที่ต้องการการตรวจสอบอย่างรวดเร็ว + +ขอให้เขียนโค้ดสนุกและ PDF ของคุณปลอดภัยจากการปลอมแปลงเสมอ! + +{{< /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-conversion/_index.md b/pdf/thai/net/document-conversion/_index.md index 9a69c5c49..19f57ca35 100644 --- a/pdf/thai/net/document-conversion/_index.md +++ b/pdf/thai/net/document-conversion/_index.md @@ -46,7 +46,7 @@ | [PDF เป็น XPS](./pdf-to-xps/) | เรียนรู้วิธีแปลง PDF เป็น XPS โดยใช้ Aspose.PDF สำหรับ .NET ด้วยคู่มือทีละขั้นตอนนี้ เหมาะสำหรับนักพัฒนาและผู้ที่ชื่นชอบการประมวลผลเอกสาร - | [บทส่งท้ายสำหรับ PDF](./postscript-to-pdf/) | เรียนรู้วิธีแปลงไฟล์ Postscript เป็น PDF โดยใช้ Aspose.PDF สำหรับ .NET ในบทช่วยสอนแบบทีละขั้นตอนนี้ เหมาะสำหรับนักพัฒนาในทุกระดับ - | [ระบุข้อมูลประจำตัวระหว่างการแปลง HTML เป็น PDF](./provide-credentials-during-html-to-pdf/) | เรียนรู้วิธีแปลง HTML เป็น PDF โดยใช้ Aspose.PDF สำหรับ .NET ด้วยคู่มือทีละขั้นตอนนี้ เหมาะอย่างยิ่งสำหรับนักพัฒนาที่ต้องการปรับปรุงกระบวนการสร้างเอกสาร - -| [ลบไฮเปอร์ลิงก์หลังจากการแปลงจาก HTML](./remove-hyperlinks-after-converting-from-html/) เรียนรู้วิธีลบไฮเปอร์ลิงก์ออกจากเอกสาร HTML หลังจากแปลงเป็น PDF โดยใช้ Aspose.PDF สำหรับ .NET ในคู่มือทีละขั้นตอนนี้ +| [ลบไฮเปอร์ลิงก์หลังจากการแปลงจาก HTML](./remove-hyperlinks-after-converting-from-html/) เรียนรู้วิธีลบไฮเปอร์ลิงก์ออกจากเ็บสาร HTML หลังจากแปลงเป็น PDF โดยใช้ Aspose.PDF สำหรับ .NET ในคู่มือทีละขั้นตอนนี้ - [แทนที่แบบอักษรที่หายไป](./replace-missing-fonts/) | เรียนรู้วิธีการแทนที่แบบอักษรที่หายไปในเอกสาร PDF โดยใช้ Aspose.PDF สำหรับ .NET ด้วยคู่มือทีละขั้นตอนนี้ - [ตั้งค่าชื่อฟอนต์เริ่มต้น](./set-default-font-name/) | เรียนรู้วิธีตั้งชื่อแบบอักษรเริ่มต้นเมื่อเรนเดอร์ PDF ลงในรูปภาพโดยใช้ Aspose.PDF สำหรับ .NET คู่มือนี้ครอบคลุมข้อกำหนดเบื้องต้น คำแนะนำทีละขั้นตอน และคำถามที่พบบ่อย - | [แปลง SVG เป็น PDF](./svg-to-pdf/) | เรียนรู้วิธีแปลง SVG เป็น PDF โดยใช้ Aspose.PDF สำหรับ .NET ในบทช่วยสอนแบบทีละขั้นตอนนี้ เหมาะสำหรับนักพัฒนาและนักออกแบบ - @@ -57,7 +57,8 @@ - [XML เป็น PDF](./xml-to-pdf/) | เรียนรู้วิธีแปลง XML เป็น PDF โดยใช้ Aspose.PDF สำหรับ .NET ในบทช่วยสอนทีละขั้นตอนอย่างครอบคลุมนี้ พร้อมด้วยตัวอย่างโค้ดและคำอธิบายโดยละเอียด - | [XML เป็น PDF ตั้งค่าเส้นทางของรูปภาพ](./xml-to-pdfset-image-path/) | เรียนรู้วิธีการแปลง XML เป็น PDF ได้อย่างง่ายดายโดยใช้ Aspose.PDF สำหรับ .NET คำแนะนำโดยละเอียดนี้จะแนะนำคุณทีละขั้นตอนตั้งแต่การตั้งค่าจนถึงการเสร็จสมบูรณ์ - | [XPS เป็น PDF](./xps-to-pdf/) เรียนรู้วิธีแปลงไฟล์ XPS เป็น PDF โดยใช้ Aspose.PDF สำหรับ .NET ด้วยบทช่วยสอนแบบทีละขั้นตอนนี้ เหมาะสำหรับนักพัฒนาและผู้ที่ชื่นชอบเอกสาร | -- [แปลง PDF เป็น PDF/X‑4 ด้วย C# – บทช่วยสอน ASP.NET PDF ทีละขั้นตอน](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | เรียนรู้วิธีแปลงไฟล์ PDF เป็น PDF/X‑4 ด้วย Aspose.PDF สำหรับ .NET ในบทช่วยสอนแบบทีละขั้นตอนนี้ +- [แปลง PDF เป็น PDF/X‑4 ด้วย C# – บทช่วยสอน ASP.NET PDF ทีละขั้นตอน](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | +- [บทช่วยสอน Aspose PDF: แปลง PDF เป็น PDF/X‑4 ด้วย C#](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) | เรียนรู้วิธีแปลงไฟล์ PDF เป็น PDF/X‑4 ด้วย C# โดยใช้ Aspose.PDF สำหรับ .NET ในบทช่วยสอนขั้นตอนโดยละเอียด {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/thai/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/thai/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..cd7654b58 --- /dev/null +++ b/pdf/thai/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-03-06 +description: Aspose PDF Tutorial แสดงวิธีใช้ Aspose เพื่อโหลดเอกสาร PDF ใน C#, แปลง + PDF เป็น PDF/X‑4, และบันทึก PDF ที่แปลงแล้วอย่างมีประสิทธิภาพ. +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: th +og_description: บทเรียน Aspose PDF อธิบายวิธีโหลดเอกสาร PDF ใน C# แปลงเป็นรูปแบบ PDF/X‑4 + และบันทึก PDF ที่แปลงแล้วพร้อมตัวอย่างโค้ดที่ชัดเจน +og_title: 'บทเรียน Aspose PDF: แปลง PDF เป็น PDF/X‑4 ด้วย C#' +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: 'บทเรียน Aspose PDF: แปลง PDF เป็น PDF/X‑4 ด้วย C#' +url: /th/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# บทแนะนำ Aspose PDF: แปลง PDF เป็น PDF/X‑4 ด้วย C# + +เคยสงสัยไหมว่าการใช้ Aspose เพื่อแปลง PDF ธรรมดาให้เป็นไฟล์ PDF/X‑4 ทำได้อย่างไรโดยไม่ต้องลำบาก? คุณไม่ได้เป็นคนเดียว—นักพัฒนามักต้องการวิธีที่เชื่อถือได้ในการ **load PDF document C#**‑style, แปลงไฟล์, แล้ว **save the converted PDF** เพื่อใช้ในขั้นตอนต่อไป ในคู่มือนี้ เราจะพาคุณผ่านตัวอย่างที่ทำงานได้เต็มรูปแบบและพร้อมรันโดยใช้ Aspose.Pdf for .NET รุ่นล่าสุด + +เราจะครอบคลุมทุกอย่างตั้งแต่การติดตั้งไลบรารี, การโหลด PDF ต้นฉบับ, การแปลงเป็นมาตรฐาน PDF/X‑4, และสุดท้ายการบันทึกผลลัพธ์ลงดิสก์ เมื่ออ่านจบคุณจะเข้าใจ **how to use Aspose** สำหรับสถานการณ์การแปลงทั่วไปนี้อย่างชัดเจน พร้อมเคล็ดลับการจัดการกรณีขอบต่าง ๆ + +## Prerequisites + +ก่อนเริ่มทำตามขั้นตอน ให้ตรวจสอบว่าคุณมี: + +- .NET 6.0 หรือใหม่กว่า (โค้ดทำงานได้บน .NET Framework ด้วยเช่นกัน แต่แนะนำให้ใช้ .NET 6+) +- ไฟล์ลิขสิทธิ์ Aspose.Pdf for .NET ที่ถูกต้อง (หรือรันในโหมดประเมินผลเพื่อทดสอบอย่างเร็ว) +- Visual Studio 2022 หรือ IDE ที่รองรับ C# +- ไฟล์ PDF อินพุตที่อยู่ใน `YOUR_DIRECTORY/input.pdf` + +ไม่ต้องมีแพ็กเกจ NuGet เพิ่มเติมนอกจาก `Aspose.Pdf` + +## Install Aspose.Pdf via NuGet + +เปิดเทอร์มินัลหรือ Package Manager Console แล้วรัน: + +```bash +dotnet add package Aspose.Pdf +``` + +คำสั่งนี้จะดึงเวอร์ชันเสถียรล่าสุด (ณ มีนาคม 2026, เวอร์ชัน 23.12) หากคุณชอบใช้ UI ให้ค้นหา *Aspose.Pdf* ใน NuGet Package Manager แล้วติดตั้ง + +## Step 1: Load PDF Document in C# with Aspose + +สิ่งแรกที่ต้องทำคือโหลด PDF ต้นฉบับเข้าสู่หน่วยความจำ คลาส `Document` ของ Aspose เป็นจุดเริ่มต้น + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**ทำไมจึงสำคัญ:** การโหลดไฟล์จะตรวจสอบว่าพาธมีอยู่และ PDF ไม่เสียหาย ส่วน `try/catch` จะช่วยให้คุณจับข้อผิดพลาดอย่างเป็นระบบ—เป็นประโยชน์เมื่อไฟล์มาจากการอัปโหลดของผู้ใช้ + +## Step 2: Convert PDF to PDF/X‑4 Format + +PDF/X‑4 เป็นส่วนย่อยของ PDF ที่ออกแบบมาสำหรับการพิมพ์และการเก็บรักษาที่เชื่อถือได้ การแปลงจะทำให้ฟอนต์ทั้งหมดฝังอยู่และไฟล์สอดคล้องกับมาตรฐานอุตสาหกรรม + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**ทำไมต้องเลือก `ConvertErrorAction.Delete`?** PDF รุ่นเก่าบางไฟล์มีองค์ประกอบ (เช่น annotation ที่ไม่รองรับ) ที่อาจทำให้การแปลงล้มเหลว การลบพวกมันจะทำให้กระบวนการราบรื่นขึ้น แต่คุณควรตรวจสอบผลลัพธ์หากต้องการเก็บองค์ประกอบเหล่านั้นไว้ + +### Optional: Verify Conversion Success + +หากต้องการความมั่นใจเพิ่มขึ้น คุณสามารถตรวจสอบ `PdfFormat` ของเอกสารหลังการแปลงได้: + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## Step 3: Save the Converted PDF File + +เมื่อเอกสารอยู่ในรูปแบบ PDF/X‑4 แล้ว ให้บันทึกกลับลงดิสก์ + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**ผลลัพธ์ที่คุณจะเห็น:** ไฟล์ใหม่ชื่อ `Converted_PDFX4.pdf` จะปรากฏใน `YOUR_DIRECTORY` เปิดด้วยโปรแกรมดู PDF ที่รองรับ PDF/X‑4 (เช่น Adobe Acrobat, Foxit ฯลฯ) คุณจะสังเกตเห็นว่าฟอนต์ทั้งหมดถูกฝังและเอกสารสอดคล้องกับสเปค PDF/X‑4 + +![aspose pdf tutorial - converting PDF to PDF/X‑4](/images/aspose-pdf-conversion.png "aspose pdf tutorial showing PDF/X‑4 conversion result") + +*Image alt text includes the primary keyword, satisfying SEO requirements.* + +## Full End‑to‑End Example + +รวมทุกขั้นตอนเข้าด้วยกัน นี่คือตัวอย่างแอปคอนโซลที่สามารถคัดลอก‑วางลงในโปรเจกต์ C# ใหม่ได้ทันที: + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +รันโปรแกรมแล้วคุณจะเห็นข้อความในคอนโซลยืนยันแต่ละขั้นตอน หากมีอะไรผิดพลาด ข้อความแสดงข้อผิดพลาดจะบอกตำแหน่งที่เกิดปัญหาอย่างชัดเจน + +## Common Questions & Edge Cases + +### What if I need to keep annotations? + +`ConvertErrorAction.Delete` จะลบอ็อบเจกต์ที่ไม่รองรับรวมถึงบาง annotation หากต้องการเก็บไว้ให้เปลี่ยนเป็น `ConvertErrorAction.Keep` แต่ควรทดสอบผลลัพธ์—บาง annotation อาจยังคงทำให้เกิดคำเตือนเรื่อง compliance + +### How do I handle large PDFs (hundreds of MB)? + +Aspose.Pdf ทำการสตรีมไฟล์ ทำให้การใช้หน่วยความจำค่อนข้างต่ำ อย่างไรก็ตาม คุณอาจต้องเพิ่ม threshold ของ `System.GC` หรือประมวลผลเอกสารเป็นชิ้น (เช่น แปลงหน้า‑ต่อ‑หน้า) สำหรับไฟล์ขนาดใหญ่มาก + +### Can I convert multiple files in a batch? + +ทำได้แน่นอน เพียงห่อหุ้มโลจิกการโหลด‑แปลง‑บันทึกไว้ในลูป `foreach` ที่วนผ่านโฟลเดอร์ของ PDF จำไว้ว่าต้องจัดการข้อยกเว้นแยกไฟล์เพื่อไม่ให้ไฟล์ที่มีปัญหาหนึ่งทำให้กระบวนการทั้งหมดหยุด + +### Does this work on .NET Core on Linux? + +ใช่ Aspose.Pdf รองรับหลายแพลตฟอร์ม เพียงให้แน่ใจว่าได้อ้างอิงแพ็กเกจ `Aspose.Pdf` แล้วติดตั้งฟอนต์ที่จำเป็นบนโฮสต์ Linux หากต้องการการเรนเดอร์ข้อความที่ถูกต้อง + +## Pro Tips from the Field + +- **ตั้งค่าลิขสิทธิ์ตั้งแต่ต้น:** `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` – จะลบลายน้ำโหมดประเมินผลและเพิ่มประสิทธิภาพ +- **ตรวจสอบผลลัพธ์:** ใช้ `PdfFormatValidator` ของ Aspose เพื่อตรวจสอบ compliance ของ PDF/X‑4 อย่างโปรแกรมเมติกก่อนส่งมอบไฟล์ +- **บันทึกเวลาแปลง:** งานแบตช์ขนาดใหญ่ควรจับเวลาแต่ละการแปลง (`Stopwatch`) เพื่อระบุการถดถอยของประสิทธิภาพ +- **หลีกเลี่ยงพาธที่กำหนดตรง:** ควรใช้ไฟล์ตั้งค่า หรือ environment variables สำหรับ `inputPath` และ `outputPath` เพื่อให้แอปพกพาได้ง่าย + +## Conclusion + +ใน **Aspose PDF Tutorial** นี้ เราได้สาธิตเวิร์กโฟลว์แบบครบวงจรสำหรับ **how to use Aspose** เพื่อ **load PDF document C#**, แปลงเป็นมาตรฐาน **PDF/X‑4**, และ **save the converted PDF** ตัวอย่างนี้ทำงานได้เต็มที่ อธิบายเหตุผลของแต่ละขั้นตอนและชี้ให้เห็นกับดักที่อาจเจอในโปรเจกต์จริง + +เมื่อคุณเข้าใจพื้นฐานแล้ว สามารถต่อยอดได้—ประมวลผลไฟล์หลายสิบไฟล์พร้อมกัน, ฝังเมตาดาต้าตามต้องการ, หรือรวมการแปลงเข้ากับ Web API ความเป็นไปได้ไม่มีขีดจำกัด และ Aspose.Pdf จะให้เครื่องมือที่ช่วยให้คุณทำได้อย่างรวดเร็ว + +มีคำถามเพิ่มเติมเกี่ยวกับการประมวลผล PDF ด้วย Aspose? แสดงความคิดเห็น, สำรวจเอกสารอย่างเป็นทางการของ Aspose, หรือทดลองโค้ดด้านบนได้เลย ขอให้แปลงไฟล์สนุก! + +{{< /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-creation/_index.md b/pdf/thai/net/document-creation/_index.md index 2f817f100..356a6f185 100644 --- a/pdf/thai/net/document-creation/_index.md +++ b/pdf/thai/net/document-creation/_index.md @@ -57,7 +57,7 @@ เรียนรู้วิธีสร้าง PDF บนพื้นฐาน Java แบบอัตโนมัติโดยใช้ Aspose.PDF สำหรับ .NET โดยปรับการวางแนวของรูปภาพแบบไดนามิกตามขนาด ### [เรียนรู้การสร้างและแปลง PDF ด้วย Aspose.PDF .NET ด้วย C#](./mastering-aspose-pdf-net-pd-creation-conversion/) -เรียนรู้วิธีการสร้างและแปลงไฟล์ PDF โดยใช้ Aspose.PDF สำหรับ .NET คู่มือนี้ครอบคลุมทุกอย่างตั้งแต่การตั้งค่าไปจนถึงแอปพลิเคชันในโลกแห่งความเป็นจริง ซึ่งปรับให้เหมาะสมเพื่อประสิทธิภาพสูงสุด +เรียนรู้วิธีการสร้างและแปลงไฟล์ PDF โดยใช้ Aspose.PDF สำหรับ .NET คู่มือนี้ครอบคลุมทุกอย่างตั้งแต่การตั้งค่าไปจนถึงแอปพลิเคชันในโลกแห่งความเป็นจริง ซึ่งปรับให้เหมาะสมนเพื่อประสิทธิภาพสูงสุด ### [เรียนรู้ Aspose.PDF สำหรับ .NET: สร้างและแยกไฟล์ PDF ได้อย่างง่ายดาย](./master-aspose-pdf-net-create-extract-pdfs/) เรียนรู้วิธีการสร้างและแยกเนื้อหาจากเอกสาร PDF ได้อย่างราบรื่นโดยใช้ Aspose.PDF สำหรับ .NET ปรับปรุงการจัดการเอกสารของคุณด้วยคู่มือที่ครอบคลุมนี้ @@ -74,6 +74,12 @@ ### [สร้างเอกสาร PDF ด้วย Aspose.PDF – เพิ่มหน้า รูปร่างและบันทึก](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) เรียนรู้วิธีเพิ่มหน้า รูปร่างและบันทึกไฟล์ PDF ด้วย Aspose.PDF สำหรับ .NET +### [สร้างเอกสาร PDF ด้วย Aspose.PDF – คู่มือทีละขั้นตอน](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +เรียนรู้วิธีสร้างเอกสาร PDF อย่างง่ายด้วย Aspose.PDF ผ่านขั้นตอนที่ชัดเจนและตัวอย่างโค้ดครบถ้วน + +### [สร้างเอกสาร PDF ด้วย Aspose.PDF – คู่มือเต็ม C#](./create-pdf-document-with-aspose-pdf-full-c-guide/) +เรียนรู้วิธีสร้างเอกสาร PDF อย่างครบถ้วนด้วย Aspose.PDF ใน C# พร้อมตัวอย่างโค้ดและขั้นตอนที่ชัดเจน + ## แหล่งข้อมูลเพิ่มเติม - [Aspose.PDF สำหรับเอกสารประกอบ Net](https://docs.aspose.com/pdf/net/) diff --git a/pdf/thai/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/thai/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..b5441a3b6 --- /dev/null +++ b/pdf/thai/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-06 +description: สร้างเอกสาร PDF ด้วย C# โดยใช้ Aspose.PDF – เรียนรู้วิธีเพิ่มหน้าว่างใน + PDF, กล่องข้อความ, วิดเจ็ต, และบันทึก PDF อย่างรวดเร็ว. +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: th +og_description: สร้างเอกสาร PDF ด้วย C# และ Aspose.PDF คู่มือนี้แสดงวิธีเพิ่มหน้า + PDF ว่าง, กล่องข้อความ, วิดเจ็ต, และวิธีบันทึก PDF +og_title: สร้างเอกสาร PDF ด้วย Aspose.PDF – คอร์สสอน C# อย่างครบถ้วน +tags: +- pdf +- csharp +- aspose +- forms +title: สร้างเอกสาร PDF ด้วย Aspose.PDF – คู่มือ C# ฉบับเต็ม +url: /th/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# สร้างเอกสาร PDF ด้วย Aspose.PDF – คู่มือเต็ม C# + +เคยต้อง **สร้าง pdf document** ตั้งแต่ต้นในโปรเจกต์ .NET แล้วไม่รู้จะเริ่มจากตรงไหนหรือไม่? คุณไม่ได้อยู่คนเดียว; นักพัฒนาหลายคนเจออุปสรรคเดียวกันเมื่อต้องทำตามความต้องการแรกว่า “สร้าง PDF ที่สามารถกรอกข้อมูลได้โดยมี textbox เดียวกันบนสามหน้า”. ข่าวดีคือ? ด้วย Aspose.PDF คุณสามารถสร้าง PDF ที่ดูเป็นมืออาชีพได้ในไม่กี่บรรทัดโค้ด + +ในบทเรียนนี้เราจะเดินผ่านกระบวนการทั้งหมด: ตั้งแต่การเริ่มต้น PDF ใหม่, **เพิ่มหน้าเปล่า pdf**, แทรก **textbox**, ทำสำเนาโดยใช้ **widget** annotation, และสุดท้าย **บันทึก PDF** ลงดิสก์. เมื่อจบคุณจะได้ไฟล์ที่พร้อมใช้งานชื่อ *MultiWidgetField.pdf* พร้อมความเข้าใจว่าทำไมแต่ละขั้นตอนจึงสำคัญ + +## สิ่งที่คู่มือนี้ครอบคลุม + +- สิ่งที่ต้องเตรียมก่อนเริ่มเขียนโค้ดบรรทัดแรก +- การสร้างเอกสาร PDF อย่างเป็นขั้นตอนโดยใช้ Aspose.PDF สำหรับ .NET +- วิธีเพิ่มหน้าเปล่า, ฟิลด์ textbox, และ widget เพิ่มเติม +- เคล็ดลับการจัดการกับปัญหาที่พบบ่อย (เช่น การจัดหน้า, การชนชื่อฟิลด์) +- โปรแกรม C# เต็มรูปแบบที่คัดลอก‑วาง‑ได้ทันทีที่คุณสามารถรันได้วันนี้ + +ไม่มีลิงก์เอกสารภายนอก, ไม่มี “ดู API docs” แบบลัด—ทุกอย่างที่คุณต้องการอยู่ที่นี่ + +## สิ่งที่ต้องมีก่อนเริ่ม + +ก่อนจะลงมือทำ, ตรวจสอบว่าคุณมี: + +1. **.NET 6.0** (หรือเวอร์ชันใหม่กว่า) ติดตั้งบนเครื่องของคุณ +2. ไลเซนส์ **Aspose.PDF for .NET** ที่ใช้งานได้หรือคีย์ประเมินผลชั่วคราว +3. สภาพแวดล้อมการพัฒนา เช่น **Visual Studio 2022** หรือ **VS Code** พร้อมส่วนขยาย C# + +เท่านี้—ไม่มีอะไรต้องเตรียมเพิ่มเติม + +## ขั้นตอนที่ 1: เริ่มต้น Document และเพิ่มหน้าเปล่า + +สิ่งแรกที่ทำเมื่อ **create pdf document** ด้วยโปรแกรมคือสร้างอ็อบเจกต์ `Document`. คิดว่าเป็นการเปิดสมุดโน้ตใหม่ จากนั้นเพิ่มหน้าที่ต้องการ; ในตัวอย่างของเราจะเป็นสามหน้าว่าง + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**ทำไมต้องทำเช่นนี้:** Aspose.PDF จัดการหน้าเป็นคอลเลกชันแบบ zero‑based ภายใน, แต่ API สาธารณะของมันใช้ 1‑based, ดังนั้น `Pages[1]` คือหน้าที่คุณเพิ่งเพิ่มเป็นหน้าแรก การเพิ่มหน้าไว้ล่วงหน้าจะให้ “ผ้าใบ” สำหรับวางฟิลด์ฟอร์มต่อไป, และทำให้ประหยัดกว่าการแทรกหน้าตอนหลังที่เอกสารขยายใหญ่ขึ้น + +> **Pro tip:** หากต้องการหน้าเดียวเท่านั้น, สามารถข้ามลูปและเรียก `pdfDocument.Pages.Add()` เพียงครั้งเดียว การเพิ่มหลายหน้าในลูปทำให้โค้ดขยายได้ง่าย + +## ขั้นตอนที่ 2: กำหนดฟิลด์ TextBox บนหน้าแรก + +ตอนนี้เรามีแผ่นว่างสามแผ่นแล้ว, ให้ใส่ **textbox** ลงบนหน้าแรก `TextBoxField` เป็นองค์ประกอบฟอร์มที่ผู้ใช้สามารถพิมพ์ข้อความได้เมื่อเปิด PDF ด้วย Acrobat Reader หรือโปรแกรมดู PDF ที่รองรับฟอร์ม + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**ทำไมต้องกำหนดพิกัดสี่เหลี่ยม?** Aspose.PDF ใช้หน่วย point (1/72 นิ้ว). สี่เหลี่ยม `(100, 700, 300, 730)` จะวาง textbox ประมาณกึ่งกลางหน้า, กว้าง 200 pt และสูง 30 pt ปรับค่าตัวเลขเหล่านี้ให้เข้ากับเลย์เอาต์ของคุณ + +> **คำถามทั่วไป:** *ต้องตั้งค่า `Value` หรือไม่?* +> ไม่จำเป็น, เป็นค่าตัวเลือก. หากเว้นไว้จะเห็นฟิลด์ว่าง; การกำหนดค่าเริ่มต้นสามารถช่วยแนะนำผู้ใช้ได้ + +## ขั้นตอนที่ 3: เพิ่ม Widget Annotation สำหรับฟิลด์เดียวกันบนหน้า 2 และ 3 + +**widget** คือการแสดงผลของฟิลด์ฟอร์มบนหน้าเฉพาะ. โดยค่าเริ่มต้นฟิลด์จะแสดงเฉพาะบนหน้าที่สร้างไว้. เพื่อใช้ textbox เดียวกันบนหน้าต่าง ๆ, เราต้องแนบ `WidgetAnnotation` เพิ่มเติมเข้าไปในคอลเลกชัน `Widgets` ของฟิลด์ + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**ทำไมต้องใช้ widget?** หากไม่มี widget, ผู้ใช้จะเห็น textbox เพียงหน้า 1 แม้ว่าฟิลด์พื้นฐานจะมีอยู่แล้วก็ตาม. Widget ทำให้คุณสามารถแชร์ฟิลด์เดียวกันข้ามหลายหน้า, ทำให้ข้อความที่กรอกปรากฏบนทุกหน้าที่แสดงฟิลด์นั้น + +> **กรณีขอบ:** หากต้องการ textbox อยู่ที่ตำแหน่งต่างกันในแต่ละหน้า, เพียงเปลี่ยนค่า `Rectangle` ของแต่ละ widget + +## ขั้นตอนที่ 4: ลงทะเบียนฟิลด์กับ Form Collection ของ Document + +Aspose.PDF มีรีจิสทรีกลางของฟิลด์ฟอร์มทั้งหมด. การเพิ่มฟิลด์เข้าไปในคอลเลกชัน `Form` ทำให้ฟิลด์เป็นส่วนหนึ่งของโครงสร้างฟอร์มเชิงโต้ตอบของ PDF + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +อาร์กิวเมนต์ที่สอง (`"Comment"`) คือ **fully qualified name** ของฟิลด์. ต้องเป็นชื่อที่ไม่ซ้ำกันทั่วทั้งเอกสาร; หากซ้ำ Aspose จะโยนข้อยกเว้น + +## ขั้นตอนที่ 5: บันทึก PDF ที่ได้ – วิธีบันทึก PDF + +สุดท้าย เราจัดเก็บเอกสารในหน่วยความจำลงดิสก์. นี่คือส่วน **how to save pdf** ของบทเรียน + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**ทำไมต้องระบุพาธแบบ absolute?** การใช้พาธเต็มช่วยหลีกเลี่ยงความสับสนเกี่ยวกับ working directory, โดยเฉพาะเมื่อรันโปรแกรมจากดีบักเกอร์ของ Visual Studio. หากต้องการใช้พาธ relative, เพียงตรวจสอบให้โฟลเดอร์มีอยู่ก่อนเรียก `Save` + +### ผลลัพธ์ที่คาดหวัง + +เปิด *MultiWidgetField.pdf* ด้วย Adobe Acrobat Reader. คุณจะเห็น textbox เดียวกันบนหน้า 1, 2, และ 3. พิมพ์ข้อความใดหน้าหนึ่ง—ข้อความจะปรากฏทันทีบนหน้าที่เหลือเพราะใช้ฟิลด์เดียวกัน + +![Create PDF Document example showing a textbox on three pages](https://example.com/placeholder-image.png "Create PDF Document example") + +*ข้อความแทนภาพ: ตัวอย่างการสร้างเอกสาร PDF แสดง textbox บนสามหน้า.* + +## ตัวอย่างเต็มพร้อมรัน + +ด้านล่างเป็นโปรแกรมสมบูรณ์ที่คุณสามารถคัดลอกไปใส่ในโปรเจกต์คอนโซลใหม่ (`dotnet new console`) แล้วรันได้ ทุกขั้นตอนเรียงลำดับแล้ว, โค้ดมีคอมเมนต์เพื่อความชัดเจน + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +รันโปรแกรม, ไปที่ `C:\Temp\`, แล้วเปิด PDF ที่สร้างขึ้น. คุณจะเห็น textbox สามอันที่เหมือนกันพร้อมรับข้อมูลจากผู้ใช้ + +## ความแปรผันทั่วไป & กรณีขอบ + +| สถานการณ์ | สิ่งที่ต้องเปลี่ยน | เหตุผล | +|----------|----------------|-----| +| **ขนาด textbox แตกต่างในแต่ละหน้า** | ปรับค่า `Rectangle` ของแต่ละ `WidgetAnnotation` | ทำให้ฟิลด์พอดีกับเลย์เอาต์ที่หลากหลาย | +| **ฟิลด์อ่าน‑อย่างเดียว** | ตั้ง `commentField.ReadOnly = true;` | ป้องกันผู้ใช้แก้ไขเนื้อหาหลังจากกรอกครั้งแรก | +| **textbox หลายบรรทัด** | ตั้ง `commentField.Multiline = true;` และเพิ่มความสูงของสี่เหลี่ยม | รองรับคอมเมนต์ยาวโดยไม่ต้องเลื่อน | +| **เพิ่มฟิลด์ที่สอง** | สร้าง `TextBoxField` (หรือ `FormField` ใด ๆ) ใหม่และทำขั้นตอน 2‑4 อีกครั้งโดยใช้ชื่อใหม่ | สามารถเก็บข้อมูลหลายรายการใน PDF เดียวกันได้ | + +## เคล็ดลับระดับมืออาชีพ & สิ่งที่ควรหลีกเลี่ยง + +- **การจัดหน้า (Page Indexing):** จำไว้ว่า `pdfDocument.Pages[1]` คือหน้าแรก, ไม่ใช่ `[0]`. การสลับใช้ดัชนี 0‑based กับ 1‑based จะทำให้เกิดข้อผิดพลาด “Index out of range” +- **การชนชื่อฟิลด์:** ฟิลด์สองตัวไม่สามารถใช้ชื่อเต็มเดียวกันได้. หากเจอข้อผิดพลาดเกี่ยวกับชื่อซ้ำ, ตรวจสอบสตริงที่ส่งให้ `Form.Add` อีกครั้ง +- **License vs. Evaluation:** เวอร์ชันประเมินผลจะใส่ลายน้ำบนทุกหน้า. ใช้ไลเซนส์ที่ถูกต้องเพื่อเอาลายน้ำออกในสภาพการผลิต +- **ประสิทธิภาพ:** การเพิ่มหลายร้อยหน้าในลูปไม่มีปัญหา, แต่หากต้องสร้าง PDF ขนาดมหาศาล (หลายพันหน้า) ควรพิจารณาใช้ + +{{< /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-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/thai/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..d2e776da4 --- /dev/null +++ b/pdf/thai/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,219 @@ +--- +category: general +date: 2026-03-06 +description: สร้างเอกสาร PDF ด้วย Aspose.PDF ใน C#. เรียนรู้วิธีเพิ่มหน้า PDF, วาดสี่เหลี่ยมใน + PDF, เพิ่มรูปทรงใน PDF, และควบคุมความหนาของเส้นขอบสี่เหลี่ยม—ทั้งหมดในบทเรียนเดียว +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: th +og_description: สร้างเอกสาร PDF ด้วย C# และ Aspose.PDF บทเรียนนี้แสดงวิธีเพิ่มหน้า + PDF, วาดสี่เหลี่ยมใน PDF, เพิ่มรูปทรงใน PDF, และตั้งความหนาของเส้นขอบสี่เหลี่ยม. +og_title: สร้างเอกสาร PDF ด้วย Aspose.PDF – คู่มือฉบับสมบูรณ์ +tags: +- Aspose.PDF +- C# +- PDF generation +title: สร้างเอกสาร PDF ด้วย Aspose.PDF – คู่มือทีละขั้นตอน +url: /th/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# สร้างเอกสาร PDF ด้วย Aspose.PDF – คู่มือขั้นตอนต่อขั้นตอน + +เคยต้องการ **สร้างเอกสาร PDF** ด้วยโปรแกรมและไม่แน่ใจว่าจะเริ่มต้นอย่างไรหรือไม่? คุณไม่ได้อยู่คนเดียว—นักพัฒนาหลายคนเจออุปสรรคเดียวกันเมื่อแอปของพวกเขาต้องสร้างใบแจ้งหนี้ รายงาน หรือใบรับรองแบบอัตโนมัติ + +ข่าวดีคือด้วย Aspose.PDF for .NET คุณสามารถทำได้ในไม่กี่บรรทัดเดียว และคุณจะได้เรียนรู้วิธี **add page PDF**, **draw rectangle PDF**, **add shape PDF**, และปรับ **rectangle border thickness** พร้อมกันไปด้วย ลุยกันเลย + +## สิ่งที่คุณจะสร้าง + +เมื่อจบคู่มือนี้ คุณจะมีแอปคอนโซล C# ที่ทำงานเต็มรูปแบบที่: + +1. **Creates a PDF document** จากศูนย์. +2. **Adds a page PDF** ไปยังเอกสาร. +3. **Draws a rectangle PDF** บนหน้าดังกล่าว. +4. **Validates** ว่า rectangle อยู่ภายในขอบของหน้า (**add shape PDF** ขั้นตอน). +5. ตั้งค่า **rectangle border thickness** ที่กำหนดเอง. +6. บันทึกผลลัพธ์เป็น `ShapeValidated.pdf`. + +ไม่มีบริการภายนอก ไม่มีการกำหนดค่าที่ซับซ้อน—เพียง C# ธรรมดาและ Aspose.PDF. + +### ข้อกำหนดเบื้องต้น + +- .NET 6.0 หรือใหม่กว่า (โค้ดนี้ทำงานได้กับ .NET Framework 4.6+ ด้วย) +- การอ้างอิงไปยังแพ็กเกจ NuGet `Aspose.Pdf` คุณสามารถเพิ่มได้ผ่าน: + +```bash +dotnet add package Aspose.Pdf +``` + +- เครื่องมือแก้ไขข้อความหรือ IDE—Visual Studio, VS Code, Rider, หรืออะไรก็ตามที่คุณชอบ + +> **Pro tip:** หากคุณใช้เครื่องของบริษัท ตรวจสอบให้แน่ใจว่า NuGet feed ไม่ถูกบล็อก; มิฉะนั้นคุณจะได้รับข้อผิดพลาด “Package not found” + +## สร้างเอกสาร PDF – เริ่มต้น Document + +ขั้นตอนแรกคือการสร้างอ็อบเจ็กต์ `Document` คิดว่าเป็นผืนผ้าใบเปล่าที่ทุกหน้าและรูปทรงจะอยู่บนมัน + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +ทำไมเราต้องการอ็อบเจ็กต์นี้? มันเป็นตัวแทนของไฟล์ PDF ทั้งหมดในหน่วยความจำ ให้เราเข้าถึงคอลเลกชัน `Pages` เมตาดาต้า และการตั้งค่าความปลอดภัย เมื่อคุณมี Document แล้ว คุณสามารถเริ่มเพิ่มหน้า, ข้อความ, รูปภาพ, และกราฟิกเวกเตอร์ได้ + +## เพิ่มหน้าใน PDF (add page pdf) + +PDF ที่ไม่มีหน้าเป็นไฟล์ว่างเปล่า—ไม่มีประโยชน์ การเพิ่มหน้าเป็นเรื่องง่าย และคุณสามารถปรับขนาดได้หากต้องการ ที่นี่เราใช้ขนาด A4 เริ่มต้น + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +เมธอด `Add()` จะคืนค่าอินสแตนซ์ `Page` ใหม่ที่เป็นส่วนหนึ่งของคอลเลกชัน `Pages` อยู่แล้ว ทำให้คุณสามารถเริ่มวาดบนมันได้ทันที ในสถานการณ์จริงคุณอาจวนลูปข้อมูลและเพิ่มหลายสิบหน้าต่อกัน; การเรียกเดียวนี้ทำงานได้ในทุกการวนลูป + +## วาดรูปสี่เหลี่ยม (draw rectangle pdf) + +ต่อไปเป็นส่วนของภาพ: สี่เหลี่ยมที่มีเส้นขอบมองเห็นได้ นี่คือจุดที่ **draw rectangle pdf** เข้ามาใช้งาน + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +A couple of things to note: + +- `Rect` ใช้หน่วย point (1 pt ≈ 1/72 inch). พิกัดกำหนดมุมล่างซ้ายและมุมบนขวา ทำให้คุณควบคุมความกว้างและความสูงได้อย่างแม่นยำ. +- `BorderInfo` ให้คุณระบุว่าด้านใดบ้างที่ต้องมีเส้นและความหนาของเส้นเป็นเท่าไหร่ ที่นี่เราตั้งค่าเส้น 2 point ให้กับ **all** ด้าน ทำให้สี่เหลี่ยมดูเรียบและสม่ำเสมอ + +## ตรวจสอบการวางรูปทรง (add shape pdf) + +ก่อนที่เราจะใส่สี่เหลี่ยมลงในหน้า ควรตรวจสอบว่ามันอยู่ภายในพื้นที่พิมพ์ของหน้า Aspose.PDF มีเมธอดช่วยเหลือที่สะดวกสำหรับเรื่องนี้ + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +ทำไมต้องทำ? หากคุณวางรูปทรงออกมานอกหน้าจอบางส่วน ตัวดู PDF อาจตัดส่วนนั้น ทำให้ผู้ใช้สับสน เงื่อนไขป้องกัน **add shape pdf** นี้ทำให้คุณเพิ่มเนื้อหาเฉพาะที่มองเห็นได้เต็มที่ + +## บันทึก PDF (add page pdf) + +สุดท้าย เราจะบันทึกเอกสารในหน่วยความจำลงดิสก์ คุณสามารถเลือกตำแหน่งใดก็ได้ที่คุณมีสิทธิ์เขียน + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +หลังจากรันโปรแกรม เปิดไฟล์ `ShapeValidated.pdf`—คุณควรเห็นหน้าหนึ่งหน้าที่มีสี่เหลี่ยมขอบเรียบอยู่ตรงกลางโดยประมาณ + +## ผลลัพธ์ที่คาดหวัง + +เมื่อคุณเปิด PDF ที่สร้างขึ้น คุณจะเห็น: + +- หน้าขนาด A4 หนึ่งหน้า. +- สี่เหลี่ยมที่มุมล่างซ้ายเริ่มที่ (50 pt, 50 pt) และมุมบนขวาจบที่ (600 pt, 800 pt). +- เส้นขอบ **2‑point thick** รอบสี่เหลี่ยม + +หากคอนโซลแสดงข้อความ “PDF created successfully!” คุณจะรู้ว่าโค้ดทำงานสำเร็จโดยไม่ผ่านการตรวจสอบขอบเขต + +![แผนภาพแสดงวิธีสร้างเอกสาร PDF ด้วย Aspose.PDF](https://example.com/diagram-create-pdf.png "สร้างเอกสาร PDF – ภาพรวมเชิงภาพ") + +*ข้อความ alt ของรูปภาพรวมถึงคีย์เวิร์ดหลักเพื่อให้เป็นไปตามข้อกำหนด SEO* + +## คำถามทั่วไปและกรณีขอบ + +### ถ้าต้องการขนาดหน้าต่างอื่น? + +แทนที่หน้าดีฟอลต์ด้วยขนาดที่กำหนดเอง: + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### จะเปลี่ยนสีขอบอย่างไร? + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### สามารถเพิ่มหลายรูปบนหน้าเดียวได้หรือไม่? + +ได้เลย เพียงทำซ้ำบล็อก **add shape pdf** ด้วย `RectangleShape` ใหม่ (หรือคลาสย่อย `Shape` อื่น) และปรับพิกัด `Rect` ตามต้องการ + +### ถ้าสี่เหลี่ยมเกินขอบหน้า จะทำอย่างไร? + +`IsShapeWithinBounds` จะคืนค่า `false`. ในโค้ดจริงคุณอาจต้องการปรับขนาดรูปอัตโนมัติ: + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +## สรุป + +เราได้เดินผ่านวงจรทั้งหมดของ **creating a PDF document** ด้วย Aspose.PDF: + +1. เริ่มต้น `Document`. +2. **Add a page PDF** ด้วย `Pages.Add()`. +3. **Draw a rectangle PDF** ผ่าน `RectangleShape`. +4. **Add shape PDF** หลังจากยืนยันว่ามันอยู่ภายในหน้า. +5. ควบคุม **rectangle border thickness** ด้วย `BorderInfo`. +6. บันทึกไฟล์. + +นี่คือกระบวนการทั้งหมดในโค้ดไม่เกิน 60 บรรทัด + +## ขั้นตอนต่อไป? + +- **Add text**: ใช้ `TextFragment` เพื่อวางหัวข้อหรือป้ายกำกับภายในสี่เหลี่ยม. +- **Insert images**: คลาส `Image` ช่วยฝังโลโก้หรือแผนภูมิ. +- **Create tables**: เหมาะสำหรับใบแจ้งหนี้หรือรายงานข้อมูล. +- **Apply security**: ป้องกัน PDF ด้วยรหัสผ่านหากมีข้อมูลที่สำคัญ. + +แต่ละหัวข้อเหล่านี้ต่อยอดจากพื้นฐานที่อธิบายไว้ที่นี่ ทำให้คุณพร้อมสำรวจสถานการณ์การสร้าง PDF ขั้นสูงต่อไป + +### อย่าหยุดทดลอง + +อย่าจบที่สี่เหลี่ยมเดียว—ลองเล่นกับรูปทรง สี และสไตล์เส้นที่ต่างกัน Aspose.PDF API มีความหลากหลาย ยิ่งคุณทดลองยิ่งรู้สึกสบายใจ หากเจอปัญหา เอกสารอย่างเป็นทางการของ Aspose เป็นคู่มือที่ดี แต่จำไว้ว่าโค้ดด้านบนเป็นโซลูชันที่สมบูรณ์พร้อมคัดลอก‑วางและสามารถรันได้ทันที + +ขอให้เขียนโค้ดอย่างสนุกสนานและ PDF ของคุณแสดงผลตรงตามที่คุณจินตนาการ! + +{{< /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 0084ed837..66dbe3b89 100644 --- a/pdf/thai/net/document-manipulation/_index.md +++ b/pdf/thai/net/document-manipulation/_index.md @@ -195,7 +195,7 @@ เรียนรู้วิธีแบ่งหน้า PDF ออกเป็นไฟล์แต่ละไฟล์อย่างมีประสิทธิภาพโดยใช้ Aspose.PDF สำหรับ .NET ด้วยคู่มือฉบับสมบูรณ์นี้ พัฒนาทักษะการจัดการเอกสารของคุณวันนี้ ### [วิธีแยกหน้า PDF โดยใช้ Aspose.PDF สำหรับ .NET: คู่มือฉบับสมบูรณ์](./split-pdf-pages-aspose-pdf-net/) -เรียนรู้วิธีแยกหน้าเฉพาะจาก PDF ออกเป็นไฟล์แยกต่างหากโดยใช้ Aspose.PDF สำหรับ .NET คู่มือนี้ครอบคลุมถึงการจัดการและการตั้งค่าสตรีม +เรียนรู้วิธีแยกหน้า PDF โดยใช้ Aspose.PDF สำหรับ .NET ด้วยคู่มือที่ครอบคลุมนี้ เชี่ยวชาญการจัดการเอกสารใน C# และเพิ่มประสิทธิภาพเวิร์กโฟลว์ของคุณ ### [วิธีแยกหน้า PDF โดยใช้ Aspose.PDF สำหรับ .NET: คำแนะนำทีละขั้นตอน](./split-pdf-pages-aspose-pdf-net-guide/) เรียนรู้วิธีแยกหน้า PDF โดยใช้ Aspose.PDF สำหรับ .NET ด้วยคู่มือที่ครอบคลุมนี้ เชี่ยวชาญการจัดการเอกสารใน C# และเพิ่มประสิทธิภาพเวิร์กโฟลว์ของคุณ @@ -285,7 +285,7 @@ เรียนรู้การจัดการ PDF อย่างเชี่ยวชาญด้วย Aspose.PDF สำหรับ .NET เรียนรู้วิธีโหลด บันทึก แยกมิติ และกำหนดค่าการซูมอย่างมีประสิทธิภาพ ### [แทนที่ข้อความแรกที่เกิดขึ้นใน PDF โดยใช้ Aspose.PDF สำหรับ .NET - คู่มือที่ครอบคลุม](./replace-first-text-occurrence-aspose-pdf-net/) -เรียนรู้วิธีการแทนที่ข้อความแรกใน PDF โดยใช้ Aspose.PDF สำหรับ .NET คู่มือนี้ครอบคลุมถึงการตั้งค่า ตัวอย่างโค้ด และการใช้งานจริง +เรียนรู้วิธีการแทนที่ข้อความแรกใน PDF โดยใช้ Aspose.PDF สำหรับ .NET คู่มือนี้ครอบคลุมถึงการตั้งค่า ตัวอย่างโค้ดและการใช้งานจริง ### [ปรับขนาดเนื้อหา PDF ด้วย Aspose.PDF สำหรับ .NET](./resize-pdf-contents-aspose-pdf-dotnet/) บทช่วยสอนเกี่ยวกับโค้ดสำหรับ Aspose.PDF Net @@ -294,7 +294,7 @@ เรียนรู้วิธีการหมุนหน้า PDF และดึงข้อมูลขนาดอย่างมีประสิทธิภาพโดยใช้ Aspose.PDF สำหรับ .NET พัฒนาทักษะการจัดการเอกสารของคุณด้วยคู่มือฉบับสมบูรณ์นี้ ### [หมุนหน้า PDF โดยใช้ Aspose.PDF ใน .NET: คู่มือสำหรับนักพัฒนา](./rotate-pdf-pages-aspose-pdf-dotnet/) -เรียนรู้วิธีหมุนหน้า PDF ด้วย Aspose.PDF สำหรับ .NET คู่มือนี้ครอบคลุมถึงการหมุนหน้าเฉพาะตามองศาและมีตัวอย่างโค้ดสำหรับการจัดการเอกสารอย่างมีประสิทธิภาพ +เรียนรู้วิธีหมุนหน้า PDF ด้วย Aspose.PDF สำหรับ .NET คู่มือนี้ครอบคลุมถึงการหมวนหน้าเฉพาะตามองศาและมีตัวอย่างโค้ดสำหรับการจัดการเอกสารอย่างมีประสิทธิภาพ ### [แยกหน้า PDF จากหน้าเฉพาะโดยใช้ .NET Streams และ Aspose.PDF](./split-pdf-pages-with-net-streams-aspose-pdf/) เรียนรู้วิธีแยกไฟล์ PDF จากหน้าเฉพาะอย่างมีประสิทธิภาพโดยใช้สตรีม .NET พร้อมด้วย Aspose.PDF เพื่อเพิ่มประสิทธิภาพการจัดการเอกสารในแอปพลิเคชันของคุณ @@ -311,13 +311,8 @@ ### [คู่มือฉบับสมบูรณ์สำหรับการจัดการ PDF ด้วย Aspose.PDF .NET: โหลด บันทึก และแทนที่ข้อความอย่างมีประสิทธิภาพ](./master-pdf-manipulation-aspose-pdf-net/) เรียนรู้วิธีการจัดการ PDF อย่างเชี่ยวชาญโดยใช้ Aspose.PDF สำหรับ .NET คู่มือนี้ครอบคลุมถึงการโหลด การบันทึก และการแทนที่ข้อความใน PDF ซึ่งเหมาะสำหรับนักพัฒนาที่ต้องการประสิทธิภาพ -## แหล่งข้อมูลเพิ่มเติม - -- [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# ด้วยคู่มือขั้นตอนเต็มรูปแบบนี้ {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/thai/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/thai/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..b43239162 --- /dev/null +++ b/pdf/thai/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-03-06 +description: เรียนรู้วิธีทำการลบข้อมูลใน PDF ด้วย Aspose PDF ใน C#. คู่มือแบบขั้นตอนนี้แสดงวิธีโหลดเอกสาร + PDF ด้วย C#, เข้าถึงหน้า PDF หน้าแรก, และลบรูปภาพออกจาก PDF. +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: th +og_description: วิธีทำลบข้อมูลใน PDF อย่างรวดเร็วด้วย Aspose PDF ใน C# โหลดเอกสาร + PDF เข้าถึงหน้าแรกของ PDF แล้วลบรูปภาพออกจาก PDF เพียงไม่กี่บรรทัดของโค้ด. +og_title: วิธีลบข้อมูลใน PDF ด้วย C# – บทเรียน Aspose PDF +tags: +- Aspose PDF +- C# +- PDF Redaction +title: วิธีลบข้อมูลใน PDF ด้วย C# และ Aspose PDF – คู่มือฉบับสมบูรณ์ +url: /th/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีลบข้อมูลใน PDF ด้วย C# และ Aspose PDF – คู่มือฉบับสมบูรณ์ + +เคยสงสัย **วิธีลบข้อมูลใน PDF** โดยไม่ต้องเสียเวลาไหม? บางทีคุณอาจได้รับสัญญาที่ซ่อนโลโก้ที่เป็นความลับ, หรือรายงานที่ยังคงแสดงรูปภาพตัวแทนที่คุณต้องการลบออก ในช่วงเวลานั้นคุณต้องการวิธีที่เชื่อถือได้และทำแบบโปรแกรมเมติกเพื่อกำจัดเนื้อหานั้น—โดยไม่ต้องใช้ Acrobat แบบแมนนวล + +ในบทเรียนนี้เราจะพาคุณผ่านโซลูชันสั้น ๆ ที่ทำงานครบวงจร **โหลด PDF document C#**, **เข้าถึงหน้า PDF แรก**, แล้ว **ลบรูปภาพจาก PDF** ด้วยไลบรารี **Aspose PDF** ที่ทรงพลัง เมื่อจบคุณจะได้ไฟล์ PDF ที่ลบข้อมูลแล้วพร้อมแจกจ่าย, และคุณจะเข้าใจว่าทำไมแต่ละบรรทัดของโค้ดจึงสำคัญ + +> **เคล็ดลับ:** Aspose PDF ทำงานกับ .NET Framework 4.6+ และ .NET Core 3.1+ ดังนั้นคุณจะครอบคลุมไม่ว่าจะใช้ Windows, Linux หรือ macOS + +--- + +![how to redact pdf example](redact-pdf-before-after.png){alt="ตัวอย่างการลบข้อมูลใน PDF"} + +## สิ่งที่คุณต้องเตรียม + +- **Aspose.PDF for .NET** (แพ็คเกจ NuGet ล่าสุด) +- สภาพแวดล้อมการพัฒนา **C#** (Visual Studio, Rider หรือ VS Code) +- ตัวอย่าง PDF ที่มีทรัพยากรรูปภาพที่คุณต้องการลบ (เราจะเรียกมันว่า `Sensitive.pdf`) + +ไม่มีเครื่องมือของบุคคลที่สามเพิ่มเติม, ไม่มี OCR, เพียงแค่โค้ดเท่านั้น + +--- + +## ขั้นตอนที่ 1: โหลด PDF Document C# – การเริ่มต้น + +ก่อนที่คุณจะลบข้อมูลใด ๆ, คุณต้องโหลดไฟล์เข้าสู่หน่วยความจำ คลาส `Document` เป็นจุดเริ่มต้นของทุกการทำงานกับ Aspose PDF + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**ทำไมจึงสำคัญ:** +`Document` จะวิเคราะห์โครงสร้าง PDF ทั้งหมด, สร้างโมเดลวัตถุที่ให้คุณจัดการหน้า, ทรัพยากร, และ annotation หากไฟล์ไม่สามารถโหลดได้ (เส้นทางผิด, PDF เสียหาย) จะเกิดข้อยกเว้นทันที—ทำให้คุณรู้ตั้งแต่แรกว่ามีปัญหา + +### ข้อผิดพลาดที่พบบ่อย + +> *“ฉันได้รับ `FileNotFoundException` แม้ว่าไฟล์จะมีอยู่จริง”* +> ตรวจสอบให้แน่ใจว่าเส้นทางเป็นแบบ absolute หรือไดเรกทอรีทำงานของโปรเจกต์ตรงกับตำแหน่งของ `Sensitive.pdf` การใช้ `Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")` สามารถช่วยหลีกเลี่ยงปัญหาเส้นทางแบบ relative ได้ + +--- + +## ขั้นตอนที่ 2: เข้าถึงหน้า PDF แรก – ที่ที่รูปภาพอยู่ + +รูปภาพถูกเก็บเป็นทรัพยากรต่อหน้า ในหลาย ๆ PDF ที่เรียบง่าย หน้าแรกมักเป็นสาเหตุ ดังนั้นเราจะดึงมันออกมา + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**ทำไมจึงสำคัญ:** +Aspose PDF ใช้ดัชนีเริ่มจาก 1 สำหรับหน้า ซึ่งค่อนข้างแปลกเมื่อเทียบกับคอลเลกชัน .NET ส่วนใหญ่ การเข้าถึงหน้าที่ผิดอาจทำให้คุณลบข้อมูลผิดหน้า—หรือแย่กว่า, ทิ้งรูปภาพที่เป็นความลับไว้ + +### พิจารณากรณีขอบ + +หากเอกสารของคุณไม่มีหน้า (PDF ว่าง) การเรียก `pdfDocument.Pages[1]` จะทำให้เกิด `IndexOutOfRangeException` การตรวจสอบอย่างรวดเร็วสามารถช่วยได้: + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +--- + +## ขั้นตอนที่ 3: ลบรูปภาพจาก PDF – ลบทรัพยากร + +Aspose PDF ให้คุณลบทรัพยากรตามชื่อ รูปภาพส่วนใหญ่จะมีชื่อ `Im1`, `Im2` เป็นต้น, แต่คุณสามารถตรวจสอบ `firstPage.Resources.Images` เพื่อยืนยันได้ + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**ทำไมจึงสำคัญ:** +`RedactResource` จะลบรูปภาพ *และ* การอ้างอิงใด ๆ ที่หน้าใช้, ทำให้ช่องว่างที่เหลือเป็นพื้นที่ว่างแทนการแสดงลิงก์ที่เสียหาย เป็นวิธีมาตรฐานของ PDF ที่ทำความสะอาดเนื้อหา + +### วิธีหาชื่อรูปภาพที่ถูกต้อง + +หากคุณไม่แน่ใจว่ารูปภาพชื่อ `"Im1"` หรือไม่: + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +รันสคริปต์นี้, ตรวจสอบผลลัพธ์ในคอนโซล, แล้วแทนที่ `"Im1"` ด้วยคีย์ที่คุณเห็น + +--- + +## ขั้นตอนที่ 4: บันทึก PDF ที่ลบข้อมูลแล้ว – เสร็จสิ้นงาน + +เมื่อรูปภาพที่ไม่ต้องการหายไปแล้ว, ให้บันทึกการเปลี่ยนแปลงกลับไปยังดิสก์ + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**ทำไมจึงสำคัญ:** +การบันทึกเป็นไฟล์ **ใหม่** จะทำให้ไฟล์ต้นฉบับไม่ถูกแก้ไข—เป็นเครือข่ายความปลอดภัยในกรณีที่ต้องย้อนกลับ หากต้องการเขียนทับ ให้ชี้ `Save` ไปที่เส้นทางเดิม, แต่ต้องระวังว่าการดำเนินการนี้ไม่สามารถย้อนกลับได้ + +### การตรวจสอบผลลัพธ์ + +เปิด `Redacted.pdf` ด้วยโปรแกรมดู PDF ใด ๆ รูปภาพควรหายไปและพื้นที่นั้นเป็นสีขาว, ส่วนเอกสารที่เหลือควรเหมือนต้นฉบับ หากเลย์เอาต์ของหน้าดูเหมือนเลื่อน, ตรวจสอบว่าคุณลบเฉพาะทรัพยากรที่ต้องการและไม่ได้ลบ XObject ที่ใช้ร่วมกัน + +--- + +## ตัวอย่างทำงานเต็มรูปแบบ + +รวมทุกขั้นตอนเข้าด้วยกัน นี่คือโปรแกรมที่พร้อมรัน: + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**ผลลัพธ์ที่คาดหวัง** (ในคอนโซล): + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +เมื่อคุณเปิด `Redacted.pdf`, รูปภาพที่เคยเป็น `Im1` จะหายไป, เหลือหน้าเดียวที่สะอาด + +--- + +## คำถามที่พบบ่อย + +### วิธีนี้ทำงานกับ PDF ที่เข้ารหัสหรือไม่? + +หาก PDF ต้นฉบับมีการป้องกันด้วยรหัสผ่าน, ให้ส่งรหัสผ่านไปยังคอนสตรัคเตอร์ของ `Document`: + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### ถ้ารูปภาพปรากฏบนหลายหน้า? + +ให้วนลูปผ่านแต่ละหน้าและเรียก `RedactResource` ด้วยชื่อรูปภาพเดียวกัน (หรือค้นหาชื่อแต่ละหน้า) ตัวอย่าง: + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### สามารถลบข้อความด้วยวิธีเดียวกันได้หรือไม่? + +ได้—ใช้ `page.Contents.RedactText("confidential")` หรือใช้คลาส `Redactor` สำหรับแพทเทิร์นที่ซับซ้อนกว่า นั่นเป็นบทเรียนแยกอีกเรื่องหนึ่ง, แต่หลักการก็คล้ายกับที่ทำกับรูปภาพ + +--- + +## สรุป – สิ่งที่เราได้ทำ + +เราได้ตอบ **วิธีลบข้อมูลใน PDF** แบบโปรแกรมเมติกโดย: + +1. **โหลด PDF document C#** ด้วย Aspose PDF +2. **เข้าถึงหน้า PDF แรก** เพื่อหาทรัพยากรเป้าหมาย +3. **ลบรูปภาพจาก PDF** ผ่าน `RedactResource` +4. **บันทึก** เวอร์ชันที่ทำความสะอาดอย่างปลอดภัย + +วิธีนี้เร็ว, ทำซ้ำได้, และทำงานได้ในงานแบตช์—เหมาะสำหรับสายงานการปฏิบัติตามกฎระเบียบหรือการสร้างรายงานอัตโนมัติ + +ถ้าคุณพร้อมจะก้าวต่อไป, ลองสำรวจ: + +- **การลบข้อมูลแบบแบตช์** สำหรับโฟลเดอร์ PDF ทั้งหมด +- **การลบข้อความ** ด้วย regex ผ่าน `Redactor` +- **การใส่ลายน้ำ** หลังการลบข้อมูลเพื่อบ่งบอกว่า “ผ่านการทำความสะอาด” + +ลองใช้ดู, ปรับตรรกะชื่อรูปภาพให้เหมาะกับไฟล์ของคุณ, + +{{< /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/performance-optimization/_index.md b/pdf/thai/net/performance-optimization/_index.md index f6c6e0e3f..a69003cec 100644 --- a/pdf/thai/net/performance-optimization/_index.md +++ b/pdf/thai/net/performance-optimization/_index.md @@ -50,6 +50,9 @@ ### [ยกเลิกการฝังแบบอักษรในไฟล์ PDF โดยใช้ Aspose.PDF สำหรับ .NET: ลดขนาดไฟล์และปรับปรุงประสิทธิภาพ](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) เรียนรู้วิธีแยกแบบอักษรออกจากไฟล์ PDF โดยใช้ Aspose.PDF สำหรับ .NET เพิ่มประสิทธิภาพ PDF ลดขนาดไฟล์ และปรับปรุงเวลาในการโหลดด้วยคู่มือทีละขั้นตอนนี้ +### [วิธีบีบอัด PDF ด้วย Aspose.Pdf – คู่มือด่วน](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) +เรียนรู้ขั้นตอนการบีบอัดไฟล์ PDF อย่างรวดเร็วด้วย Aspose.Pdf เพื่อประหยัดพื้นที่และเพิ่มประสิทธิภาพ + ## แหล่งข้อมูลเพิ่มเติม - [Aspose.PDF สำหรับเอกสารประกอบ Net](https://docs.aspose.com/pdf/net/) diff --git a/pdf/thai/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/thai/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..af37ee156 --- /dev/null +++ b/pdf/thai/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,201 @@ +--- +category: general +date: 2026-03-06 +description: เรียนรู้วิธีบีบอัด PDF อย่างทันทีด้วย Aspose.Pdf คู่มือนี้แสดงวิธีลดขนาดไฟล์ + PDF ด้วยการบีบอัด PDF แบบไม่มีการสูญเสียคุณภาพ +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: th +og_description: วิธีบีบอัด PDF ด้วย Aspose.Pdf? ทำตามบทแนะนำขั้นตอนต่อขั้นตอนนี้เพื่อทำให้ขนาดไฟล์ + PDF ลดลง, บรรลุการบีบอัด PDF แบบไม่มีการสูญเสีย, และบันทึกไฟล์ PDF ที่ผ่านการปรับแต่งแล้ว +og_title: วิธีบีบอัด PDF ด้วย Aspose.Pdf – คู่มือเร็ว +tags: +- pdf +- aspnet +- csharp +title: วิธีบีบอัด PDF ด้วย Aspose.Pdf – คู่มือด่วน +url: /th/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีบีบอัด pdf ด้วย Aspose.Pdf – คู่มือด่วน + +เคยสงสัยไหมว่า **how to compress pdf** อย่างไรโดยไม่ทำให้ไฟล์กลายเป็นภาพเบลอ? คุณไม่ได้เป็นคนเดียว นักพัฒนาส่วนใหญ่มักเจออุปสรรคเมื่อจำเป็นต้อง **reduce pdf file size** สำหรับแนบอีเมล, อัปโหลดเว็บ, หรือจำกัดพื้นที่จัดเก็บ, แต่กังวลเรื่องคุณภาพภาพสูญหาย. + +ในบทแนะนำนี้ เราจะพาคุณผ่านตัวอย่างที่สมบูรณ์และพร้อมรันที่แสดงให้เห็นอย่างชัดเจนว่า **how to compress pdf** อย่างไรโดยใช้ตัวเพิ่มประสิทธิภาพในตัวของ Aspose.Pdf. เมื่อจบคุณจะรู้วิธี **shrink pdf file size**, ทำให้ภาพของคุณคมชัดด้วย **lossless pdf compression**, และสุดท้าย **save optimized pdf** ที่ทำงานได้ดีกับโปรแกรมอ่านใดก็ได้. + +## สิ่งที่คุณจะได้เรียนรู้ + +- โหลด PDF ขนาดใหญ่ (เช่น PDF ที่บรรจุภาพความละเอียดสูง) เข้าหน่วยความจำ. +- ใช้ตัวเพิ่มประสิทธิภาพของ Aspose.Pdf ด้วยการตั้งค่า lossless เริ่มต้น. +- บันทึกผลลัพธ์เป็นไฟล์ใหม่ที่มีขนาดเล็กลง. +- เคล็ดลับการปรับแต่งการบีบอัดหากต้องการบีบให้กระชับยิ่งขึ้น. + +ไม่มีเครื่องมือภายนอก ไม่มีเทคนิคบรรทัดคำสั่งที่ลึกลับ—เพียงโค้ด C# ที่เรียบง่ายและคำอธิบายที่ชัดเจน. + +## ข้อกำหนดเบื้องต้น + +| ข้อกำหนด | ทำไมจึงสำคัญ | +|-------------|----------------| +| .NET 6.0 หรือใหม่กว่า (หรือ .NET Framework 4.6+) | Aspose.Pdf รองรับทั้งสอง; เวอร์ชันรันไทม์ที่ใหม่กว่าให้ประสิทธิภาพดีกว่า. | +| Aspose.Pdf for .NET NuGet package (`Aspose.Pdf`) | `Document` class อยู่ที่นี่. | +| PDF ที่มีภาพขนาดใหญ่ (เช่น `HeavyImages.pdf`) | ให้คุณมีไฟล์ที่จับต้องได้เพื่อทำการบีบ. | +| Visual Studio, Rider, หรือเครื่องมือแก้ไข C# ใดก็ได้ที่คุณชอบ | ความสะดวกสบายเป็นสิ่งสำคัญ—เลือกสิ่งที่รู้สึกเป็นธรรมชาติ. | + +> **Pro tip:** หากคุณอยู่ใน pipeline ของ CI/CD ให้เพิ่มการอ้างอิง NuGet ในไฟล์ `.csproj` ของคุณเพื่อให้การสร้างไม่ลืมมัน. + +```xml + + + +``` + +## ขั้นตอนที่ 1: โหลด PDF ที่คุณต้องการบีบอัด + +ก่อนอื่นเราต้องการอ็อบเจ็กต์ `Document` ที่ชี้ไปยังไฟล์ต้นฉบับ. คิดว่าเป็นการเปิดหนังสือก่อนที่คุณจะเริ่มแก้ไขบทต่าง ๆ. + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*ทำไมเรื่องนี้ถึงสำคัญ:* การโหลดไฟล์ทำให้ Aspose.Pdf มีโอกาสอ่านทรัพยากรที่ฝังอยู่ทั้งหมด (ภาพ, ฟอนต์, ฯลฯ). หากข้ามขั้นตอนนี้จะไม่มีอะไรให้ **shrink pdf file size**. + +## ขั้นตอนที่ 2: ใช้การบีบอัด PDF แบบ lossless + +Aspose.Pdf มาพร้อมกับเมธอด `Optimize` ที่โดยค่าเริ่มต้นจะรันขั้นตอน **lossless pdf compression**. มันจะลบอ็อบเจ็กต์ที่ซ้ำซ้อน, บีบอัดภาพใหม่โดยคงคุณภาพภาพเดิม, และลบฟอนต์ที่ไม่ได้ใช้. + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*ทำไมเรื่องนี้ถึงสำคัญ:* ตัวเพิ่มประสิทธิภาพเริ่มต้นออกแบบมาเพื่อ **shrink pdf file size** พร้อมคงทุกพิกเซลไว้. หากคุณในภายหลังตัดสินใจยอมรับการสูญเสียคุณภาพเล็กน้อย, `OptimizationOptions` ที่ถูกคอมเมนต์ออกจะช่วยให้คุณแลกเปลี่ยนกิโลไบต์เพิ่มขึ้นเพื่อความเร็ว. + +## ขั้นตอนที่ 3: บันทึก PDF ที่เพิ่มประสิทธิภาพแล้ว + +เมื่อเอกสารเบาขึ้นแล้ว เราจะเขียนออกเป็นไฟล์ใหม่. การเก็บไฟล์ต้นฉบับไว้ไม่เปลี่ยนแปลงเป็นนิสัยที่ดี, โดยเฉพาะเมื่อคุณทดสอบการตั้งค่าต่าง ๆ. + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +หลังจากบันทึก, เปรียบเทียบขนาดไฟล์: + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +คุณควรเห็นการลดลงที่ชัดเจน—มักอยู่ที่ **30‑70 %** ขึ้นอยู่กับจำนวนภาพความละเอียดสูงในไฟล์ต้นฉบับ. + +![ภาพอธิบายการบีบอัด pdf](image.png "how to compress pdf") + +*ข้อความแทนภาพ:* how to compress pdf – ก่อนและหลังการเพิ่มประสิทธิภาพ + +## ขั้นสูง: ปรับการบีบอัดสำหรับสถานการณ์เฉพาะ + +แม้ว่าตัวเพิ่มประสิทธิภาพเริ่มต้นจะดีสำหรับกรณีส่วนใหญ่, บางครั้งคุณอาจต้องการ **shrink pdf file size** ให้มากยิ่งขึ้น: + +| สถานการณ์ | การตั้งค่าที่ต้องปรับ | ผลลัพธ์ | +|----------|-------------------|--------| +| PDF ที่มีภาพแรสเตอร์จำนวนมาก | `CompressImages = true` + ลด `ImageQuality` (เช่น 70) | ลดจำนวนไบต์ของภาพ, การสูญเสียภาพเล็กน้อย. | +| PDF ที่มีฟอนต์ซ้ำกัน | `RemoveUnusedObjects = true` | ลบฟอนต์ที่ไม่ได้อ้างอิง. | +| PDF ที่มีเมตาดาต้าขนาดใหญ่ | `RemoveMetadata = true` | ตัดบล็อก XML/เมตาดาต้าที่ซ่อนอยู่. | + +คุณสามารถรวมการตั้งค่าเหล่านี้ในอ็อบเจ็กต์ `OptimizationOptions` แล้วส่งให้ `pdfDoc.Optimize(options)`. + +## คำถามทั่วไป & กรณีขอบ + +**ถ้า PDF ถูกเพิ่มประสิทธิภาพแล้วล่ะ?** +Aspose.Pdf จะยังคงสแกนเอกสาร, แต่การเปลี่ยนแปลงขนาดจะน้อยมาก. การรันตัวเพิ่มประสิทธิภาพบนไฟล์ที่เบาอยู่แล้วปลอดภัย; จะไม่ทำให้ไฟล์เสีย. + +**ฉันสามารถบีบอัด PDF ที่เข้ารหัสได้ไหม?** +ได้, แต่คุณต้องใส่รหัสผ่านก่อนเรียก `Optimize`. ตัวอย่าง: + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**แล้ว PDF ที่มีกราฟิกเวกเตอร์ล่ะ?** +อ็อบเจ็กต์เวกเตอร์มีน้ำหนักเบาอยู่แล้ว, ดังนั้นตัวเพิ่มประสิทธิภาพจึงมุ่งเน้นที่ภาพแรสเตอร์และเมตาดาต้า. คาดว่าจะได้ผลลัพธ์ที่ค่อนข้างจำกัดสำหรับไฟล์ที่เป็นเวกเตอร์เท่านั้น. + +## ตัวอย่างเต็มที่สามารถรันได้ + +ด้านล่างเป็นแอปคอนโซลที่รวมทุกอย่างไว้ในไฟล์เดียวที่คุณสามารถคัดลอกและวางลงใน `.csproj` ใหม่. มันสาธิตทุกอย่างที่ได้อธิบาย—ตั้งแต่การโหลดจนถึงการตรวจสอบ. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +รันโปรแกรม, เปิด `Optimized.pdf` ในโปรแกรมอ่านใดก็ได้, แล้วคุณจะเห็นเลย์เอาต์หน้าเดียวกัน, ภาพคมชัดเดียวกัน, แต่ไฟล์ที่บางลง. นั่นคือความมหัศจรรย์ของ **lossless pdf compression**. + +## สรุป + +เราได้ครอบคลุมวิธี **how to compress pdf** ด้วยตัวเพิ่มประสิทธิภาพในตัวของ Aspose.Pdf, แสดงกระบวนการ **reduce pdf file size** ที่เป็นประโยชน์, และอธิบายเหตุผลเบื้องหลังแต่ละขั้นตอน. ด้วยการทำตามรูปแบบสามขั้นตอน—โหลด, เพิ่มประสิทธิภาพ, บันทึก—คุณสามารถ **shrink pdf file size** ได้ทันที, รักษาภาพของคุณให้คงสภาพด้วย **lossless pdf compression**, และมั่นใจในการ **save optimized pdf** สำหรับการใช้งานต่อไป. + +พร้อมสำหรับความท้าทายต่อไปหรือยัง? ลองเชื่อมต่อตัวเพิ่มประสิทธิภาพนี้กับสคริปต์ batch เพื่อประมวลผลโฟลเดอร์ทั้งหมด, หรือทดลองใช้ `OptimizationOptions` ทางเลือกเพื่อบีบให้เหลือกิโลไบต์สุดท้าย. หลักการเดียวกันใช้ได้ไม่ว่าคุณจะทำงานบนเครื่องเดสก์ท็อป, API เว็บ, หรืองาน batch ฝั่งเซิร์ฟเวอร์. + +มีคำถามเพิ่มเติมเกี่ยวกับการจัดการ PDF, ความแปลกของ Aspose.Pdf, หรือการทำ I/O ของไฟล์ใน .NET? แสดงความคิดเห็นด้านล่าง, แล้วเราจะต่อสนทนากันต่อ. ขอให้สนุกกับการบีบอัด! + +{{< /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/programming-with-security-and-signatures/_index.md b/pdf/thai/net/programming-with-security-and-signatures/_index.md index 437e81864..74f426e18 100644 --- a/pdf/thai/net/programming-with-security-and-signatures/_index.md +++ b/pdf/thai/net/programming-with-security-and-signatures/_index.md @@ -34,6 +34,8 @@ | [ลงนามด้วยสมาร์ทการ์ดโดยใช้ลายเซ็นไฟล์ PDF](./sign-with-smart-card-using-pdf-file-signature/) | เรียนรู้วิธีลงนามไฟล์ PDF โดยใช้สมาร์ทการ์ดด้วย Aspose.PDF สำหรับ .NET ปฏิบัติตามคำแนะนำทีละขั้นตอนนี้เพื่อลายเซ็นดิจิทัลที่ปลอดภัย - | [ลงนามด้วยสมาร์ทการ์ดโดยใช้ช่องลายเซ็น](./sign-with-smart-card-using-signature-field/) | เรียนรู้วิธีการลงนาม PDF อย่างปลอดภัยโดยใช้สมาร์ทการ์ดด้วย Aspose.PDF สำหรับ .NET ปฏิบัติตามคำแนะนำทีละขั้นตอนของเราเพื่อการใช้งานที่ง่ายดาย | - [ตรวจสอบลายเซ็น PDF ใน C# – วิธีอ่านไฟล์ PDF ที่ลงนาม](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) | เรียนรู้วิธีตรวจสอบและอ่านลายเซ็นดิจิทัลในไฟล์ PDF ด้วย C# และ Aspose.PDF สำหรับ .NET - +- [วิธีตรวจสอบลายเซ็นใน PDF ด้วย C# – คู่มือ Aspose ฉบับสมบูรณ์](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) | เรียนรู้ขั้นตอนการตรวจสอบลายเซ็นดิจิทัลในไฟล์ PDF ด้วย C# อย่างละเอียดด้วย Aspose.PDF สำหรับ .NET - +- [เพิ่มลายเซ็นดิจิทัล PDF ใน C# – คู่มือขั้นตอนเต็ม](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) | เรียนรู้วิธีเพิ่มลายเซ็นดิจิทัลในไฟล์ PDF ด้วย C# อย่างละเอียดโดยใช้ Aspose.PDF สำหรับ .NET พร้อมขั้นตอนครบถ้วน {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/thai/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/thai/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..0153b5507 --- /dev/null +++ b/pdf/thai/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,246 @@ +--- +category: general +date: 2026-03-06 +description: เพิ่มลายเซ็นดิจิทัล PDF ด้วย Aspose.PDF เรียนรู้การสร้างลายเซ็น PKCS7 + แบบแยกส่วนและเซ็น PDF ด้วยไฟล์ PFX พร้อมการเรียกกลับที่กำหนดเอง. +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: th +og_description: เพิ่มลายเซ็นดิจิทัลใน PDF อย่างรวดเร็ว คู่มือนี้แสดงวิธีสร้างลายเซ็น + pkcs7 แบบแยกส่วนและเซ็น PDF ด้วย pfx ใน C# +og_title: เพิ่มลายเซ็นดิจิทัลใน PDF ด้วย C# – บทเรียนการเขียนโปรแกรมเต็มรูปแบบ +tags: +- Aspose.PDF +- C# +- Digital Signature +title: เพิ่มลายเซ็นดิจิทัล PDF ใน C# – คู่มือขั้นตอนเต็มแบบละเอียด +url: /th/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# เพิ่มลายเซ็นดิจิทัลใน PDF – คู่มือขั้นตอนเต็ม + +เคยต้องการ **add digital signature pdf** ไฟล์แต่ไม่แน่ใจว่าจะเริ่มต้นอย่างไรหรือไม่? คุณไม่ได้อยู่คนเดียว; นักพัฒนาหลายคนเจอปัญหาเดียวกันเมื่อเอกสารต้องการลายเซ็นที่มีผลผูกพันทางกฎหมายและโค้ดเบสเพียงแค่รู้วิธีสร้าง PDF ธรรมดาเท่านั้น + +ในบทเรียนนี้เราจะพาคุณผ่านโซลูชันแบบทำมือที่ทำให้คุณ **add digital signature pdf** เอกสารโดยใช้ Aspose.PDF for .NET, สร้าง PKCS#7 detached signature, และลงลายเซ็น PDF ด้วยใบรับรอง PFX — ทั้งหมดใน C# แท้ ๆ เมื่อจบคุณจะได้โค้ดสั้น ๆ ที่พร้อมรัน, เข้าใจ “ทำไม” ของแต่ละการเรียก, และรู้วิธีปรับเปลี่ยนกระบวนการสำหรับกรณีขอบ + +## สิ่งที่คุณจะได้เรียนรู้ + +- วิธีโหลด PDF ที่ยังไม่ได้ลงลายเซ็นและเตรียมพร้อมสำหรับการลงลายเซ็น +- กลไกของ **create pkcs7 detached signature** และเหตุผลที่คุณอาจเลือกใช้ detached มากกว่า embedded +- ขั้นตอนที่แน่นอนเพื่อ **sign pdf using pfx** ด้วย callback แบบกำหนดเอง, ให้คุณควบคุมกระบวนการเข้ารหัสได้เต็มที่ +- เคล็ดลับการแก้ไขปัญหาที่พบบ่อย (ใบรับรองหาย, อัลกอริทึมแฮชผิด, เป็นต้น) + +### ข้อกำหนดเบื้องต้น + +| Requirement | Reason | +|-------------|--------| +| .NET 6.0 หรือใหม่กว่า | ฟีเจอร์ภาษาใหม่และการจัดการหน่วยความจำที่ดีกว่า | +| Aspose.PDF for .NET (NuGet package) | ให้ `PdfFileSignature`, `PKCS7Detached`, และยูทิลิตี้ PDF อื่น ๆ | +| ไฟล์ PFX ที่ถูกต้อง (`.pfx`) พร้อมคีย์ส่วนตัว | จำเป็นสำหรับขั้นตอน **sign pdf using pfx** | +| ความรู้พื้นฐานของ C# | โค้ดค่อนข้างตรงไปตรงมา, แต่การเข้าใจ `using` statements จะช่วยได้ | + +> **Pro tip:** อย่าเก็บรหัสผ่าน PFX ไว้ใน source control — ใช้ environment variables หรือ Azure Key Vault สำหรับการผลิต + +--- + +## วิธีเพิ่มลายเซ็นดิจิทัลใน PDF ด้วย Aspose.PDF + +ต่อไปเราจะแบ่งกระบวนการออกเป็นห้าขั้นตอนที่เข้าใจง่าย แต่ละขั้นตอนมีโค้ดสั้น ๆ, คำอธิบาย *ทำไม* จึงสำคัญ, และการตรวจสอบอย่างรวดเร็ว + +![ภาพหน้าจอของ PDF ที่ลงลายเซ็นในตัวดู, แสดงฟิลด์ลายเซ็นที่มองเห็นได้](/images/add-digital-signature-pdf.png "ตัวอย่างการเพิ่มลายเซ็นดิจิทัลใน PDF") + +### ขั้นตอนที่ 1 – โหลดเอกสาร PDF ที่ยังไม่ได้ลงลายเซ็น + +ก่อนอื่นเราต้องการอ็อบเจ็กต์ `Document` ที่แทน PDF ที่คุณต้องการลงลายเซ็น การใช้ `using var` ทำให้ไฟล์ถูกปล่อยโดยอัตโนมัติ + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**Why?** +Aspose ปฏิบัติกับ PDF เป็นกราฟของอ็อบเจ็กต์; การโหลดทำให้คุณเข้าถึงหน้า, annotation, และสตรีมไบต์ภายในที่ต่อไปจะถูกแฮชเพื่อสร้างลายเซ็น + +### ขั้นตอนที่ 2 – เริ่มต้น PdfFileSignature Helper + +`PdfFileSignature` คือคลาสที่ทำการใส่ซองคริปโตกราฟิกจริง ๆ มันทำงาน hand‑in‑hand กับ `PKCS7Detached` + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**Why?** +การแยกผู้ลงลายเซ็นออกจากเอกสารทำให้คุณสามารถใช้ `Document` ตัวเดียวกันสำหรับการทำงานอื่น (เช่น เพิ่ม watermark) ก่อนสรุปลายเซ็นขั้นสุดท้าย + +### ขั้นตอนที่ 3 – สร้าง PKCS#7 Detached Signature (Create PKCS7 Detached Signature) + +**PKCS#7 detached signature** จะเก็บเพียงแฮชของ PDF, ไม่ได้เก็บ PDF ทั้งไฟล์ ซึ่งเหมาะกับเอกสารขนาดใหญ่หรือเมื่อคุณต้องการให้ไฟล์ต้นฉบับไม่เปลี่ยนแปลง + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**Why a custom callback?** +บางครั้งคีย์การลงลายเซ็นอยู่ใน HSM หรือ Azure Key Vault, และคุณไม่สามารถดึงคีย์ส่วนตัวออกมาได้โดยตรง การให้ `CustomSignHash` จะส่งแฮชไปยังบริการที่ถือคีย์, ทำให้คีย์ส่วนตัวปลอดภัย + +**What if you don’t need a custom callback?** +คุณสามารถละเว้น `CustomSignHash`; Aspose จะใช้คีย์ส่วนตัวใน PFX โดยอัตโนมัติ อย่างไรก็ตาม วิธีแบบกำหนดเองให้ความยืดหยุ่นมากกว่าและสอดคล้องกับข้อกำหนดการปฏิบัติตาม + +### ขั้นตอนที่ 4 – ใส่ลายเซ็นลงในหน้าเฉพาะ (Sign PDF Using PFX) + +ตอนนี้เราจะวางฟิลด์ลายเซ็นที่มองเห็นได้บนหน้าโดยตรง สี่เหลี่ยมกำหนดตำแหน่งและขนาด (หน่วย points) + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**Why specify a rectangle?** +ลายเซ็นที่มองเห็นช่วยให้ผู้ใช้เห็นว่าเอกสารถูกลงลายเซ็น หากตั้งค่า `isVisible` เป็น `false` ลายเซ็นจะเป็นแบบไม่มองเห็น — ยังถูกต้อง, แต่ค้นหาได้ยากกว่า + +**Edge case:** หาก PDF ไม่มีหน้า (ไฟล์ว่าง) การเรียกจะโยน `ArgumentOutOfRangeException` ตรวจสอบให้แน่ใจว่า `pdfDocument.Pages.Count > 0` ก่อนลงลายเซ็นเสมอ + +### ขั้นตอนที่ 5 – บันทึก PDF ที่ลงลายเซ็น + +สุดท้ายให้บันทึกเอกสารที่ลงลายเซ็นลงดิสก์ คุณยังสามารถสตรีมโดยตรงไปยัง response ใน ASP.NET Core ได้ + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**Verification tip:** เปิดไฟล์ที่ได้ใน Adobe Acrobat Reader แผงลายเซ็นควรแสดงเครื่องหมายถูกสีเขียว (หากใบรับรองได้รับความเชื่อถือบนเครื่อง) + +## ตัวอย่างการทำงานเต็มรูปแบบ + +รวมทุกอย่างเข้าด้วยกัน นี่คือโปรแกรมคอนโซลแบบ self‑contained ที่คุณสามารถคัดลอก‑วางและรันได้ (หลังจากปรับเส้นทางและรหัสผ่าน) + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**Expected output:** คอนโซลจะแสดง “✅ PDF signed successfully!” และไฟล์ `CustomSigned.pdf` จะปรากฏในโฟลเดอร์เดียวกัน เมื่อเปิดคุณจะเห็นวิดเจ็ตลายเซ็นที่พิกัด (100,100)‑(300,200) + +## คำถามที่พบบ่อยและกรณีขอบ + +### ถ้า PFX ของฉันถูกป้องกันด้วยสมาร์ทการ์ดล่ะ? + +ใช้ delegate `CustomSignHash` เพื่อส่งแฮชไปยังไดรเวอร์สมาร์ทการ์ด ไดรเวอร์จะคืนค่าไบต์ลายเซ็น, แล้ว Aspose จะฝังลงโดยไม่ต้องเปิดเผยคีย์ส่วนตัว + +### ฉันสามารถลงลายเซ็นหลายหน้าพร้อมกันได้หรือไม่? + +ได้. เรียก `pdfSigner.Sign` ภายในลูป, ปรับ `pageNumber` และอาจปรับสี่เหลี่ยมสำหรับแต่ละหน้า จำไว้ว่าแต่ละการเรียกจะเพิ่มอ็อบเจ็กต์ลายเซ็นแยกกัน; ตัวดูบางตัวอาจแสดงเป็นรายการแยก + +### ฉันจะเปลี่ยนอัลกอริทึมแฮชได้อย่างไร? + +`PKCS7Detached` ใช้ค่าเริ่มต้น SHA‑256, แต่คุณสามารถตั้งค่า `HashAlgorithm` ได้: + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +ตรวจสอบให้แน่ใจว่า provider ที่ใช้ลงลายเซ็นรองรับอัลกอริธึมที่เลือก + +### ถ้า chain ของใบรับรองไม่ได้รับความเชื่อถือบนเครื่องลูกค้า? + +ใส่ chain เต็มในไฟล์ PFX, หรือกระจายใบรับรองรากไปยัง trust store ของผู้ใช้ มิฉะนั้น Acrobat จะรายงาน “Signature is unknown” + +### ลายเซ็นแบบ detached เข้ากันได้กับ PDF/A‑3 หรือไม่? + +PDF/A‑3 ต้องการลายเซ็นแบบ embedded, ดังนั้น PKCS#7 detached อาจไม่สอดคล้อง ในกรณีนั้นให้ละ `CustomSignHash` และให้ Aspose จัดการการลงลายเซ็นภายใน, ซึ่งจะสร้างลายเซ็นแบบ embedded + +## แนวทางปฏิบัติที่ดีที่สุดสำหรับการผลิต + +1. **Never hard‑code passwords.** ดึงรหัสผ่านจาก environment variables หรือ secret manager +2. **Validate the PDF before signing.** ไฟล์เสียหายจะทำให้เกิด `PdfFileSignatureException` +3. **Log the hash algorithm and certificate thumbprint** เพื่อเป็นร่องรอยการตรวจสอบ +4. **Test with multiple PDF viewers** (Adobe Reader, Foxit, Chrome) เพื่อให้แน่ใจว่าลายเซ็นปรากฏตามที่ต้องการ +5. **Consider timestamping** โดยเพิ่มคำขอ TSA (Time‑Stamp Authority) เพื่อเสริมความแข็งแรงทางกฎหมายของลายเซ็น + +## สรุป + +เราได้แสดงวิธี **add digital signature pdf** ด้วย Aspose.PDF, สร้าง **PKCS#7 detached signature**, และ **sign pdf using pfx** ด้วย callback แบบกำหนดเอง ตัวอย่างเต็มทำงานได้ทันที, และคำอธิบายให้คุณมั่นใจที่จะปรับเปลี่ยนกระบวนการสำหรับ HSM, บริการ timestamp, หรือการปฏิบัติตาม PDF/A ต่อไป คุณอาจสำรวจการ **sign multiple documents in batch**, การรวม **Azure Key Vault** เพื่อจัดเก็บคีย์อย่างปลอดภัย, หรือการเพิ่ม **visual customization** ให้ลายเซ็นแต่ละอัน หากคุณทำตามขั้นตอนแล้ว คุณจะมีโซลูชันที่มั่นคงและอ้างอิงได้สำหรับแชร์กับทีม หรือแม้กระทั่งอ้างอิงในคำตอบของผู้ช่วย AI ขอให้ลงลายเซ็นอย่างสนุกและอย่าลังเลที่จะคอมเมนต์หากมีส่วนใดไม่ชัดเจน! + +{{< /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/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/thai/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..33ed0bc46 --- /dev/null +++ b/pdf/thai/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-03-06 +description: เรียนรู้วิธีตรวจสอบลายเซ็นในไฟล์ PDF ด้วย Aspose PDF ใน C# การตรวจสอบลายเซ็น + PDF ทีละขั้นตอน, ตรวจสอบความถูกต้องของลายเซ็น PDF และจัดการกับลายเซ็นที่เสียหาย. +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: th +og_description: วิธีตรวจสอบลายเซ็นในไฟล์ PDF ด้วย Aspose PDF. ทำตามคำแนะนำนี้เพื่อทำการตรวจสอบลายเซ็น + PDF, ตรวจสอบความถูกต้องของลายเซ็น PDF และตรวจจับลายเซ็นที่ถูกทำลายใน C# +og_title: วิธีตรวจสอบลายเซ็นใน PDF ด้วย C# – คู่มือ Aspose ฉบับสมบูรณ์ +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: วิธีตรวจสอบลายเซ็นใน PDF ด้วย C# – คู่มือ Aspose ฉบับสมบูรณ์ +url: /th/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีตรวจสอบลายเซ็นใน PDF ด้วย C# – คู่มือ Aspose ฉบับสมบูรณ์ + +เคยสงสัย **วิธีตรวจสอบลายเซ็น** ใน PDF โดยไม่ต้องบิดหัวของคุณไหม? คุณไม่ได้เป็นคนเดียวที่มีความรู้สึกเช่นนี้. นักพัฒนาหลายคนเจออุปสรรคเมื่อจำเป็นต้องทำ **pdf signature verification** เพื่อการปฏิบัติตามหรือการตรวจสอบ, และวิธีการ “แค่เชื่อไลบรารี” ปกติก็อาจทำให้เกิดปัญหาได้. + +ในบทแนะนำนี้เราจะพาคุณผ่านโซลูชันแบบครบวงจรที่ไม่เพียงแต่ **validate pdf signature** แต่ยังบอกคุณด้วยว่าลายเซ็นถูกดัดแปลงหรือไม่. เราจะใช้ไลบรารี **Aspose PDF**, ซึ่งหมายความว่าโค้ดจะทำงานบน .NET 6+, .NET Framework 4.6+ และแม้กระทั่ง .NET Core. เมื่อจบคุณจะได้สแนปช็อตพร้อมรันที่สามารถใส่ลงในโปรเจกต์ C# ใดก็ได้. + +## สิ่งที่คุณต้องเตรียม + +- **Aspose.Pdf** NuGet package (เวอร์ชันล่าสุด ณ เวลาที่เขียน – 23.12). +- สภาพแวดล้อมการพัฒนา .NET (Visual Studio, Rider หรือ VS Code). +- ไฟล์ PDF ที่มีลายเซ็น (เราจะเรียกว่า `Signed.pdf`). +- ความรู้พื้นฐานของ C# – ไม่ต้องซับซ้อน, แค่ `using` ปกติและการ I/O ของ `Console`. + +แค่นั้นเอง. ไม่ต้องบริการเสริม, ไม่ต้องไฟล์กำหนดค่าที่ซับซ้อน. พร้อมหรือยัง? ไปดิ่งกันเลย. + +![how to verify signature diagram](image.png "how to verify signature") + +## ขั้นตอนที่ 1: ตั้งค่าโปรเจกต์ของคุณสำหรับการตรวจสอบลายเซ็น PDF + +ก่อนที่คุณจะเรียกใช้ Aspose API ใด ๆ คุณต้องอ้างอิงไลบรารีนี้. เปิดเทอร์มินัลหรือ Package Manager Console แล้วรัน: + +```bash +dotnet add package Aspose.Pdf +``` + +หรือถ้าคุณชอบใช้ UI, ค้นหา **Aspose.Pdf** ใน NuGet Package Manager แล้วติดตั้ง. ขั้นตอนนี้สำคัญมาก เพราะหากไม่มี assembly **aspose pdf signature** คุณจะไม่สามารถเข้าถึงคลาส `PdfFileSignature` ได้ในภายหลัง. + +> **เคล็ดลับ:** ตั้งเป้าหมายเป็น .NET 6 หรือสูงกว่าเพื่อประสิทธิภาพที่ดีที่สุดและหลีกเลี่ยงคำเตือนความเข้ากันได้ของรุ่นเก่า. + +## ขั้นตอนที่ 2: โหลดเอกสาร PDF + +ตอนนี้แพคเกจถูกติดตั้งแล้ว, เราสามารถโหลด PDF ที่ต้องการตรวจสอบได้. คลาส `Document` แทนไฟล์ทั้งหมดในหน่วยความจำ. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**ทำไมเรื่องนี้สำคัญ:** การโหลดเอกสารทำให้เราสามารถเข้าถึงโครงสร้างภายใน, รวมถึงฟิลด์ลายเซ็น. หากไฟล์หายหรือเสียหาย, `Document` จะโยนข้อยกเว้น, ซึ่งคุณสามารถจับเพื่อให้ประสบการณ์ผู้ใช้ที่นุ่มนวลขึ้น. + +## ขั้นตอนที่ 3: สร้างอ็อบเจ็กต์ Aspose PdfFileSignature + +เมื่อมีเอกสารอยู่ในมือ, ขั้นตอนต่อไปคือการสร้างอินสแตนซ์ `PdfFileSignature`. คลาสฟาซาเดนี้รู้วิธีอ่าน, ตรวจสอบ, และจัดการลายเซ็นดิจิทัลที่ฝังอยู่ใน PDF. + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**คำอธิบาย:** คอนสตรัคเตอร์ของ `PdfFileSignature` รับ `Document` ที่โหลดแล้ว. ภายในมันจะพาร์สพจนานุกรมลายเซ็น, ทำให้เมธอดเช่น `VerifySignature` และ `IsSignatureCompromised` พร้อมใช้งาน. + +## ขั้นตอนที่ 4: ตรวจสอบความสมบูรณ์ของลายเซ็น + +หัวใจของ **pdf signature verification** คือเมธอด `VerifySignature`. มันจะคืนค่า `true` หากแฮชเชิงคริปโตตรงกับค่าที่เก็บไว้และห่วงโซ่ใบรับรองได้รับความเชื่อถือ (โดยสมมติว่าคุณได้ตั้งค่า trust manager แล้ว, ซึ่งเราจะข้ามในที่นี้). + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +หากคุณมีหลายลายเซ็น, เพียงเปลี่ยนดัชนี (`0`, `1`, …). เมธอดจะตรวจสอบทั้งความสมบูรณ์และความเชื่อถือในครั้งเดียว, จึงเป็นตัวเลือกหลักสำหรับหลายสถานการณ์. + +## ขั้นตอนที่ 5: ตรวจจับลายเซ็นที่ถูกทำลาย + +แม้ลายเซ็น “ถูกต้อง” ก็อาจถูกทำลายได้หากเอกสารถูกแก้ไขหลังจากเซ็น. Aspose มีเมธอด `IsSignatureCompromised` เพื่อจับกรณีละเอียดนี้. + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**เมื่อใดควรใช้:** สมมติว่า PDF ถูกเซ็น, จากนั้นผู้ใช้เพิ่มคอมเมนต์หรือเปลี่ยนหน้า. แฮชจะต่างกัน, `IsSignatureCompromised` จะคืนค่า `true` ในขณะที่ `VerifySignature` อาจยังคงเป็น `true` หากใบรับรองยังคงสมบูรณ์. การตรวจสอบทั้งสองฟล็กให้ภาพรวมที่ครบถ้วน. + +## ขั้นตอนที่ 6: แปลผลลัพธ์ + +ตอนนี้เรามีบูลีนสองตัว: `isSignatureValid` และ `isSignatureCompromised`. มาแปลงเป็นข้อความคอนโซลที่เป็นมิตรกันเถอะ. + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### ผลลัพธ์ที่คาดหวัง + +| Scenario | Console Output | +|---------------------------------------|--------------------------------| +| Valid and not compromised | `Signature OK` | +| Valid but compromised (document changed) | `Signature compromised!` | +| Invalid (certificate not trusted, hash mismatch) | `Signature verification failed` | + +ตารางนี้ช่วยให้คุณแมปผลบูลีนเป็นข้อความที่มนุษย์อ่านได้อย่างรวดเร็ว. + +## ตัวอย่างทำงานเต็มรูปแบบ + +รวมทุกอย่างเข้าด้วยกัน, นี่คือโปรแกรมที่พร้อมรันครบชุด: + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +คัดลอก, วาง, ปรับ `pdfPath`, แล้วรัน. หากทุกอย่างตั้งค่าอย่างถูกต้องคุณจะเห็นหนึ่งในสามข้อความที่ระบุข้างต้น. + +## ปัญหาที่พบบ่อยและเคล็ดลับสำหรับการตรวจสอบลายเซ็น PDF + +| Issue | Why it Happens | How to Fix / Avoid | +|-------|----------------|--------------------| +| **Missing Aspose license** | การประเมินฟรีจะใส่ลายน้ำและอาจจำกัดการเรียก API บางอย่าง. | ลงทะเบียนไลเซนส์ (`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`). | +| **Multiple signatures but wrong index** | คุณอาจตรวจสอบลายเซ็นผิดตำแหน่ง, ทำให้ผลลัพธ์เป็นลบเท็จ. | วนลูปผ่าน `signatureVerifier.GetSignatureCount()` และตรวจสอบแต่ละอัน. | +| **Certificate chain not trusted** | `VerifySignature` ล้มเหลวหาก root CA ไม่อยู่ใน trusted store. | เพิ่ม CA ที่ใช้เซ็นลงใน Windows Trusted Root store หรือกำหนด `CertificateValidator` แบบกำหนดเอง. | +| **File locked by another process** | การเปิด PDF ที่ยังเปิดอยู่ในโปรเซสอื่นอาจทำให้เกิด `IOException`. | ใช้ `FileStream` กับ `FileShare.ReadWrite` หรือคัดลอกไปไฟล์ชั่วคราวก่อน. | +| **Incorrect PDF path** | การพิมพ์ผิดเล็กน้อยทำให้เกิด `FileNotFoundException`. | ตรวจสอบเส้นทางด้วย `File.Exists(pdfPath)` ก่อนโหลด. | + +### กรณีขอบที่คุณอาจเจอ + +- **Detached signatures**: PDF บางไฟล์เก็บลายเซ็นเป็นไฟล์แยก. `PdfFileSignature` ของ Aspose ปัจจุบันรองรับเฉพาะลายเซ็นที่ฝังอยู่เท่านั้น. +- **Timestamped signatures**: หากต้องการตรวจสอบหน่วยงานให้เวลา (TSA), คุณต้องเรียก `VerifySignature` พร้อมอ็อบเจ็กต์ `VerificationOptions` ที่กำหนดเอง — นอกเหนือขอบเขตของคู่มือนี้แต่ควรทราบสำหรับโครงการที่ต้องการการปฏิบัติตามอย่างเข้มงวด. + +## ขั้นตอนต่อไป – ขยายตรรกะการตรวจสอบของคุณ + +ตอนนี้คุณได้เชี่ยวชาญพื้นฐานของ **how to verify signature**, คุณอาจต้องการ: + +1. **Validate PDF signature** กับรายการใบรับรองที่เชื่อถือ (เช่น PKI ขององค์กร). +2. **Export signature details** (ชื่อผู้เซ็น, เวลาที่เซ็น, thumbprint ของใบรับรอง) ด้วย `GetSignatureInfo`. +3. **Batch‑process multiple PDFs** ในโฟลเดอร์, บันทึกผลลัพธ์ลง CSV เพื่อการตรวจสอบ. + +ทั้งหมดนี้เป็นการขยายโค้ดที่เราได้ครอบคลุมแล้ว, และยังคงอยู่ในระบบนิเวศ **aspose pdf signature** เดียวกัน. + +--- + +**สรุปสั้น ๆ**, ตอนนี้คุณรู้วิธี **how to verify signature** ใน PDF ด้วย C# และ Aspose, วิธีตรวจจับลายเซ็นที่ถูกทำลาย, และวิธีจัดการเมื่อการตรวจสอบล้มเหลว. วิธีนี้แข็งแรง, รองรับหลายลายเซ็น, และสามารถรวมเข้ากับไพป์ไลน์การประมวลผลเอกสารขนาดใหญ่ได้. + +มีสถานการณ์ที่ต้องการปรับเปลี่ยน? บางทีคุณอาจต้องการเซ็น PDF แทนการตรวจสอบ, หรือกำลังจัดการกับ PDF ที่เข้ารหัส. แสดงความคิดเห็น, เราจะสำรวจแนวทางเหล่านั้นด้วยกัน. Happy coding! + +{{< /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/programming-with-stamps-and-watermarks/_index.md b/pdf/thai/net/programming-with-stamps-and-watermarks/_index.md index 2a3976112..daa4042ed 100644 --- a/pdf/thai/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/thai/net/programming-with-stamps-and-watermarks/_index.md @@ -39,6 +39,7 @@ - [ตารางในส่วนหัวส่วนท้าย](./table-in-header-footer-section/) | เรียนรู้วิธีการเพิ่มข้อความลงในส่วนท้ายของไฟล์ PDF ได้อย่างง่ายดายโดยใช้ Aspose.PDF สำหรับ .NET พร้อมคู่มือทีละขั้นตอนเพื่อการผสานรวมที่ราบรื่น - | [ข้อความในส่วนท้ายของไฟล์ PDF](./text-in-footer/) | เรียนรู้วิธีการเพิ่มข้อความในส่วนท้ายของไฟล์ PDF ด้วย Aspose.PDF สำหรับ .NET - | [ข้อความในส่วนหัวของไฟล์ PDF](./text-in-header/) | เรียนรู้การเพิ่มส่วนหัวข้อความในไฟล์ PDF โดยใช้ Aspose.PDF สำหรับ .NET ด้วยบทช่วยสอนทีละขั้นตอนนี้ ปรับปรุงเอกสารของคุณอย่างมีประสิทธิภาพและมีประสิทธิผล | +- [สร้างเอกสาร PDF พร้อมหมายเลข Bates ใน C#](./create-pdf-document-with-bates-numbering-in-c-full-guide/) เรียนรู้วิธีเพิ่มหมายเลข Bates ลงใน PDF ด้วย Aspose.PDF สำหรับ .NET ผ่านคู่มือเต็มขั้นตอน {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/thai/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/thai/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..08e63634c --- /dev/null +++ b/pdf/thai/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,182 @@ +--- +category: general +date: 2026-03-06 +description: สร้างเอกสาร PDF ด้วย C# และเพิ่มหมายเลขบาเตสได้อย่างง่ายดาย เรียนรู้วิธีเพิ่มหน้าเปล่าใน + PDF วางตราประทับบนหน้า และดำเนินการนับหมายเลขบาเตส +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: th +og_description: สร้างเอกสาร PDF ด้วย C# และเพิ่มหมายเลขบาเตส คู่มือฉบับนี้แสดงวิธีเพิ่มหน้าเปล่าใน + PDF, วางตราประทับบนหน้า, และใช้การจัดหมายเลขบาเตส. +og_title: สร้างเอกสาร PDF พร้อมหมายเลข Bates – บทเรียน C# +tags: +- Aspose.Pdf +- C# +- PDF automation +title: สร้างเอกสาร PDF พร้อมหมายเลข Bates ใน C# – คู่มือเต็ม +url: /th/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# สร้างเอกสาร PDF พร้อมหมายเลข Bates ใน C# + +เคยต้องการ **สร้างเอกสาร PDF** ใน C# และสงสัยว่าจะเพิ่มหมายเลข Bates อย่างไรโดยไม่ทำให้หัวเสียไหม? คุณไม่ใช่คนเดียว—สำนักงานกฎหมาย, ศาล, และแม้แต่ทีมปฏิบัติตามของบริษัทบางแห่งต้องเผชิญกับปัญหานี้ทุกวัน ข่าวดีคือ? ด้วยไม่กี่บรรทัดของโค้ด Aspose.Pdf คุณสามารถสร้าง PDF ใหม่, เพิ่มหน้าว่าง, และประทับหมายเลข Bates อย่างเป็นระเบียบในขั้นตอนเดียว + +ในบทเรียนนี้เราจะเดินผ่านกระบวนการทั้งหมด: ตั้งค่าโปรเจกต์, เพิ่มหน้า PDF ว่าง, ค้นหา **วิธีเพิ่มหมายเลข Bates**, และสุดท้าย **วางสแตมป์บนหน้า** แล้วบันทึกผลลัพธ์ เมื่อเสร็จคุณจะได้สแนปช็อตพร้อมใช้ที่สามารถใส่ลงในแอป .NET ใดก็ได้ ไม่มีการอ้างอิงแบบคลุมเครือ เพียงตัวอย่างที่ทำงานได้เต็มรูปแบบ + +## สิ่งที่คุณต้องการ + +- **.NET 6+** (หรือ .NET Framework 4.6+ – Aspose.Pdf ทำงานได้กับทั้งสอง) +- **Aspose.Pdf for .NET** NuGet package (`Install-Package Aspose.Pdf`) +- IDE ที่ดี (Visual Studio, Rider, หรือ VS Code พร้อมส่วนขยาย C#) + +แค่นั้นเอง ไม่ต้องใช้ DLL เพิ่มเติม ไม่ต้องพึ่งบริการภายนอก มาดำดิ่งกันเลย + +## ขั้นตอนที่ 1: สร้างเอกสาร PDF – การตั้งค่าเริ่มต้น + +ก่อนอื่นเราต้องการอ็อบเจ็กต์ `Document` ใหม่ คิดว่าเป็นผืนผ้าใบเปล่าที่ทุกอย่างจะถูกวางไว้ + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **Why this matters:** คลาส `Document` เป็นจุดเริ่มต้นสำหรับทุกการทำงานของ Aspose การสร้างอ็อบเจ็กต์นี้ให้คุณเข้าถึงคอลเลกชัน `Pages` เมตาดาต้า และการตั้งค่าความปลอดภัย—ทั้งหมดเป็นบล็อกพื้นฐานสำหรับ PDF ระดับมืออาชีพ + +## ขั้นตอนที่ 2: เพิ่มหน้า PDF ว่าง + +PDF ที่ไม่มีหน้าเหมือนหนังสือที่ไม่มีหน้า—ใช้ประโยชน์ไม่ได้ การเพิ่มหน้าว่างทำได้ง่ายและให้พื้นผิวสำหรับประทับหมายเลข Bates + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **Pro tip:** หากต้องการหลายหน้า เพียงเรียก `pdfDocument.Pages.Add()` ในลูป ทุกการเรียกจะคืนค่าอ็อบเจ็กต์ `Page` ใหม่ที่คุณสามารถปรับแต่งได้อย่างอิสระ + +## ขั้นตอนที่ 3: วิธีเพิ่มหมายเลข Bates – สร้าง TextStamp + +ต่อมาคือหัวใจของเรื่อง: **หมายเลข Bates** ใน Aspose.Pdf มันเป็นเพียง `TextStamp` ที่มีแฟล็ก artifact พิเศษ + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **Why we set `Artifact`**: ตัวอ่าน PDF บางตัวจะแสดงหมายเลข Bates เป็นเมตาดาต้าที่ค้นหาได้ การตั้งค่าสแตมป์เป็น artifact `BatesNumbering` ทำให้เครื่องมือ downstream สามารถรับรู้ได้โดยอัตโนมัติ + +## ขั้นตอนที่ 4: วางสแตมป์บนหน้า + +เมื่อสแตมป์พร้อม เราจะ **วางสแตมป์บนหน้า** นี่คือขั้นตอนที่หมายเลขปรากฏใน PDF + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **Edge case:** หากต้องการให้หมายเลขเพิ่มขึ้นในแต่ละหน้า คุณจะต้องลูปผ่าน `pdfDocument.Pages` และอัปเดต `batesStamp.Value` ก่อนเรียก `AddStamp` ตัวอย่างนี้ใช้ค่า “Bates‑001” คงที่เพื่อความง่าย + +## ขั้นตอนที่ 5: บันทึกและตรวจสอบผลลัพธ์ + +สุดท้ายเราจะบันทึก PDF ลงดิสก์ เลือกโฟลเดอร์ที่คุณมีสิทธิ์เขียน มิฉะนั้นจะเจอ `UnauthorizedAccessException` + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +เมื่อคุณเปิด `BatesStamped.pdf` ในโปรแกรมดูใดก็ได้ คุณควรเห็น “Bates‑001” เล็ก ๆ ติดมุมล่าง‑ขวาของหน้าว่างอย่างเรียบร้อย + +> **Expected output:** +> ![PDF with Bates number stamp](image-placeholder.png "PDF with Bates number stamp") +> *Alt text: PDF with Bates number stamp on the bottom‑right corner.* + +หากหมายเลขไม่แสดง ตรวจสอบค่าขอบอีกครั้งและให้แน่ใจว่าขนาดหน้ากระดาษไม่เล็กเกินไป (ขนาด A4 ปริยายทำงานได้ดี) อีกทั้งตรวจสอบว่าแฟล็ก `Artifact` ไม่ถูกตัดออกโดยเครื่องมือหลังการประมวลผลใด ๆ + +## ตัวอย่างการทำงานเต็มรูปแบบ + +ด้านล่างเป็นโปรแกรมที่พร้อมคัดลอก‑วางครบถ้วน รวมทุก `using` directive และคอมเมนต์เพื่อให้คุณตามได้ง่าย + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +รันโปรแกรม เปิด PDF แล้วคุณจะเห็นหมายเลข Bates ปรากฏตรงที่เราตั้งค่า 🎉 + +## ความแปรผันทั่วไปและข้อควรระวัง + +| Scenario | What to Change | Why | +|----------|----------------|-----| +| **หลายหน้า, เพิ่มหมายเลขต่อเนื่อง** | Loop through `pdfDocument.Pages`, set `batesStamp.Value = $"Bates-{i:D3}"` before `AddStamp` | ให้แต่ละหน้ามีตัวระบุที่ไม่ซ้ำกัน, เป็นที่นิยมสำหรับชุดเอกสารทางกฎหมาย | +| **ตำแหน่งต่าง (บน‑ซ้าย)** | Change `HorizontalAlignment = HorizontalAlignment.Left` and `VerticalAlignment = VerticalAlignment.Top` | บางองค์กรต้องการให้หมายเลขอยู่ส่วนหัวแทนส่วนท้าย | +| **ฟอนต์หรือสีที่กำหนดเอง** | Set `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` | ปรับปรุงการอ่านหรือให้สอดคล้องกับแนวทางแบรนด์ | +| **เพิ่ม PDF ที่มีอยู่เป็นพื้นหลัง** | Load the source PDF with `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` | มีประโยชน์เมื่อคุณต้องการประทับบนแบบฟอร์มที่สร้างไว้ล่วงหน้า | + +## สรุป + +เราได้แสดงวิธี **สร้างเอกสาร PDF**, **เพิ่มหน้า PDF ว่าง**, และ **เพิ่มหมายเลข Bates** ด้วย Aspose.Pdf for .NET จากนั้น **วางสแตมป์บนหน้า** และบันทึกไฟล์ โค้ดถูกออกแบบให้กระชับเพื่อให้คุณปรับใช้กับเวิร์กโฟลว์ขนาดใหญ่ได้ ไม่ว่าจะเป็นการประมวลผลหลายสิบไฟล์หรือการรวมเข้าในเว็บเซอร์วิส + +หากคุณพร้อมจะก้าวต่อไป พิจารณา: + +- ทำให้การเพิ่มเลขอัตโนมัติสำหรับไฟล์คดีจำนวนมาก +- ฝังการสร้าง PDF เข้าใน ASP.NET Core API +- เพิ่มความปลอดภัย (การป้องกันด้วยรหัสผ่าน) ด้วย `pdfDocument.Encrypt(...)` + +ทดลอง ปรับเปลี่ยน และถามคำถามในคอมเมนต์ได้เลย ขอให้เขียนโค้ดสนุกและ PDF ของคุณถูกประทับอย่างสมบูรณ์เสมอ! + +{{< /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/programming-with-tagged-pdf/_index.md b/pdf/thai/net/programming-with-tagged-pdf/_index.md index a1c44ab99..5692fab3d 100644 --- a/pdf/thai/net/programming-with-tagged-pdf/_index.md +++ b/pdf/thai/net/programming-with-tagged-pdf/_index.md @@ -37,7 +37,7 @@ | [คุณสมบัติขององค์ประกอบโครงสร้างในไฟล์ PDF](./structure-elements-properties/) | คำแนะนำทีละขั้นตอนในการทำงานกับคุณสมบัติองค์ประกอบโครงสร้างในไฟล์ PDF ด้วย Aspose.PDF สำหรับ .NET สร้างองค์ประกอบโครงสร้างที่มีข้อมูลมากมาย - | [สไตล์ตารางเซลล์](./style-table-cell/) | เรียนรู้วิธีจัดรูปแบบเซลล์ตารางใน PDF โดยใช้ Aspose.PDF สำหรับ .NET ด้วยบทช่วยสอนโดยละเอียดนี้ ปฏิบัติตามคำแนะนำเพื่อสร้างและจัดรูปแบบตาราง PDF ที่สวยงาม - | [องค์ประกอบตารางสไตล์](./style-table-element/) | เรียนรู้วิธีการสร้างและกำหนดรูปแบบองค์ประกอบตารางใน Aspose.PDF สำหรับ .NET พร้อมด้วยคำแนะนำทีละขั้นตอน การกำหนดรูปแบบแบบกำหนดเอง และการปฏิบัติตาม PDF/UA -- [สไตล์แถวตาราง](./style-table-row/) เรียนรู้วิธีกำหนดรูปแบบแถวตารางใน PDF โดยใช้ Aspose.PDF สำหรับ .NET พร้อมคำแนะนำทีละขั้นตอนเพื่อปรับปรุงการจัดรูปแบบเอกสารของคุณได้อย่างง่ายดาย +- [สไตล์แถวตาราง](./style-table-row/) เรียนวิธีกำหนดรูปแบบแถวตารางใน PDF โดยใช้ Aspose.PDF สำหรับ .NET พร้อมคำแนะนำทีละขั้นตอนเพื่อปรับปรุงการจัดรูปแบบเอกสารของคุณได้อย่างง่ายดาย - [โครงสร้างข้อความสไตล์ในไฟล์ PDF](./style-text-structure/) | เรียนรู้วิธีการจัดรูปแบบโครงสร้างข้อความในไฟล์ PDF ด้วย Aspose.PDF สำหรับ .NET ในบทช่วยสอนแบบทีละขั้นตอนที่ครอบคลุมนี้ เปลี่ยนแปลงเอกสารของคุณ - | [เนื้อหา PDF ที่ถูกแท็ก](./tagged-pdf-content/) | เรียนรู้วิธีการทำงานกับเนื้อหาที่มีแท็กในเอกสาร PDF ด้วย Aspose.PDF สำหรับ .NET คำแนะนำทีละขั้นตอนในการใช้แท็ก - | [แท็กภาพใน PDF ที่มีอยู่](./tag-image-in-existing-pdf/) | เรียนรู้วิธีแท็กภาพใน PDF ที่มีอยู่โดยใช้ Aspose.PDF สำหรับ .NET คำแนะนำทีละขั้นตอนเพื่อปรับปรุงการเข้าถึงโดยปฏิบัติตาม PDF/UA - @@ -45,6 +45,7 @@ - [องค์ประกอบโครงสร้างข้อความในไฟล์ PDF](./text-structure-elements/) เรียนรู้การจัดการองค์ประกอบโครงสร้างข้อความใน PDF ด้วย Aspose.PDF สำหรับ .NET คำแนะนำทีละขั้นตอนนี้ครอบคลุมทุกสิ่งที่คุณต้องการเพื่อสร้าง PDF ที่มีโครงสร้าง - | [ตรวจสอบไฟล์ PDF](./validate-pdf/) | เรียนรู้วิธีการตรวจสอบไฟล์ PDF ด้วย Aspose.PDF สำหรับ .NET ตรวจสอบความสอดคล้องตามมาตรฐานและสร้างรายงานการตรวจสอบ | - [สร้าง PDF ที่มีแท็กใน C# – คู่มือขั้นตอนเต็ม](./create-tagged-pdf-in-c-complete-step-by-step-guide/) | เรียนรู้วิธีสร้าง PDF ที่มีแท็กด้วย C# โดยใช้ Aspose.PDF สำหรับ .NET ผ่านขั้นตอนที่ละเอียดและครบถ้วน +- [สร้าง PDF ที่มีแท็กใน C# – คู่มือขั้นตอนทีละขั้นตอน](./create-tagged-pdf-in-c-step-by-step-guide/) | เรียนรู้วิธีสร้าง PDF ที่มีแท็กด้วย C# โดยใช้ Aspose.PDF สำหรับ .NET ผ่านขั้นตอนที่ชัดเจนและครบถ้วน {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/thai/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/thai/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..4fe3334a0 --- /dev/null +++ b/pdf/thai/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-03-06 +description: สร้าง PDF ที่มีแท็กด้วย Aspose.Pdf ใน C# เรียนรู้วิธีเพิ่มรูปภาพลงใน + PDF ตั้งตำแหน่งรูปภาพ และทำการแท็ก PDF เพื่อการเข้าถึง. +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: th +og_description: สร้าง PDF ที่มีแท็กด้วย Aspose.Pdf คู่มือนี้จะแสดงวิธีการเพิ่มรูปภาพลงใน + PDF ตั้งตำแหน่งรูปภาพ และทำการแท็ก PDF เพื่อการเข้าถึง. +og_title: สร้าง Tagged PDF ด้วย C# – คู่มือฉบับสมบูรณ์ +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: สร้าง Tagged PDF ด้วย C# – คู่มือแบบทีละขั้นตอน +url: /th/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# สร้าง Tagged PDF ด้วย C# – บทเรียนเต็มรูปแบบ + +เคยต้อง **สร้าง tagged PDF** ด้วย C# แต่ไม่รู้ว่าจะเริ่มต้นอย่างไรหรือไม่? คุณไม่ได้อยู่คนเดียว; ความสามารถในการเข้าถึงเป็นสิ่งจำเป็นในยุคนี้ และ Tagged PDF คือโครงสร้างหลักของเอกสารที่เป็นไปตามมาตรฐาน ในบทเรียนนี้เราจะเดินผ่านตัวอย่างจริงที่ **เพิ่มรูปภาพลงใน PDF**, กำหนดตำแหน่งของรูปภาพ, และแสดง **วิธีการ tag PDF** ด้วย Aspose.Pdf. เมื่อเสร็จสิ้นคุณจะได้ PDF ที่มีการ tag อย่างเต็มรูปแบบและพร้อมส่งให้ใครก็ได้ + +เราจะครอบคลุมทุกขั้นตอนตั้งแต่การโหลดไฟล์ที่มีอยู่จนถึงการบันทึกผลลัพธ์สุดท้าย, ดังนั้นคุณจะไม่ต้องค้นหา “วิธีเพิ่มรูปภาพ” ที่อื่น ไม่มีส่วนเกิน—เพียงโซลูชันที่ชัดเจนและรันได้กับ Aspose.Pdf 23.8 (เวอร์ชันล่าสุด ณ เวลาที่เขียน) เตรียม IDE ของคุณแล้วเริ่มกันเลย + +--- + +## สิ่งที่คุณต้องเตรียม + +- **Aspose.Pdf for .NET** (แพคเกจ NuGet `Aspose.Pdf`). +- .NET 6+ (หรือ .NET Framework 4.7.2+). +- PDF อินพุตที่มีโครงสร้างเชิงตรรกะอยู่แล้ว (เช่น ถูก tag ไว้แล้ว) – หากไม่มีคุณสามารถเปิดการ tag ได้ด้วย `pdfDocument.TaggedContent = true`. +- ไฟล์รูปภาพ (`image.png`) ที่ต้องการฝัง + +เท่านี้เอง ไม่ต้องใช้ไลบรารีเพิ่มเติม ไม่ต้องมีไฟล์กำหนดค่าที่ซับซ้อน + +--- + +## ขั้นตอนที่ 1: โหลดเอกสาร PDF ที่มีอยู่ (สร้างฐาน Tagged PDF) + +สิ่งแรกที่เราทำคือเปิด PDF ที่ต้องการเพิ่มคุณลักษณะ การโหลดไฟล์ทำให้เราสามารถเข้าถึงโครงสร้างเชิงตรรกะของมัน ซึ่งจำเป็นสำหรับกระบวนการ **create tagged pdf** + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*ทำไมจึงสำคัญ:* หากไม่มีต้นไม้ tag PDF จะไม่สามารถสื่อสารข้อมูลโครงสร้างให้กับโปรแกรมอ่านหน้าจอได้ การเปิดการ tag ทำให้ทุกองค์ประกอบใหม่ที่เราเพิ่ม (เช่น figure) สืบทอดลำดับชั้นที่ถูกต้อง + +--- + +## ขั้นตอนที่ 2: เข้าถึง Logical Structure Root (วิธี tag PDF) + +ต่อไปเราจะเข้าไปในโครงสร้างเชิงตรรกะของ PDF. องค์ประกอบรากเป็นคอนเทนเนอร์ของแท็กทั้งหมด—เปรียบเสมือนโครงร่างของเอกสาร + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*คำอธิบาย:* `logicalRoot` ให้เราสามารถต่อท้ายแท็กใหม่เช่น `
` หรือ `
` ได้ นี่คือหัวใจของ **how to tag PDF** แบบโปรแกรม + +--- + +## ขั้นตอนที่ 3: สร้าง Figure Tag และกำหนดตำแหน่ง (Set Figure Position) + +แท็ก *Figure* จะรวมเนื้อหาภาพกับคำอธิบาย (caption) ที่เป็นทางเลือก เราจะสร้างแท็กนี้, กำหนดตำแหน่ง, แล้วเชื่อมต่อกับราก + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*ทำไมต้องกำหนดตำแหน่ง:* ขั้นตอน **set figure position** กำหนดว่าภาพจะปรากฏที่ไหนบนหน้า หากข้ามขั้นตอนนี้ figure อาจอยู่ในตำแหน่งที่ไม่คาดคิดหรือไม่มองเห็นโดยเทคโนโลยีช่วยเหลือ + +--- + +## ขั้นตอนที่ 4: เพิ่มภาพจริง – แทรก Image (Add Image to PDF) + +เมื่อแท็กพร้อมแล้ว เราต้องมีภาพจริง นี่คือส่วนที่ตอบ **add image to pdf** + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*จุดสำคัญ:* พิกัดสี่เหลี่ยมต้องตรงกับ `figureTag.Position` ที่กำหนดไว้ก่อนหน้า; หากไม่ตรง figure และเนื้อหาภาพจะไม่สอดคล้องกัน ทำให้การเข้าถึงล้มเหลว + +--- + +## ขั้นตอนที่ 5: บันทึก PDF ที่อัปเดต (Finish Creating Tagged PDF) + +สุดท้ายเราบันทึกการเปลี่ยนแปลงลงไฟล์ใหม่ การเก็บไฟล์ต้นฉบับไว้โดยไม่แก้ไขเป็นแนวทางที่ดี + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +ในขั้นตอนนี้คุณจะได้ไฟล์ **create tagged pdf** ที่มีภาพที่กำหนดตำแหน่งอย่างถูกต้องและหุ้มด้วยแท็ก `
` เปิด `output.pdf` ด้วย Adobe Acrobat แล้วตรวจสอบแผง *Tags* – คุณควรเห็นโหนด `Figure` อยู่ภายใต้ราก + +--- + +## ตัวอย่างเต็มที่พร้อมรัน + +ด้านล่างเป็นโปรแกรมเต็มที่คุณสามารถคัดลอก‑วางลงในแอปคอนโซล ทุกขั้นตอนเรียงลำดับอย่างถูกต้อง + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### ผลลัพธ์ที่คาดหวัง + +- `output.pdf` เปิดขึ้นโดยแสดงภาพที่ตำแหน่ง (100, 150) จุด, ขนาด 300 × 200 จุด +- แผง *Tags* แสดงองค์ประกอบ `Figure` ที่ครอบคลุมภาพ +- เครื่องมืออ่านหน้าจอประกาศ “Figure” ก่อนอธิบายรูปภาพ, ตรงตามมาตรฐานการเข้าถึงขั้นพื้นฐาน + +--- + +## คำถามทั่วไป & กรณีขอบ + +### ถ้า PDF ต้นทางยังไม่ได้ tag จะทำอย่างไร? + +Aspose.Pdf ให้คุณเปิดการ tag ด้วยการตั้งค่า `pdfDocument.TaggedContent.IsTagged = true;`. ไลบรารีจะสร้างต้นไม้ tag เริ่มต้น, จากนั้นคุณสามารถเพิ่มแท็กกำหนดเองตามที่แสดงได้ + +### สามารถเพิ่ม caption ให้กับ figure ได้หรือไม่? + +ทำได้. หลังจากสร้าง `figureTag` คุณสามารถแนบ `Paragraph` ที่มี `TextFragment` และตั้งค่า `Tag` เป็น `Caption`. ตัวอย่าง: + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### จะวาง figure บนหน้าที่ต่างกันได้อย่างไร? + +แทนที่ `var firstPage = pdfDocument.Pages[1];` ด้วยดัชนีหน้าที่ต้องการ, เช่น `pdfDocument.Pages[3]`. อย่าลืมปรับพิกัด `Position` หากขนาดหน้าต่างกัน + +### ต้องการ tag รูปหลายรูปจะทำอย่างไร? + +สร้าง `Figure` ใหม่สำหรับแต่ละรูป, กำหนด `Position` ที่ไม่ซ้ำกัน, แล้วเพิ่มอ็อบเจกต์ `Image` ที่สอดคล้องลงในหน้าที่เหมาะสม การวนลูปผ่านคอลเลกชันของรูปทำได้อย่างราบรื่น + +### ทำงานร่วมกับ PDF/A compliance ได้หรือไม่? + +Aspose.Pdf รองรับ PDF/A‑1b, PDF/A‑2b, และ PDF/A‑3b. เมื่อสร้างเอกสาร PDF/A ให้ตั้งค่าโหมด compliance ก่อนบันทึก: + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +ตรรกะการ tag ยังคงเหมือนเดิม + +--- + +## เคล็ดลับมืออาชีพ & สิ่งที่ควรระวัง + +- **เคล็ดลับ:** ใช้เส้นทางแบบ absolute หรือ `Path.Combine` เพื่อหลีกเลี่ยงข้อผิดพลาดไฟล์ไม่พบใน runtime +- **ระวัง:** พิกัดที่ไม่ตรงกันระหว่างแท็ก `Figure` กับสี่เหลี่ยม `Image` — เทคโนโลยีช่วยเหลือพึ่งพาการจัดตำแหน่งนี้ +- **หมายเหตุประสิทธิภาพ:** หากประมวลผลหลายหน้า, ควรห่อสตรีมของภาพในบล็อก `using` เพื่อปล่อยทรัพยากรโดยเร็ว +- **ตรวจสอบเวอร์ชัน:** API ที่แสดงทำงานกับ Aspose.Pdf 23.8+; เวอร์ชันเก่าอาจมีชื่อคลาสแตกต่างกันเล็กน้อย (เช่น `LogicalStructureElement` แทน `FigureElement`) + +--- + +## สรุป + +เราได้ **create tagged pdf** ตั้งแต่ต้นจนจบ, แสดง **add image to pdf**, และอธิบาย **set figure position** พร้อมตอบ **how to tag pdf** และ **how to add image** ในตัวอย่างเดียวที่ต่อเนื่อง โค้ดพร้อมรัน, คำอธิบายครอบคลุม “ทำไม” ของแต่ละขั้นตอน, และคุณมีพื้นฐานที่มั่นคงสำหรับการสร้าง PDF ที่เข้าถึงได้ใน C# + +พร้อมรับความท้าทายต่อไปหรือยัง? ลองเพิ่มตารางด้วยแท็ก `
` หรือฝังเลเยอร์ PDF/A‑2b เพื่อการเก็บถาวร รูปแบบเดียว—โหลด, เข้าถึงโครงสร้างเชิงตรรกะ, สร้างแท็ก, แนบเนื้อหาภาพ, บันทึก—ใช้ได้กับงาน PDF accessibility ส่วนใหญ่ + +หากเจออุปสรรคหรือมีกรณีการใช้งานที่ไม่ได้ครอบคลุมในที่นี้, คอมเมนต์ด้านล่างได้เลย. Happy tagging, and enjoy building PDFs that everyone can read! + +![Diagram showing a PDF with a Figure tag and image – illustrates how to create tagged pdf](placeholder-image.png "create tagged pdf example") + +{{< /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/digital-signatures/_index.md b/pdf/turkish/net/digital-signatures/_index.md index 316d45734..a7ecfe561 100644 --- a/pdf/turkish/net/digital-signatures/_index.md +++ b/pdf/turkish/net/digital-signatures/_index.md @@ -59,6 +59,9 @@ C# kullanarak PDF dosyalarındaki dijital imzaları nasıl doğrulayacağınız ### [PDF'yi Doğrulama – Aspose ile PDF İmzasını Doğrulama](./how-to-verify-pdf-validate-pdf-signature-with-aspose/) Aspose.PDF for .NET kullanarak PDF dosyalarında dijital imzaları nasıl doğrulayacağınızı adım adım öğrenin. +### [C# ile PDF'deki İmzaları Okuma – Adım Adım Kılavuz](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +C# kullanarak PDF dosyalarındaki dijital imzaları nasıl okuyacağınızı adım adım öğrenin. + ## Ek Kaynaklar - [Net Belgeleme için Aspose.PDF](https://docs.aspose.com/pdf/net/) diff --git a/pdf/turkish/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/turkish/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..e0c21697b --- /dev/null +++ b/pdf/turkish/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-03-06 +description: C# kullanarak bir PDF'deki imzaları nasıl okursunuz. PDF belgesini C# + ile yüklemeyi, PDF imzalarını listelemeyi ve dijital imzaları hızlı ve güvenilir + bir şekilde almayı öğrenin. +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: tr +og_description: C# kullanarak bir PDF'deki imzaları nasıl okursunuz. Bu rehber, PDF + belgesini C# ile nasıl yükleyeceğinizi, PDF imzalarını nasıl listeleyeceğinizi ve + dijital imzaları birkaç kolay adımda nasıl alacağınızı gösterir. +og_title: C# ile PDF'deki İmzaları Okuma – Tam Kılavuz +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: C# ile PDF'deki İmzaları Okuma – Adım Adım Rehber +url: /tr/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF'de İmzaları C# ile Okuma – Tam Kılavuz + +PDF dosyasına zaten gömülmüş **imzaları nasıl okuyacağınızı** hiç merak ettiniz mi? Belki bir uyumluluk kontrol paneli oluşturuyorsunuz ya da imzalı sözleşmeleri veritabanınıza eklemeden önce denetlemeniz gerekiyor. İyi haber şu ki, birkaç satır C# ve Aspose.Pdf kütüphanesiyle imza adlarını dosyadan doğrudan çekebilirsiniz—manuel inceleme gerekmez. + +Bu öğreticide C# ile bir PDF belgesi yüklemeyi, PDF imzalarını listelemeyi ve dijital imzalar PDF bilgilerini almayı adım adım göstereceğiz. Sonunda, bulunan her imza adını yazdıran, ayrıca parola korumalı dosyalar gibi uç durumları ele almanız için ipuçları içeren, çalıştırmaya hazır bir konsol uygulamanız olacak. + +## Önkoşullar + +- .NET 6.0 veya üzeri (kod .NET Framework 4.6+ ile de çalışır) +- Aspose.Pdf for .NET (Aspose web sitesinden ücretsiz geçici bir lisans alabilirsiniz) +- Zaten bir veya daha fazla dijital imza içeren bir PDF (örnek `MultiSigned.pdf` depoda bulunur) + +> **Pro ipucu:** Visual Studio kullanıyorsanız, *Nullable Reference Types* özelliğini etkinleştirerek null‑ile ilgili hataları erken yakalayabilirsiniz. + +## Adım 1: PDF Belgesini C# ile Yükleme + +İlk olarak, diskteki PDF dosyasını temsil eden bir `Document` nesnesine ihtiyacımız var. Aspose.Pdf’nin `Document` sınıfı basit metin çıkarımından karmaşık form işleme kadar her şeyi yönetir. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**Neden önemli:** PDF'i yüklemek, dosyanın mevcut ve okunabilir olduğunu doğrular. Dosya bozuksa ya da yol yanlışsa, imzaları saymaya çalışırken ortaya çıkabilecek belirsiz hatalarla karşılaşmak yerine erken çıkış yaparız. + +## Adım 2: `PdfFileSignature` Yardımcısını Oluşturma + +Aspose, genel PDF işleme (`Document`) ile imza‑özel işlemleri (`PdfFileSignature`) ayırır. Bu yardımcıyı örneklemek, `GetSignatureNames()` gibi yöntemlere erişmemizi sağlar. + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**Neden önemli:** `PdfFileSignature` sınıfı, dijital imzaların bulunduğu PDF’nin `/Sig` sözlüğü girişlerini nasıl ayrıştıracağını bilir. Bunu kullanmak, imzaları eklendikleri şekilde okumamızı ve kriptografik meta verileri korumamızı sağlar. + +## Adım 3: Tüm İmza Adlarını Almak + +Şimdi **imzaları nasıl okuyacağınız**ın özüne geliyoruz: `GetSignatureNames()` metodunu çağırın. Bu yöntem, her imzanın *alan adlarını* içeren bir string dizisi döndürür. + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**Gördükleriniz:** `MultiSigned.pdf` üç imza içeriyorsa ve adları `Signature1`, `Signature2` ve `Signature3` ise, konsol çıktısı şöyle olacaktır: + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## Adım 4: (İsteğe Bağlı) Her İmzanın Geçerliliğini Doğrulama + +İsimleri okumak çoğu zaman yeterlidir, ancak birçok proje her imzanın hâlâ geçerli olup olmadığını da bilmek ister. Aspose, bir imzayı alan adıyla doğrulamanıza olanak tanır: + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **Uç durum:** PDF parola korumalıysa, `VerifySignature` çağırmadan önce parolayı sağlamalısınız. Belgeyi yükledikten hemen sonra `pdfDocument.Encrypt.Password = "yourPassword";` ifadesini kullanın. + +## Tam Çalışan Örnek + +Aşağıda, yeni bir konsol projesine (`dotnet new console`) kopyalayıp yapıştırabileceğiniz tam program bulunmaktadır. Tüm adımları, hata yönetimini ve isteğe bağlı doğrulamayı içerir. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**Beklenen çıktı** (üç geçerli imza varsayarsak): + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## Yaygın Varyasyonları Ele Alma + +| Durum | Ne Değiştirilmeli | Neden | +|-----------|----------------|-----| +| **Parola‑korumalı PDF** | `PdfFileSignature` oluşturulmadan önce `pdfDocument.Encrypt.Password = "yourPwd";` ifadesini ayarlayın. | Parola olmadan imza sözlükleri şifrelenir ve `GetSignatureNames()` boş bir dizi döndürür. | +| **Büyük PDF'ler ( > 100 MB )** | Sonuçları sayfalayabilmek için `pdfSigner.GetSignatureNames(0, 10)` kullanın (ilk parametre = başlangıç indeksi). | Tüm imza listesini bir kerede yüklemek çok fazla bellek tüketebilir. | +| **Hiç imza yok** | Kod zaten dostane bir uyarı verir. Bunu bir denetim olayı olarak kaydetmeyi düşünün. | İleri süreçlerin dosyayı reddetmesi ya da kullanıcıdan imzalı bir sürüm istemesi kararını vermesine yardımcı olur. | +| **Özel imza alan adları** | Metod, imzalama sırasında kullanılan alan adını döndürür, ör. `EmployeeApproval`. Ek bir işleme gerek yok. | İmzaları iş rolleriyle eşlemenizi sağlar. | + +## En İyi Uygulamalar & İpuçları + +- **Nesneleri serbest bırakın**: `using var pdfSigner` deseni, yerel kaynakların hızlıca serbest bırakılmasını garanti eder. +- **Lisansı erken alın**: `Main` metodunun başında `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` çağrısı yaparak değerlendirme filigranını önleyin. +- **İş parçacığı güvenliği**: Birçok PDF'i paralel işliyorsanız, her iş parçacığı için ayrı bir `PdfFileSignature` örneği oluşturun. Sınıf iş parçacığı‑güvenli değildir. +- **Günlükleme**: Üretim ortamında `Console.WriteLine` yerine yapılandırılmış bir logger (Serilog, NLog) kullanarak denetim izleri için tam imza adlarını yakalayın. +- **Sürüm kontrolü**: Kod, Aspose.Pdf for .NET 23.10 ve üzeri sürümlerle çalışır. Daha eski sürümler `PdfSignature` yerine `PdfFileSignature` gerektirebilir. + +## Sonuç + +C# kullanarak bir PDF'den **imzaları nasıl okuyacağınız**ı ele aldık. PDF belgesini yükleyip bir `PdfFileSignature` yardımcı nesnesi oluşturup `GetSignatureNames()` metodunu çağırarak dosyaya gömülü tüm dijital imzaları listeleyebilirsiniz. İsteğe bağlı doğrulama bir güven katmanı ekler ve örnek kod, bunu gerçek bir konsol uygulamasına nasıl entegre edeceğinizi tam olarak gösterir. + +Bir sonraki adıma hazır mısınız? Bu kodu Aspose’un `DigitalSignatureUtil` ile birleştirerek imzalayan sertifikalarını çıkarabilir ya da imza listesini imzasız sözleşmeleri işaretleyen bir uyumluluk kontrol paneline besleyebilirsiniz. Olanaklar sınırsız—sadece ihtiyacınız olduğunda **PDF belgesini C# ile yükleyin**, **PDF imzalarını listeleyin** ve **dijital imzalar PDF** alın, unutmayın. + +Kodlamaktan keyif alın, ve PDF'leriniz her zaman güvenli bir şekilde imzalı kalsın! + +{{< /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-conversion/_index.md b/pdf/turkish/net/document-conversion/_index.md index 2e4284804..e060f86a7 100644 --- a/pdf/turkish/net/document-conversion/_index.md +++ b/pdf/turkish/net/document-conversion/_index.md @@ -44,7 +44,8 @@ Dönüştürme ayarlarını nasıl belirleyeceğinizi, metin ve görüntüleri n | [PDF'den XLS'e](./pdf-to-xls/) Aspose.PDF for .NET kullanarak PDF dosyalarını kolayca XLS formatına dönüştürün. Sorunsuz veri çıkarma için adım adım kılavuzumuzu izleyin. | | [PDF'den XML'e](./pdf-to-xml/) | Bu kapsamlı eğitimde Aspose.PDF for .NET kullanarak PDF'yi XML'e nasıl dönüştüreceğinizi öğrenin. Kod örneklerinin de dahil olduğu adım adım kılavuz. | | [PDF'den XPS'e](./pdf-to-xps/) | Bu adım adım kılavuzla Aspose.PDF for .NET kullanarak PDF'yi XPS'e nasıl dönüştüreceğinizi öğrenin. Geliştiriciler ve belge işleme meraklıları için mükemmel. | -| [PDF'ye Son Söz](./postscript-to-pdf/) | Bu adım adım eğitimde Aspose.PDF for .NET kullanarak Postscript dosyalarını PDF'ye nasıl dönüştüreceğinizi öğrenin. Her seviyedeki geliştirici için mükemmel. | +| [PDF'yi C#'ta PDF/X‑4'e Dönüştür – Adım Adım ASP.NET PDF Eğitimi](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | Aspose.PDF for .NET kullanarak PDF dosyalarını PDF/X‑4 formatına C# ile nasıl dönüştüreceğinizi öğrenin. | +| [Aspose PDF Eğitimi: PDF'yi C#'ta PDF/X‑4'e Dönüştür](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) | Aspose.PDF for .NET kullanarak C# ile PDF dosyalarını PDF/X‑4 formatına nasıl dönüştüreceğinizi öğrenin. | | [HTML'den PDF'e Geçiş Sırasında Kimlik Bilgilerini Sağlayın](./provide-credentials-during-html-to-pdf/) | Bu adım adım kılavuzla Aspose.PDF for .NET kullanarak HTML'yi PDF'ye nasıl dönüştüreceğinizi öğrenin. Belge oluşturmayı kolaylaştırmak isteyen geliştiriciler için mükemmeldir. | | [Html'den Dönüştürdükten Sonra Köprü Bağlantılarını Kaldır](./remove-hyperlinks-after-converting-from-html/) Aspose.PDF for .NET'i kullanarak HTML belgelerini PDF'ye dönüştürdükten sonra köprü metinlerinin nasıl kaldırılacağını bu adım adım kılavuzda öğrenin. | [Eksik Yazı Tiplerini Değiştir](./replace-missing-fonts/) | Bu adım adım kılavuzla Aspose.PDF for .NET'i kullanarak PDF belgelerindeki eksik yazı tiplerini nasıl değiştireceğinizi öğrenin. diff --git a/pdf/turkish/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/turkish/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..1b7bc2c8a --- /dev/null +++ b/pdf/turkish/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-03-06 +description: Aspose PDF Eğitimi, Aspose kullanarak C#'de bir PDF belgesini nasıl yükleyeceğinizi, + PDF'yi PDF/X‑4'e nasıl dönüştüreceğinizi ve dönüştürülen PDF'yi verimli bir şekilde + nasıl kaydedeceğinizi gösterir. +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: tr +og_description: Aspose PDF Eğitimi, C#'ta bir PDF belgesini nasıl yükleyeceğinizi, + PDF/X‑4 formatına nasıl dönüştüreceğinizi ve dönüştürülen PDF'yi net kod örnekleriyle + nasıl kaydedeceğinizi açıklar. +og_title: 'Aspose PDF Öğreticisi: PDF''yi C#''ta PDF/X‑4''e Dönüştür' +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: 'Aspose PDF Öğreticisi: C#''da PDF''yi PDF/X‑4''e Dönüştür' +url: /tr/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose PDF Öğreticisi: PDF'yi C#'ta PDF/X‑4'e Dönüştürme + +Hiç Aspose kullanarak sıradan bir PDF'yi PDF/X‑4 dosyasına zahmetsizce dönüştürmeyi düşündünüz mü? Tek başınıza değilsiniz—geliştiriciler genellikle **load PDF document C#**‑stilinde bir PDF'yi yükleyip, dönüştürüp, ardından **save the converted PDF**'yi sonraki iş akışları için kaydetmenin güvenilir bir yoluna ihtiyaç duyarlar. Bu rehberde, en yeni Aspose.Pdf for .NET'i kullanarak tam, çalıştırılabilir bir örnek üzerinden adım adım ilerleyeceğiz. + +Kütüphanenin kurulumu, kaynak PDF'nin yüklenmesi, PDF/X‑4 standardına dönüştürülmesi ve son olarak sonucun diske kaydedilmesi konularını ele alacağız. Sonunda, bu yaygın dönüşüm senaryosu için **how to use Aspose** konusunda sağlam bir anlayışa sahip olacak, ayrıca kenar durumlarını ele almanın ipuçlarını da öğreneceksiniz. + +## Önkoşullar + +Başlamadan önce şunların olduğundan emin olun: + +- .NET 6.0 veya üzeri (kod .NET Framework'te de çalışır, ancak .NET 6+ önerilir). +- Geçerli bir Aspose.Pdf for .NET lisans dosyası (veya hızlı bir test için değerlendirme modunda çalışabilirsiniz). +- Visual Studio 2022 veya C# uyumlu herhangi bir IDE. +- `YOUR_DIRECTORY/input.pdf` konumunda bir giriş PDF dosyası. + +`Aspose.Pdf` dışındaki ek NuGet paketlerine ihtiyaç yoktur. + +## NuGet üzerinden Aspose.Pdf'i Kurun + +Terminalinizi veya Package Manager Console'ınızı açın ve şu komutu çalıştırın: + +```bash +dotnet add package Aspose.Pdf +``` + +Bu, en son kararlı sürümü (Mart 2026 itibarıyla sürüm 23.12) çeker. UI tercih ediyorsanız, NuGet Package Manager'da *Aspose.Pdf* aratıp kurabilirsiniz. + +## Adım 1: Aspose ile C#'ta PDF Belgesini Yükleyin + +İlk yapmanız gereken, kaynak PDF'yi belleğe almaktır. Aspose'in `Document` sınıfı giriş noktasıdır. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**Neden önemli:** Dosyanın varlığını ve PDF'nin bozuk olmadığını doğrulamak için dosya yüklenir. `try/catch` bloğu, hataları nazikçe ortaya çıkarmanın bir yolunu sunar—kullanıcı yüklemelerinden gelen dosyalarla çalışırken kullanışlıdır. + +## Adım 2: PDF'yi PDF/X‑4 Formatına Dönüştürün + +PDF/X‑4, güvenilir baskı ve arşivleme için tasarlanmış bir PDF alt kümesidir. Dönüştürme, tüm yazı tiplerinin gömülü olmasını ve dosyanın sektör standartlarına uymasını sağlar. + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**Neden `ConvertErrorAction.Delete` seçilir?** Bazı eski PDF'lerde, dönüşümü durdurabilecek (desteklenmeyen açıklamalar gibi) öğeler bulunur. Bunları silmek sürecin sorunsuz devam etmesini sağlar, ancak bu öğeleri korumanız gerekiyorsa çıktıyı gözden geçirmelisiniz. + +### İsteğe Bağlı: Dönüşüm Başarısını Doğrulayın + +Daha emin olmak isterseniz, dönüşüm sonrası belgenin `PdfFormat` özelliğini inceleyebilirsiniz: + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## Adım 3: Dönüştürülmüş PDF Dosyasını Kaydedin + +Artık belge PDF/X‑4 formatında, diske geri yazalım. + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**Görürsünüz sonuç:** `YOUR_DIRECTORY` içinde `Converted_PDFX4.pdf` adlı yeni bir dosya oluşur. PDF/X‑4'ü destekleyen herhangi bir PDF görüntüleyicide (Adobe Acrobat, Foxit vb.) açtığınızda tüm yazı tiplerinin gömülü olduğunu ve belgenin PDF/X‑4 spesifikasyonuna uygun olduğunu fark edeceksiniz. + +![aspose pdf öğreticisi - PDF'yi PDF/X‑4'e dönüştürme](/images/aspose-pdf-conversion.png "aspose pdf öğreticisi PDF/X‑4 dönüşüm sonucunu gösteriyor") + +*Görsel alt metni ana anahtar kelimeyi içerir, SEO gereksinimlerini karşılar.* + +## Tam Uçtan Uca Örnek + +Hepsini bir araya getirerek, yeni bir C# projesine kopyalayıp yapıştırabileceğiniz bağımsız bir konsol uygulaması aşağıdadır: + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +Programı çalıştırın, her adımı onaylayan konsol mesajlarını görmelisiniz. Bir şeyler ters giderse, hata mesajları sizi tam olarak hangi aşamada sorun olduğunu yönlendirecektir. + +## Yaygın Sorular & Kenar Durumları + +### Açıklamaları korumam gerekirse ne yapmalıyım? + +`ConvertErrorAction.Delete` desteklenmeyen nesneleri, bazı açıklamalar dahil, kaldırır. Eğer bunları tutmak kritikse `ConvertErrorAction.Keep`'e geçin, ancak çıktıyı test edin—bazı açıklamalar hâlâ uyumluluk uyarılarına neden olabilir. + +### Yüzlerce MB büyüklüğünde PDF'lerle nasıl başa çıkabilirim? + +Aspose.Pdf dosyayı akış (stream) olarak işler, bu yüzden bellek kullanımı makul seviyede kalır. Ancak çok büyük dosyalar için `System.GC` eşiklerini artırabilir veya belgeyi sayfa sayfa işleyerek (ör. sayfa‑sayfa dönüştürme) parçalar halinde işleyebilirsiniz. + +### Birden fazla dosyayı toplu olarak dönüştürebilir miyim? + +Kesinlikle. Yükleme‑dönüştürme‑kaydetme mantığını bir `foreach` döngüsü içinde, bir PDF klasörünü dolaşacak şekilde sarın. Her dosya için ayrı ayrı istisna yakalayarak tek bir hatalı PDF'nin tüm toplu işlemi durdurmasını önleyin. + +### .NET Core Linux üzerinde çalışır mı? + +Evet. Aspose.Pdf çapraz‑platformdur. Tek yapmanız gereken `Aspose.Pdf` NuGet paketinin referans edildiğinden ve Linux sunucusunda metin render'ı için gerekli yazı tipi dosyalarının kurulu olduğundan emin olmaktır. + +## Sahadan Profesyonel İpuçları + +- **Lisansı erken ayarlayın**: `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` – bu, değerlendirme filigranını kaldırır ve performansı artırır. +- **Çıktıyı doğrulayın**: Aspose'in `PdfFormatValidator` sınıfını kullanarak PDF/X‑4 uyumluluğunu programatik olarak kontrol edin ve dosyayı dağıtmadan önce onaylayın. +- **Dönüşüm süresini kaydedin**: Büyük toplular için her dönüşümün süresini (`Stopwatch`) ölçmek, performans gerilemelerini tespit etmenize yardımcı olur. +- **Sabit yol kullanımından kaçının**: `inputPath` ve `outputPath` için yapılandırma dosyaları veya ortam değişkenlerini tercih edin—uygulamanın taşınabilirliğini artırır. + +## Sonuç + +Bu **Aspose PDF Öğreticisi**nde, **how to use Aspose** ile **load PDF document C#**, **PDF/X‑4** standardına dönüştürme ve **save the converted PDF** işlemlerini temiz, uçtan uca bir iş akışıyla gösterdik. Kod parçacığı tamamen çalıştırılabilir, her adımın *neden*ini açıklar ve gerçek dünya projelerinde karşılaşabileceğiniz tuzakları vurgular. + +Temelleri kavradığınıza göre, çözümü genişletebilirsiniz—yüzlerce dosyayı toplu işleyin, özel meta veriler ekleyin veya dönüşümü bir web API'ye entegre edin. Olanaklar çok geniş ve Aspose.Pdf, hızlı bir şekilde hedefinize ulaşmanız için gereken araçları sunar. + +Aspose ile PDF işleme hakkında daha fazla sorunuz mu var? Yorum bırakın, resmi Aspose belgelerini inceleyin veya yukarıdaki kodla deneyler yapın. İyi dönüşümler! + +{{< /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-creation/_index.md b/pdf/turkish/net/document-creation/_index.md index 317c4153b..e3e8c31ac 100644 --- a/pdf/turkish/net/document-creation/_index.md +++ b/pdf/turkish/net/document-creation/_index.md @@ -76,6 +76,12 @@ Aspose.PDF Net için bir kod öğreticisi ### [Aspose.PDF ile PDF Belgesi Oluşturma – Sayfa, Şekil Ekle ve Kaydet](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) +### [Aspose.PDF ile PDF Belgesi Oluşturma: Adım Adım Kılavuz](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +Aspose.PDF kullanarak .NET ortamında temel PDF belgesi oluşturmayı ve kaydetmeyi adım adım öğrenin. + +### [Aspose.PDF ile PDF Belgesi Oluşturma – Tam C# Kılavuzu](./create-pdf-document-with-aspose-pdf-full-c-guide/) +Aspose.PDF for .NET kullanarak C# ile tam kapsamlı PDF belgesi oluşturma adımlarını öğrenin. + ## Ek Kaynaklar - [Net Belgeleme için Aspose.PDF](https://docs.aspose.com/pdf/net/) diff --git a/pdf/turkish/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/turkish/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..2ba0ac9ac --- /dev/null +++ b/pdf/turkish/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-06 +description: Aspose.PDF kullanarak C# ile PDF belgesi oluşturun – boş sayfalar, metin + kutusu, widget eklemeyi ve PDF'yi hızlıca kaydetmeyi öğrenin. +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: tr +og_description: C# ile Aspose.PDF kullanarak PDF belgesi oluşturun. Bu kılavuz, boş + PDF sayfaları, metin kutusu, widget eklemeyi ve PDF'yi kaydetmeyi gösterir. +og_title: Aspose.PDF ile PDF Belgesi Oluşturma – Tam C# Öğreticisi +tags: +- pdf +- csharp +- aspose +- forms +title: Aspose.PDF ile PDF Belgesi Oluşturma – Tam C# Kılavuzu +url: /tr/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose.PDF ile PDF Belgesi Oluşturma – Tam C# Rehberi + +Sıfırdan bir .NET projesinde **pdf belge oluşturma** ihtiyacı hiç duydunuz mu ve nereden başlayacağınızı merak ettiniz mi? Yalnız değilsiniz; birçok geliştirici, ilk gereksinim “aynı metin kutusuna sahip doldurulabilir bir PDF üç sayfada oluştur” ifadesiyle aynı duvara çarpar. İyi haber? Aspose.PDF ile sadece birkaç satır kodla profesyonel görünümlü bir PDF oluşturabilirsiniz. + +Bu öğreticide tüm süreci adım adım inceleyeceğiz: yeni bir PDF başlatmaktan, **boş sayfalar pdf ekleme**, bir **textbox** eklemeye, **widget** açıklamalarıyla çoğaltmaya ve sonunda **PDF'yi kaydetmeye** kadar. Sonunda *MultiWidgetField.pdf* adlı kullanıma hazır bir dosyanız olacak ve her adımın neden önemli olduğunu sağlam bir şekilde anlayacaksınız. + +## Bu Kılavuzda Neler Kapsanıyor + +- Kod satırı yazmadan önce ihtiyacınız olan önkoşullar. +- Aspose.PDF for .NET kullanarak PDF belgesi oluşturmanın adım adım rehberi. +- Boş sayfalar, bir textbox form alanı ve ek widget örnekleri ekleme. +- Yaygın tuzakları (ör. sayfa indeksleme, alan ad çakışmaları) ele alma ipuçları. +- Bugün çalıştırabileceğiniz tam, kopyala‑yapıştır‑hazır C# programı. + +Harici dokümantasyon bağlantıları yok, “API belgelerine bak” kısayolları yok—gereken her şey burada. + +## Önkoşullar + +Before diving in, make sure you have: + +1. **.NET 6.0** (veya daha yeni bir sürüm) makinenizde kurulu olmalı. +2. Aktif bir **Aspose.PDF for .NET** lisansı ya da geçici bir değerlendirme anahtarı. +3. **Visual Studio 2022** veya C# uzantılı **VS Code** gibi bir geliştirme ortamı. + +Hepsi bu—başka bir şey gerekmez. + +## Adım 1: PDF Belgesini Başlatma ve Boş Sayfalar Ekleme + +Programatik olarak **pdf belge oluşturma** yaptığınızda ilk yaptığınız şey bir `Document` nesnesi örneklemektir. Bunu yepyeni bir defter açmak gibi düşünün. Ardından ihtiyacınız olan sayfaları ekleyin; bizim örneğimizde üç boş sayfa. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**Neden Bu Önemli:** Aspose.PDF, sayfaları dahili olarak sıfır‑tabanlı bir koleksiyon olarak ele alır, ancak genel API'si 1‑tabanlıdır, bu yüzden `Pages[1]` az önce eklediğiniz ilk sayfadır. Sayfaları önceden eklemek, daha sonra form alanlarını yerleştirebileceğiniz bir tuval sağlar ve belgenin büyümesinden sonra sayfa eklemekten çok daha ucuzdur. + +> **Pro tip:** Tek bir sayfaya ihtiyacınız varsa, döngüyü atlayabilir ve `pdfDocument.Pages.Add()` metodunu bir kez çağırabilirsiniz. Döngü içinde birden fazla sayfa eklemek kodun ölçeklenebilirliğini korur. + +## Adım 2: İlk Sayfada TextBox Form Alanı Tanımlama + +Şimdi üç boş sayfamız olduğuna göre, birincisine bir **textbox** ekleyelim. `TextBoxField`, PDF Acrobat Reader’da ya da form destekleyen herhangi bir PDF görüntüleyicide açıldığında son kullanıcıların metin girebileceği bir form öğesidir. + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**Neden Dikdörtgen Koordinatları?** Aspose.PDF, birimi olarak nokta (inçin 1/72) kullanır. `(100, 700, 300, 730)` dikdörtgeni, textbox'ı sayfanın ortasına doğru, 200 pt genişliğinde ve 30 pt yüksekliğinde yerleştirir. Bu sayıları düzenleyerek tasarımınıza uyarlayın. + +> **Common question:** *`Value` özelliğini ayarlamam gerekiyor mu?* +> Hayır, isteğe bağlıdır. Boş bırakmak boş bir alan gösterir; varsayılan bir değer ayarlamak kullanıcıyı yönlendirebilir. + +## Adım 3: Sayfa 2 ve 3'te Aynı Alan İçin Widget Açıklamaları Ekleme + +**Widget**, belirli bir sayfada bir form alanının görsel temsilidir. Varsayılan olarak bir alan yalnızca oluşturulduğu sayfada görünür. Aynı textbox'ı diğer sayfalarda yeniden kullanmak için, alana ek `WidgetAnnotation` nesneleri ekleyerek `Widgets` koleksiyonuna bağlarsınız. + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**Neden widget'lar?** Onlar olmadan, kullanıcı sadece sayfa 1'de textbox'ı görür, altındaki alan mevcut olsa bile. Widget'lar, tek bir mantıksal alanı birden fazla sayfada paylaşmanıza izin verir ve girilen metnin alanın gösterildiği her yerde görünmesini sağlar. + +> **Edge case:** Her sayfada textbox'ı farklı koordinatlarda konumlandırmanız gerekiyorsa, sadece her widget için `Rectangle` değerlerini değiştirin. + +## Adım 4: Alanı Belgenin Form Koleksiyonuna Kaydetme + +Aspose.PDF, tüm form alanlarının merkezi bir kaydını tutar. Alanı `Form` koleksiyonuna eklemek, PDF'nin etkileşimli form yapısının bir parçası olmasını sağlar. + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +İkinci argüman (`"Comment"`) alanın **tam nitelikli adı**dır. Belge boyunca benzersiz olmalıdır; aksi takdirde Aspose bir istisna fırlatır. + +## Adım 5: Oluşturulan PDF'yi Kaydetme – PDF Nasıl Kaydedilir + +Son olarak, bellek içindeki belgeyi diske kaydediyoruz. Bu, öğreticinin **pdf kaydetme** kısmıdır. + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**Neden mutlak bir yol belirtilir?** Mutlak yol kullanmak, özellikle programı Visual Studio hata ayıklayıcısından çalıştırırken çalışma dizini karışıklığını önler. Göreli bir yol tercih ederseniz, `Save` çağırmadan önce klasörün var olduğundan emin olun. + +### Beklenen Sonuç + +*MultiWidgetField.pdf* dosyasını Adobe Acrobat Reader'da açın. Sayfa 1, 2 ve 3'te aynı textbox'ı göreceksiniz. Herhangi bir sayfadaki alana bir şeyler yazın—metin diğer sayfalarda anında görünecek çünkü aynı temel form alanını paylaşıyorlar. + +![Üç sayfada bir textbox gösteren PDF Belgesi Oluşturma örneği](https://example.com/placeholder-image.png "PDF Belgesi Oluşturma örneği") + +*Resim alt metni: Üç sayfada bir textbox gösteren PDF Belgesi Oluşturma örneği.* + +## Tam, Çalıştırmaya Hazır Örnek + +Aşağıda, yeni bir konsol projesine (`dotnet new console`) kopyalayıp çalıştırabileceğiniz tam program yer alıyor. Tüm adımlar zaten sıralı ve kod, açıklık için yorumlar içeriyor. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +Programı çalıştırın, `C:\Temp\` konumuna gidin ve oluşturulan PDF'yi açın. Kullanıcı girişi için hazır üç aynı textbox'ı göreceksiniz. + +## Yaygın Varyasyonlar ve Kenar Durumları + +| Senaryo | Ne Değiştirilmeli | Neden | +|----------|----------------|-----| +| **Her sayfada farklı textbox boyutu** | `WidgetAnnotation` için `Rectangle` değerlerini ayarlayın. | Alanı farklı düzenlere uydurmanızı sağlar. | +| **Salt okunur alan** | `commentField.ReadOnly = true;` olarak ayarlayın. | Kullanıcıların içeriği ilk doldurmanın ardından düzenlemesini engeller. | +| **Çok satırlı textbox** | `commentField.Multiline = true;` olarak ayarlayın ve dikdörtgen yüksekliğini artırın. | Kaydırma yapmadan daha uzun yorumlar eklemenizi sağlar. | +| **İkinci bir alan ekleme** | Başka bir `TextBoxField` (veya herhangi bir `FormField`) oluşturun ve yeni bir adla adım 2‑4'ü tekrarlayın. | Aynı PDF içinde birden fazla bilgi toplayabilirsiniz. | + +## Pro İpuçları ve Kaçınılması Gereken Tuzaklar + +- **Sayfa İndeksleme:** `pdfDocument.Pages[1]` ilk sayfadır, `[0]` değil. 0‑tabanlı ve 1‑tabanlı indeksleri karıştırmak “Dizin aralık dışı” istisnalarına yol açar. +- **Alan Adı Çakışmaları:** İki alan aynı tam nitelikli adı paylaşamaz. Çift ad hatası alırsanız, `Form.Add`'e gönderdiğiniz dizeyi iki kez kontrol edin. +- **Lisans vs. Değerlendirme:** Değerlendirme sürümü her sayfaya bir filigran ekler. Üretimde kaldırmak için geçerli bir lisans dağıtın. +- **Performans:** Bir döngüde yüzlerce sayfa eklemek sorun değil, ancak binlerce sayfa gibi büyük PDF'ler üretmeniz gerekiyorsa, şunu düşünün + +{{< /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-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/turkish/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..ad84c58c1 --- /dev/null +++ b/pdf/turkish/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-03-06 +description: C#'ta Aspose.PDF kullanarak PDF belgesi oluşturun. PDF sayfası eklemeyi, + PDF'de dikdörtgen çizmeyi, PDF'ye şekil eklemeyi ve dikdörtgen kenar kalınlığını + kontrol etmeyi tek bir öğreticide öğrenin. +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: tr +og_description: Aspose.PDF ile C#’ta PDF belgesi oluşturun. Bu öğreticide sayfa PDF + ekleme, dikdörtgen PDF çizme, şekil PDF ekleme ve dikdörtgen kenar kalınlığını ayarlama + gösterilmektedir. +og_title: Aspose.PDF ile PDF Belgesi Oluşturma – Tam Kılavuz +tags: +- Aspose.PDF +- C# +- PDF generation +title: Aspose.PDF ile PDF Belgesi Oluşturma – Adım Adım Kılavuz +url: /tr/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose.PDF ile PDF Belgesi Oluşturma – Adım Adım Kılavuz + +Programatik olarak **PDF belgesi oluşturma** ihtiyacı hiç duydunuz mu ve nereden başlayacağınızı bilemediniz mi? Yalnız değilsiniz—birçok geliştirici, uygulamalarının anında faturalar, raporlar veya sertifikalar üretmesi gerektiğinde aynı sorunla karşılaşıyor. + +İyi haber şu ki, Aspose.PDF for .NET ile bunu sadece birkaç satırda yapabilirsiniz ve ayrıca **add page PDF**, **draw rectangle PDF**, **add shape PDF** nasıl yapılır ve **rectangle border thickness** nasıl ayarlanır öğrenirsiniz. Hadi başlayalım. + +## Oluşturacağınız Şey + +Bu kılavuzun sonunda tamamen işlevsel bir C# konsol uygulamanız olacak: + +1. **Creates a PDF document**'i sıfırdan oluşturur. +2. **Adds a page PDF**'yi belgeye ekler. +3. **Draws a rectangle PDF**'yi o sayfada çizer. +4. **Validates**'ı, dikdörtgenin sayfa sınırları içinde kalıp kalmadığını kontrol eder (**add shape PDF** adımı). +5. Özel bir **rectangle border thickness** ayarlar. +6. Sonucu `ShapeValidated.pdf` olarak kaydeder. + +Harici hizmetler yok, gizemli yapılandırma yok—sadece saf C# ve Aspose.PDF. + +### Önkoşullar + +- .NET 6.0 veya daha yeni (kod .NET Framework 4.6+ ile de çalışır). +- `Aspose.Pdf` NuGet paketine referans. Şu şekilde ekleyebilirsiniz: + +```bash +dotnet add package Aspose.Pdf +``` + +- Bir metin editörü veya IDE—Visual Studio, VS Code, Rider, neyi tercih ederseniz. + +> **Pro ipucu:** Kurumsal bir makinede çalışıyorsanız, NuGet kaynağının engellenmediğinden emin olun; aksi takdirde “Package not found” hatası alırsınız. + +--- + +## PDF Belgesi Oluşturma – Belgeyi Başlatma + +İlk adım bir `Document` nesnesi oluşturmaktır. Bunu, her sayfa ve şeklin yer alacağı boş bir tuval olarak düşünün. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +Bu nesneye neden ihtiyacımız var? PDF dosyasının tamamını bellekte temsil eder, `Pages` koleksiyonuna, meta verilere ve güvenlik ayarlarına erişim sağlar. Belgeyi elde ettikten sonra sayfalar, metin, görüntüler ve vektör grafikler eklemeye başlayabilirsiniz. + +--- + +## PDF'ye Sayfa Ekleme (add page pdf) + +Sayfası olmayan bir PDF temelde boş bir dosyadır—anlamsız. Sayfa eklemek basittir ve isterseniz boyutunu özelleştirebilirsiniz. Burada varsayılan A4 boyutunu kullanıyoruz. + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +`Add()` metodu, `Pages` koleksiyonunun bir parçası olan yeni bir `Page` örneği döndürür, böylece hemen üzerine çizmeye başlayabilirsiniz. Gerçek dünyada bir veri kümesi üzerinde döngü yapıp onlarca sayfa ekleyebilirsiniz; aynı tek satırlık çağrı her yineleme için çalışır. + +--- + +## Dikdörtgen Şekli Çizme (draw rectangle pdf) + +Şimdi görsel kısma: görünür bir kenarlığa sahip bir dikdörtgen. İşte **draw rectangle pdf** burada devreye giriyor. + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +Dikkat etmeniz gereken birkaç nokta: + +- `Rect` puan (point) birimini kullanır (1 pt ≈ 1/72 inç). Koordinatlar alt‑sol ve üst‑sağ köşeleri tanımlar, böylece genişlik ve yüksekliği hassas bir şekilde kontrol edebilirsiniz. +- `BorderInfo` hangi kenarlara çizgi ekleneceğini ve çizginin kalınlığını belirlemenizi sağlar. Burada **tüm** kenarlara 2 point kalınlığında bir çizgi uygulayarak dikdörtgene temiz, tekdüze bir görünüm kazandırıyoruz. + +--- + +## Şekil Yerleşimini Doğrulama (add shape pdf) + +Dikdörtgeni sayfaya eklemeden önce, sayfanın yazdırılabilir alanına sığıp sığmadığını doğrulamak akıllıca olur. Aspose.PDF bunun için kullanışlı bir yardımcı metot sunar. + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +Neden zahmet? Bir şekli yanlışlıkla ekran dışına kısmen yerleştirirseniz, PDF görüntüleyici onu kırpabilir ve kullanıcı deneyimi karışık olur. Bu **add shape pdf** koruma koşulu, yalnızca tamamen görünür olacak içeriği eklemenizi sağlar. + +--- + +## PDF'yi Kaydetme (add page pdf) + +Son olarak, bellek içindeki belgeyi diske kaydediyoruz. Yazma izniniz olan herhangi bir konumu seçebilirsiniz. + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +Programı çalıştırdıktan sonra `ShapeValidated.pdf` dosyasını açın—ortada yaklaşık olarak merkezlenmiş, düzgün kenarlıklı bir dikdörtgen içeren tek bir sayfa görmelisiniz. + +--- + +## Beklenen Sonuç + +PDF'yi açtığınızda şunları göreceksiniz: + +- Bir A4‑boyutunda sayfa. +- Alt‑sol köşesi (50 pt, 50 pt) ve üst‑sağ köşesi (600 pt, 800 pt) olan bir dikdörtgen. +- Dikdörtgeni çevreleyen **2‑point kalınlığında** bir kenarlık. + +Konsolda “PDF created successfully!” mesajı görürseniz, kodun sınır kontrolüne takılmadan çalıştığını bilirsiniz. + +![Aspose.PDF ile PDF belgesi oluşturmayı gösteren diyagram](https://example.com/diagram-create-pdf.png "PDF Belgesi Oluşturma – görsel genel bakış") + +*Görsel alt metni, SEO gereksinimlerini karşılamak için birincil anahtar kelimeyi içerir.* + +--- + +## Yaygın Sorular ve Kenar Durumları + +### Farklı bir sayfa boyutuna ihtiyacım olsaydı? + +Varsayılan sayfayı özel bir boyutla değiştirin: + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### Kenarlık rengini nasıl değiştiririm? + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### Aynı sayfada birden fazla şekil ekleyebilir miyim? + +Kesinlikle. Yeni bir `RectangleShape` (veya diğer `Shape` alt sınıfları) ile **add shape pdf** bloğunu tekrarlayın ve `Rect` koordinatlarını buna göre ayarlayın. + +### Dikdörtgen sayfa sınırlarını aşarsa ne olur? + +`IsShapeWithinBounds` çağrısı `false` dönecektir. Üretim kodunda şekli otomatik olarak yeniden boyutlandırmak isteyebilirsiniz: + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +--- + +## Özet + +Aspose.PDF ile **PDF belgesi oluşturma** sürecinin tamamını adım adım inceledik: + +1. `Document`'i başlatın. +2. `Pages.Add()` kullanarak **Add a page PDF**. +3. `RectangleShape` aracılığıyla **Draw a rectangle PDF**. +4. Sayfa içinde kaldığını doğruladıktan sonra **Add shape PDF**. +5. `BorderInfo` ile **rectangle border thickness** kontrol edin. +6. Dosyayı kaydedin. + +Bu, 60 satırdan az kodla tüm iş akışı. + +--- + +## Sıradaki Adımlar + +- **Add text**: `TextFragment` kullanarak dikdörtgen içinde başlık veya etiket yerleştirin. +- **Insert images**: `Image` sınıfı, logo veya grafik eklemenizi sağlar. +- **Create tables**: Faturalar veya veri raporları için mükemmeldir. +- **Apply security**: PDF'yi şifreyle koruyun, eğer hassas veri içeriyorsa. + +Bu konuların her biri burada ele alınan temellere dayanır, böylece daha gelişmiş PDF oluşturma senaryolarını keşfetmeye hazır olursunuz. + +### Denemeye Devam Edin + +Tek bir dikdörtgenle yetinmeyin—farklı şekiller, renkler ve çizgi stilleriyle oynayın. Aspose.PDF API'si zengindir ve ne kadar çok denerseniz o kadar rahat hâle gelirsiniz. Bir sorunla karşılaşırsanız, resmi Aspose dokümantasyonu sağlam bir kaynak olur, ancak yukarıdaki kodun eksiksiz, kopyala‑yapıştır‑hazır bir çözüm olduğunu unutmayın; bugün çalıştırabilirsiniz. + +Kodlamaktan keyif alın, ve PDF'leriniz her zaman hayal ettiğiniz gibi render olsun! + +{{< /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 a2c89fccb..6aff99dd5 100644 --- a/pdf/turkish/net/document-manipulation/_index.md +++ b/pdf/turkish/net/document-manipulation/_index.md @@ -176,6 +176,108 @@ Aspose.PDF for .NET kullanarak bir PDF'den diğerine belirli sayfaları nasıl e ### [.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/) 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ına Nasıl Eklenir: Kapsamlı Bir Kılavuz](./append-pdf-files-aspose-pdf-net-guide/) +Bu ayrıntılı kılavuzla, C# dilinde belge iş akışlarını kolaylaştırmak için mükemmel olan Aspose.PDF for .NET'i kullanarak PDF dosyalarını etkili bir şekilde nasıl ekleyeceğinizi öğrenin. + +### [.NET'te Aspose.PDF Kullanarak PDF'leri Nasıl Eklersiniz: Kapsamlı Bir Kılavuz](./mastering-pdf-append-aspose-pdf-net/) +Bu ayrıntılı kılavuzla Aspose.PDF for .NET kullanarak PDF dosyalarını nasıl verimli bir şekilde ekleyeceğinizi öğrenin. Sorunsuz iş akışları için belge düzenlemede ustalaşın. + +### [Aspose.PDF for .NET Kullanarak PDF Sayfa Boyutları Nasıl Değiştirilir (Adım Adım Kılavuz)](./change-pdf-page-sizes-aspose-dotnet/) +.NET için Aspose.PDF kullanarak bir PDF'deki sayfa boyutlarını nasıl etkili bir şekilde değiştireceğinizi öğrenin. Bu adım adım kılavuz, kurulum, kullanım ve pratik uygulamaları kapsar. + +### [.NET için Aspose.PDF Kullanarak PDF Akışlarını Birleştirme: Eksiksiz Bir Kılavuz](./aspose-pdf-net-stream-concatenation-guide/) +Bu kapsamlı kılavuzla Aspose.PDF for .NET kullanarak PDF akışlarını nasıl birleştireceğinizi öğrenin. Adım adım talimatları, ön koşulları ve pratik uygulamaları keşfedin. + +### [.NET için Aspose.PDF ile PDF'leri Birleştirme: Eksiksiz Bir Kılavuz](./concatenate-pdfs-aspose-pdf-dotnet-guide/) +Aspose.PDF for .NET kullanarak birden fazla PDF dosyasını birleştirmeyi öğrenin. Bu kapsamlı kılavuz kurulum, uygulama ve pratik uygulamaları kapsar. + +### [.NET için Aspose.PDF Kullanarak Boş Sayfalı PDF'leri Birleştirme: Eksiksiz Bir Kılavuz](./concatenate-pdfs-blank-pages-aspose-pdf-net/) +Aspose.PDF for .NET kullanarak PDF dosyalarını birleştirmeyi ve boş sayfalar eklemeyi öğrenin. Belge yönetimi iş akışınızı verimli bir şekilde kolaylaştırın. + +### [.NET ve Aspose.PDF Kullanarak PDF'lere Boş Sayfalar Nasıl Birleştirilir ve Eklenir](./master-net-pdf-manipulation-concatenate-insert-blank-pages-asposepdf/) +Aspose.PDF ile C# kullanarak PDF belgelerini birleştirmeyi ve boş sayfalar eklemeyi öğrenin. Belge yönetimi iş akışlarınızı zahmetsizce kolaylaştırın. + +### [Aspose.PDF .NET Kullanarak PDF Sayfa Boyutunu A4'e Nasıl Dönüştürebilirsiniz | Belge İşleme Kılavuzu](./update-pdf-page-dimensions-aspose-net/) +Aspose.PDF for .NET kullanarak PDF sayfa boyutlarını A4'e nasıl güncelleyeceğinizi öğrenin. Belgelerinizi etkili bir şekilde standartlaştırmak için bu adım adım kılavuzu izleyin. + +### [.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/) +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/) +Aspose.PDF for .NET kullanarak bir PDF belgesinden belirli sayfaları kolayca nasıl sileceğinizi öğrenin. Bu adım adım kılavuz, kurulumu, uygulamayı ve en iyi uygulamaları kapsar. + +### [Aspose.PDF for .NET'te Dosya Sıkıştırma Nasıl Devre Dışı Bırakılır: Adım Adım Kılavuz](./disable-file-compression-aspose-pdf-net-guide/) +Bu kapsamlı kılavuzla Aspose.PDF for .NET kullanarak PDF'lerde dosya sıkıştırmayı nasıl devre dışı bırakacağınızı öğrenin. Belge işleme becerilerinizi bugün geliştirin. + +### [Aspose.PDF for .NET Kullanarak Belirli PDF Sayfalarını Nasıl Çıkarır ve Kaydedersiniz - Kapsamlı Bir Kılavuz](./extract-save-pdf-pages-aspose-net/) +C# uygulamalarınızda Aspose.PDF for .NET kullanarak PDF'lerden belirli sayfaları verimli bir şekilde nasıl çıkaracağınızı ve kaydedeceğinizi öğrenin. Belge düzenlemede kolaylıkla ustalaşın. + +### [Aspose.PDF ile .NET'te Akışları Kullanarak PDF'den Sayfalar Nasıl Çıkarılır](./extract-pages-pdf-aspose-net-streams/) +.NET'te C# ve Aspose.PDF kullanarak bir PDF dosyasından belirli sayfaları etkili bir şekilde nasıl çıkaracağınızı öğrenin. En iyi belge düzenlemesi için bu adım adım kılavuzu izleyin. + +### [Aspose.PDF for .NET Kullanarak PDF'lerde Gizli ve Aranabilir Metin Nasıl Uygulanır](./aspose-pdf-dotnet-hidden-text-pdfs/) +Aspose.PDF for .NET kullanarak PDF belgelerindeki gizli metinleri nasıl yöneteceğinizi öğrenin. Bu kılavuz, metin ekleme, arama ve metin görünürlüğünü iyileştirmeyi kapsar. + +### [.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/) +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ına Nasıl Eklenir: Kapsamlı Bir Kılavuz](./append-pdf-files-aspose-pdf-net-guide/) +Bu ayrıntılı kılavuzla, C# dilinde belge iş akışlarını kolaylaştırmak için mükemmel olan Aspose.PDF for .NET'i kullanarak PDF dosyalarını etkili bir şekilde nasıl ekleyeceğinizi öğrenin. + +### [.NET'te Aspose.PDF Kullanarak PDF'leri Nasıl Eklersiniz: Kapsamlı Bir Kılavuz](./mastering-pdf-append-aspose-pdf-net/) +Bu ayrıntılı kılavuzla Aspose.PDF for .NET kullanarak PDF dosyalarını nasıl verimli bir şekilde ekleyeceğinizi öğrenin. Sorunsuz iş akışları için belge düzenlemede ustalaşın. + +### [Aspose.PDF for .NET Kullanarak PDF Sayfa Boyutları Nasıl Değiştirilir (Adım Adım Kılavuz)](./change-pdf-page-sizes-aspose-dotnet/) +.NET için Aspose.PDF kullanarak bir PDF'deki sayfa boyutlarını nasıl etkili bir şekilde değiştireceğinizi öğrenin. Bu adım adım kılavuz, kurulum, kullanım ve pratik uygulamaları kapsar. + +### [.NET için Aspose.PDF Kullanarak PDF Akışlarını Birleştirme: Eksiksiz Bir Kılavuz](./aspose-pdf-net-stream-concatenation-guide/) +Bu kapsamlı kılavuzla Aspose.PDF for .NET kullanarak PDF akışlarını nasıl birleştireceğinizi öğrenin. Adım adım talimatları, ön koşulları ve pratik uygulamaları keşfedin. + +### [.NET için Aspose.PDF ile PDF'leri Birleştirme: Eksiksiz Bir Kılavuz](./concatenate-pdfs-aspose-pdf-dotnet-guide/) +Aspose.PDF for .NET kullanarak birden fazla PDF dosyasını birleştirmeyi öğrenin. Bu kapsamlı kılavuz kurulum, uygulama ve pratik uygulamaları kapsar. + +### [.NET için Aspose.PDF Kullanarak Boş Sayfalı PDF'leri Birleştirme: Eksiksiz Bir Kılavuz](./concatenate-pdfs-blank-pages-aspose-pdf-net/) +Aspose.PDF for .NET kullanarak PDF dosyalarını birleştirmeyi ve boş sayfalar eklemeyi öğrenin. Belge yönetimi iş akışınızı verimli bir şekilde kolaylaştırın. + +### [.NET ve Aspose.PDF Kullanarak PDF'lere Boş Sayfalar Nasıl Birleştirilir ve Eklenir](./master-net-pdf-manipulation-concatenate-insert-blank-pages-asposepdf/) +Aspose.PDF ile C# kullanarak PDF belgelerini birleştirmeyi ve boş sayfalar eklemeyi öğrenin. Belge yönetimi iş akışlarınızı zahmetsizce kolaylaştırın. + +### [Aspose.PDF .NET Kullanarak PDF Sayfa Boyutunu A4'e Nasıl Dönüştürebilirsiniz | Belge İşleme Kılavuzu](./update-pdf-page-dimensions-aspose-net/) +Aspose.PDF for .NET kullanarak PDF sayfa boyutlarını A4'e nasıl güncelleyeceğinizi öğrenin. Belgelerinizi etkili bir şekilde standartlaştırmak için bu adım adım kılavuzu izleyin. + +### [.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/) +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/) +Aspose.PDF for .NET kullanarak bir PDF belgesinden belirli sayfaları kolayca nasıl sileceğinizi öğrenin. Bu adım adım kılavuz, kurulumu, uygulamayı ve en iyi uygulamaları kapsar. + +### [Aspose.PDF for .NET'te Dosya Sıkıştırma Nasıl Devre Dışı Bırakılır: Adım Adım Kılavuz](./disable-file-compression-aspose-pdf-net-guide/) +Bu kapsamlı kılavuzla Aspose.PDF for .NET kullanarak PDF'lerde dosya sıkıştırmayı nasıl devre dışı bırakacağınızı öğrenin. Belge işleme becerilerinizi bugün geliştirin. + +### [Aspose.PDF for .NET Kullanarak Belirli PDF Sayfalarını Nasıl Çıkarır ve Kaydedersiniz - Kapsamlı Bir Kılavuz](./extract-save-pdf-pages-aspose-net/) +C# uygulamalarınızda Aspose.PDF for .NET kullanarak PDF'lerden belirli sayfaları verimli bir şekilde nasıl çıkaracağınızı ve kaydedeceğinizi öğrenin. Belge düzenlemede kolaylıkla ustalaşın. + +### [Aspose.PDF ile .NET'te Akışları Kullanarak PDF'den Sayfalar Nasıl Çıkarılır](./extract-pages-pdf-aspose-net-streams/) +.NET'te C# ve Aspose.PDF kullanarak bir PDF dosyasından belirli sayfaları etkili bir şekilde nasıl çıkaracağınızı öğrenin. En iyi belge düzenlemesi için bu adım adım kılavuzu izleyin. + +### [Aspose.PDF for .NET Kullanarak PDF'lerde Gizli ve Aranabilir Metin Nasıl Uygulanır](./aspose-pdf-dotnet-hidden-text-pdfs/) +Aspose.PDF for .NET kullanarak PDF belgelerindeki gizli metinleri nasıl yöneteceğinizi öğrenin. Bu kılavuz, metin ekleme, arama ve metin görünürlüğünü iyileştirmeyi kapsar. + +### [.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/) +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/) .NET için Aspose.PDF'yi kullanarak PDF dosyalarını birleştirmeyi öğrenin, erişilebilirlik için mantıksal yapıyı koruyun. Bu kılavuz akış birleştirmeyi, performans optimizasyonunu ve pratik uygulamaları kapsar. @@ -309,7 +411,9 @@ Aspose.PDF for .NET kullanarak PDF sayfalarını ayrı dosyalara nasıl bölece Çok sayfalı PDF'leri nasıl böleceğinizi ve .NET için Aspose.PDF kullanarak yeni PDF dosyaları nasıl oluşturacağınızı öğrenin. Kod örnekleriyle bu kapsamlı kılavuzu izleyin. ### [Aspose.PDF .NET ile PDF Düzenlemeye İlişkin Nihai Kılavuz: Metni Verimli Şekilde Yükleyin, Kaydedin ve Değiştirin](./master-pdf-manipulation-aspose-pdf-net/) -Aspose.PDF for .NET kullanarak PDF düzenlemede ustalaşmayı öğrenin. Bu kılavuz, PDF'lerde metin yükleme, kaydetme ve değiştirmeyi kapsar ve verimlilik arayan geliştiriciler için idealdir. + +### [C# ile Aspose PDF Kullanarak PDF Kırpma – Tam Kılavuz](./how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/) +Aspose PDF for .NET ile C# kullanarak PDF belgelerindeki hassas bilgileri güvenli bir şekilde kırpmayı adım adım öğrenin. ## Ek Kaynaklar diff --git a/pdf/turkish/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/turkish/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..2b46d0ebd --- /dev/null +++ b/pdf/turkish/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-03-06 +description: Aspose PDF'i C#'ta kullanarak PDF nasıl redakte edilir öğrenin. Bu adım + adım kılavuz, PDF belgesini C#'ta nasıl yükleyeceğinizi, ilk PDF sayfasına nasıl + erişeceğinizi ve PDF'den görüntüyü nasıl kaldıracağınızı gösterir. +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: tr +og_description: Aspose PDF ile C#’ta PDF’yi hızlıca nasıl kırpılır. PDF belgesini + yükleyin, ilk PDF sayfasına erişin ve sadece birkaç satır kodla PDF’den resmi kaldırın. +og_title: C#'ta PDF'yi Kırpma – Aspose PDF Öğreticisi +tags: +- Aspose PDF +- C# +- PDF Redaction +title: How to Redact PDF in C# with Aspose PDF – Complete Guide +url: /tr/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# ile Aspose PDF Kullanarak PDF Kırpma – Tam Kılavuz + +Hiç **PDF'i nasıl kırpılır** dosyalarını zahmetsizce yapabileceğinizi merak ettiniz mi? Belki gizli bir logoyu gizleyen bir sözleşme aldınız ya da silmeniz gereken bir yer tutucu görseli hâlâ gösteren bir raporla karşılaştınız. Bu anlarda, içeriği programatik olarak kaldıracak güvenilir bir yönteme ihtiyacınız olacak—manuel Acrobat sihirbazlığına gerek kalmadan. + +Bu öğreticide, **PDF belgesini C# ile yükleme**, **ilk PDF sayfasına erişme**, ve ardından güçlü **Aspose PDF kullanma** kütüphanesiyle **PDF'den resmi kaldırma** adımlarını içeren özlü, uçtan uca bir çözümü adım adım inceleyeceğiz. Sonunda dağıtıma hazır tamamen kırpılmış bir PDF elde edecek ve kodun her satırının neden önemli olduğunu anlayacaksınız. + +> **Pro ipucu:** Aspose PDF, .NET Framework 4.6+ ve .NET Core 3.1+ ile çalışır, bu yüzden Windows, Linux veya macOS üzerinde olsanız da kapsam altındasınız. + +--- + +![how to redact pdf example](redact-pdf-before-after.png){alt="pdf'i nasıl kırpılır örnek"} + +## Gereksinimler + +- **Aspose.PDF for .NET** (en son NuGet paketi) +- **C# geliştirme ortamı** (Visual Studio, Rider veya VS Code) +- Silmek istediğiniz bir görsel kaynağı içeren örnek PDF (biz ona `Sensitive.pdf` diyeceğiz) + +Ek bir üçüncü‑taraf aracı, OCR yok, sadece saf kod. + +## Adım 1: PDF Belgesini C# ile Yükleme – İlk Adım + +Herhangi bir şeyi kırpmadan önce dosyayı belleğe yüklemeniz gerekir. `Document` sınıfı, her Aspose PDF işleminin giriş noktasıdır. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**Neden önemli:** +`Document`, tüm PDF yapısını ayrıştırarak sayfaları, kaynakları ve açıklamaları manipüle etmenizi sağlayan bir nesne modeli oluşturur. Dosya yüklenemezse (yanlış yol, bozuk PDF), bir istisna hemen fırlatılır—bu sayede sorunun erken farkına varırsınız. + +### Yaygın Tuzak + +> *“Dosya mevcut olmasına rağmen `FileNotFoundException` alıyorum.”* +> Yolun mutlak olduğundan veya projenizin çalışma dizininin `Sensitive.pdf` konumuyla eşleştiğinden emin olun. `Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")` kullanmak, göreli yol sorunlarını önlemeye yardımcı olabilir. + +--- + +## Adım 2: İlk PDF Sayfasına Erişim – Görselin Bulunduğu Yer + +Görseller, sayfa bazında kaynak olarak depolanır. Çoğu basit PDF'de suçlu ilk sayfadır, bu yüzden onu alalım. + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**Neden önemli:** +Aspose PDF, sayfalar için 1‑tabanlı bir indeks kullanır; bu, çoğu .NET koleksiyonuna göre biraz alışılmadık bir durumdur. Yanlış sayfaya erişmek, yanlış içeriği kırpmanız anlamına gelebilir—ya da daha kötüsü, hassas görseli yerinde bırakabilirsiniz. + +### Kenar Durumu Düşüncesi + +Eğer belgenizde hiç sayfa yoksa (boş bir PDF), `pdfDocument.Pages[1]` çağrısı bir `IndexOutOfRangeException` fırlatır. Hızlı bir kontrol sizi kurtarabilir: + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +--- + +## Adım 3: PDF'den Resmi Kaldırma – Kaynağı Kırpma + +Aspose PDF, bir kaynağı adını vererek silmenize izin verir. Çoğu görsel `Im1`, `Im2` gibi adlandırılmıştır, ancak `firstPage.Resources.Images`'ı inceleyerek doğrulayabilirsiniz. + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**Neden önemli:** +`RedactResource`, resmi *ve* sayfadaki ona ait tüm referansları kaldırır, böylece görsel boşluk kırık bir bağlantı yerine boş bir alanla doldurulur. Bu, içeriği silmenin temiz, PDF‑standardı bir yoludur. + +### Doğru Görsel Adını Nasıl Bulursunuz + +Görselin adının `"Im1"` olup olmadığından emin değilseniz: + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +Bu kodu çalıştırın, konsol çıktısını kontrol edin ve `"Im1"` yerine gördüğünüz gerçek anahtarı koyun. + +--- + +## Adım 4: Kırpılmış PDF'yi Kaydetme – İşin Tamamlanması + +İstenmeyen görsel artık kaldırıldı, değişiklikleri diske geri yazın. + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**Neden önemli:** +**Yeni** bir dosyaya kaydetmek, orijinali dokunulmaz tutar—geri dönmeniz gerekirse bir güvenlik ağı sağlar. Üzerine yazmanız gerekiyorsa, `Save` metodunu orijinal yola yönlendirin, ancak işlemin geri alınamaz olduğunu unutmayın. + +### Sonucu Doğrulama + +`Redacted.pdf` dosyasını herhangi bir PDF görüntüleyicide açın. Görsel alanı boş görünmeli ve belgenin geri kalanı orijinaliyle aynı olmalı. Sayfa düzeni kaymış gibi görünürse, sadece hedef kaynağı kaldırdığınızdan ve paylaşılan bir XObject'i silmediğinizden emin olun. + +## Tam Çalışan Örnek + +Hepsini bir araya getirerek, işte tam, çalıştırmaya hazır program: + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**Beklenen çıktı** (konsolda): + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +`Redacted.pdf` dosyasını açtığınızda, daha önce `Im1` olan görsel kaybolacak ve temiz bir sayfa kalacaktır. + +## Sıkça Sorulan Sorular + +### Şifreli PDF'lerde çalışır mı? + +Kaynak PDF şifre korumalıysa, şifreyi `Document` yapıcısına iletin: + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### Görsel birden fazla sayfada görünürse ne olur? + +Her sayfada döngü oluşturup aynı görsel adıyla `RedactResource` çağırın (veya sayfa başına adı keşfedin). Örnek: + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### Metni aynı şekilde kırpabilir miyim? + +Evet—`page.Contents.RedactText("confidential")` kullanın veya daha gelişmiş desenler için `Redactor` sınıfını kullanın. Bu, kendi başına bir öğreticidir, ancak prensip görsellerde yaptıklarımızla aynıdır. + +## Sonuç – Ne Başardık + +**PDF'i nasıl kırpılır** dosyalarını programatik olarak yanıtladık: + +1. Aspose PDF ile **PDF belgesini C# ile yükleme**. +2. Hedef kaynağı bulmak için **ilk PDF sayfasına erişme**. +3. `RedactResource` ile **PDF'den resmi kaldırma**. +4. **Kaydetme** ile temizlenmiş sürümü güvenli bir şekilde saklama. + +Bu yöntem hızlı, tekrarlanabilir ve toplu işler içinde çalışır—uyumluluk hatları veya otomatik rapor üretimi için mükemmeldir. + +Daha ileri gitmeye hazırsanız, şunları keşfetmeyi düşünün: + +- PDF'lerin bulunduğu bir klasörde **toplu kırpma**. +- `Redactor` kullanarak regex desenleriyle **metin kırpma**. +- Kırpmadan sonra “temizlenmiş” mesajı vermek için **filigran ekleme**. + +Deneyin, kendi dosyalarınız için görsel adı mantığını ayarlayın, + +{{< /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/performance-optimization/_index.md b/pdf/turkish/net/performance-optimization/_index.md index 0f5cb4e09..42cb866ff 100644 --- a/pdf/turkish/net/performance-optimization/_index.md +++ b/pdf/turkish/net/performance-optimization/_index.md @@ -50,6 +50,8 @@ Aspose.PDF for .NET kullanarak SVG dosyalarını hassas ve verimli bir şekilde ### [Aspose.PDF for .NET Kullanarak PDF'lerdeki Yazı Tiplerini Kaldırma: Dosya Boyutunu Azaltın ve Performansı İyileştirin](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) Aspose.PDF for .NET kullanarak PDF dosyalarınızdaki yazı tiplerini nasıl kaldıracağınızı öğrenin. Bu adım adım kılavuzla PDF performansını optimize edin, dosya boyutunu küçültün ve yükleme sürelerini iyileştirin. +### [Aspose.PDF ile PDF sıkıştırma – hızlı rehber](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) + ## Ek Kaynaklar - [Net Belgeleme için Aspose.PDF](https://docs.aspose.com/pdf/net/) diff --git a/pdf/turkish/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/turkish/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..c886c68e6 --- /dev/null +++ b/pdf/turkish/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,203 @@ +--- +category: general +date: 2026-03-06 +description: Aspose.Pdf kullanarak PDF'yi anında nasıl sıkıştıracağınızı öğrenin. + Bu kılavuz, kayıpsız PDF sıkıştırmasıyla PDF dosya boyutunu nasıl azaltacağınızı + gösterir. +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: tr +og_description: Aspose.Pdf kullanarak pdf nasıl sıkıştırılır? PDF dosya boyutunu azaltmak, + kayıpsız pdf sıkıştırması elde etmek ve optimize edilmiş pdf dosyalarını kaydetmek + için bu adım adım öğreticiyi izleyin. +og_title: Aspose.Pdf ile PDF sıkıştırma – hızlı rehber +tags: +- pdf +- aspnet +- csharp +title: Aspose.Pdf ile PDF sıkıştırma – hızlı rehber +url: /tr/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose.Pdf ile PDF sıkıştırma – hızlı rehber + +PDF dosyalarını bulanık bir karmaşa haline getirmeden **pdf nasıl sıkıştırılır** diye hiç merak ettiniz mi? Tek başınıza değilsiniz. Çoğu geliştirici, e‑posta ekleri, web yüklemeleri veya depolama limitleri için **pdf dosya boyutunu küçültmek** gerektiğinde bir duvara çarpar, ancak görüntü kalitesini kaybetmekten korkar. + +Bu öğreticide, Aspose.Pdf'nin yerleşik optimizasyon aracını kullanarak **pdf nasıl sıkıştırılır** gösteren eksiksiz, çalıştırmaya hazır bir örnek üzerinden adım adım ilerleyeceğiz. Sonunda **pdf dosya boyutunu küçült** nasıl yapılır, görüntülerinizi **kayıpsız pdf sıkıştırma** ile nasıl net tutarsınız ve sonunda **optimize edilmiş pdf** dosyalarını herhangi bir görüntüleyicide sorunsuz çalışacak şekilde nasıl kaydedersiniz, öğrenmiş olacaksınız. + +## Öğrenecekleriniz + +- Ağır bir PDF'i (örneğin yüksek çözünürlüklü görüntülerle dolu bir PDF) belleğe yükleyin. +- Aspose.Pdf'nin varsayılan kayıpsız ayarlarıyla optimizatörünü uygulayın. +- Sonucu yeni, daha küçük bir dosya olarak kaydedin. +- Daha fazla sıkıştırma ihtiyacınız varsa sıkıştırmayı ayarlamak için ipuçları. + +Harici araçlar yok, gizemli komut satırı hileleri de yok—sadece temiz C# kodu ve açık açıklamalar. + +## Önkoşullar + +| Gereksinim | Neden Önemli | +|-------------|----------------| +| .NET 6.0 or later (or .NET Framework 4.6+) | Aspose.Pdf her ikisini destekler; daha yeni çalışma zamanları daha iyi performans sağlar. | +| Aspose.Pdf for .NET NuGet package (`Aspose.Pdf`) | `Document` sınıfı burada bulunur. | +| A PDF with large images (e.g., `HeavyImages.pdf`) | Küçültmek için somut bir şey sağlar. | +| Visual Studio, Rider, or any C# editor you prefer | Rahatlık önemlidir—size doğal geleni seçin. | + +> **Pro ipucu:** CI/CD hattındaysanız, NuGet referansını `.csproj` dosyanıza ekleyin, böylece derleme asla unutmaz. + +```xml + + + +``` + +## Adım 1: Sıkıştırmak istediğiniz PDF'i yükleyin + +İlk olarak, kaynak dosyaya işaret eden bir `Document` nesnesine ihtiyacımız var. Bunu, bölümleri düzenlemeye başlamadan önce bir kitabı açmak gibi düşünün. + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*Neden önemli:* Dosyanın yüklenmesi, Aspose.Pdf'ye tüm gömülü kaynakları (görüntüler, yazı tipleri vb.) okuma fırsatı verir. Bu adım olmadan **pdf dosya boyutunu küçült** için bir şey olmaz. + +## Adım 2: Kayıpsız PDF sıkıştırmasını uygulayın + +Aspose.Pdf, varsayılan olarak bir **kayıpsız pdf sıkıştırma** rutini çalıştıran bir `Optimize` yöntemiyle birlikte gelir. Gereksiz nesneleri temizler, görüntüleri aynı görsel doğrulukla yeniden sıkıştırır ve kullanılmayan yazı tiplerini kaldırır. + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*Neden önemli:* Varsayılan optimizatör, her pikseli korurken **pdf dosya boyutunu küçült** şekilde tasarlanmıştır. Daha sonra ufak bir kalite düşüşünü tolere edebileceğinize karar verirseniz, yorum satırı haline getirilmiş `OptimizationOptions` birkaç ekstra kilobaytı hız için takas etmenizi sağlar. + +## Adım 3: Optimize edilmiş PDF'i kaydedin + +Artık belge daha hafif olduğuna göre, onu yeni bir dosyaya yazıyoruz. Orijinali dokunulmadan bırakmak iyi bir alışkanlıktır, özellikle farklı ayarları test ederken. + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +Kaydetmeden sonra dosya boyutlarını karşılaştırın: + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +Kaynak dosyada kaç tane yüksek çözünürlüklü görüntü olduğu bağlı olarak genellikle **%30‑70** arasında belirgin bir düşüş görmelisiniz. + +![pdf sıkıştırma – optimizasyondan önce ve sonra](image.png "pdf sıkıştırma") + +*Görsel alt metni:* pdf sıkıştırma – optimizasyondan önce ve sonra + +## İleri Seviye: Belirli Senaryolar için Sıkıştırmayı Ayarlama + +Varsayılan optimizatör çoğu durum için harika olsa da, bazen **pdf dosya boyutunu daha da küçült**meniz gerekir: + +| Senaryo | Ayar | Etki | +|----------|-------------------|--------| +| PDF'lerde çok sayıda raster görüntü | `CompressImages = true` + lower `ImageQuality` (e.g., 70) | Görüntü bayt sayısını azaltır, hafif görsel kayıp. | +| PDF'lerde yinelenen yazı tipleri | `RemoveUnusedObjects = true` | Referans edilmeyen yazı tiplerini temizler. | +| PDF'lerde büyük meta veriler | `RemoveMetadata = true` | Gizli XML/meta veri bloklarını kaldırır. | + +Bunları bir `OptimizationOptions` nesnesinde birleştirip `pdfDoc.Optimize(options)` metoduna geçirebilirsiniz. + +## Yaygın Sorular & Kenar Durumları + +**PDF zaten optimize edilmişse ne olur?** +Aspose.Pdf yine de belgeyi tarar, ancak boyut değişikliği minimal olur. Zaten ince bir dosyada optimizatörü çalıştırmak güvenlidir; hiçbir şeyi bozmaz. + +**Şifreli PDF'leri sıkıştırabilir miyim?** +Evet, ancak `Optimize` çağırmadan önce şifreyi sağlamalısınız. Örnek: + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**Vektör grafik içeren PDF'ler hakkında ne söyleyebilirsiniz?** +Vektör nesneleri zaten hafiftir, bu yüzden optimizatör raster görüntülere ve meta verilere odaklanır. Saf vektör dosyaları için mütevazı kazançlar bekleyin. + +## Tam, Çalıştırılabilir Örnek + +Aşağıda, yeni bir `.csproj` içine kopyalayıp yapıştırabileceğiniz bağımsız bir konsol uygulaması bulunuyor. Yüklemeden doğrulamaya kadar tartışılan her şeyi gösterir. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +Programı çalıştırın, herhangi bir görüntüleyicide `Optimized.pdf` dosyasını açın ve aynı sayfa düzenini, aynı net görüntüleri, ancak daha ince bir dosyayı göreceksiniz. İşte **kayıpsız pdf sıkıştırma**'ın sihri. + +## Sonuç + +Aspose.Pdf'nin yerleşik optimizatörünü kullanarak **pdf nasıl sıkıştırılır** dosyalarını ele aldık, pratik bir **pdf dosya boyutunu küçült** iş akışı gösterdik ve her adımın altında yatan nedenleri açıkladık. Üç adımlı modeli—yükle, optimize et, kaydet—takip ederek, **pdf dosya boyutunu küçült** işlemini anında yapabilir, görüntülerinizi **kayıpsız pdf sıkıştırma** ile bozulmadan tutabilir ve **optimize edilmiş pdf** dosyalarını güvenle aşağı akış tüketimi için kaydedebilirsiniz. + +Bir sonraki meydan okumaya hazır mısınız? Bu optimizatörü bir toplu betikle birleştirerek tüm bir klasörü işleyebilir veya isteğe bağlı `OptimizationOptions` ile son birkaç kilobaytı sıkıştırmayı deneyebilirsiniz. Aynı prensipler, masaüstü aracı, web API'si ya da sunucu tarafı toplu işi üzerinde çalışsanız da geçerlidir. + +PDF işleme, Aspose.Pdf tuhaflıkları veya .NET dosya I/O hakkında daha fazla sorunuz mu var? Aşağıya bir yorum bırakın, sohbeti sürdürelim. İyi sıkıştırmalar! + +{{< /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/programming-with-security-and-signatures/_index.md b/pdf/turkish/net/programming-with-security-and-signatures/_index.md index 64c55ce46..84228ebf0 100644 --- a/pdf/turkish/net/programming-with-security-and-signatures/_index.md +++ b/pdf/turkish/net/programming-with-security-and-signatures/_index.md @@ -34,6 +34,8 @@ Eğitim, PDF dosyalarınızın gizliliğini ve gerçekliğini sağlamak için y | [Pdf Dosya İmzası Kullanarak Akıllı Kartla İmzalayın](./sign-with-smart-card-using-pdf-file-signature/) | Aspose.PDF for .NET ile akıllı kart kullanarak PDF dosyalarını nasıl imzalayacağınızı öğrenin. Güvenli dijital imzalar için bu adım adım kılavuzu izleyin. | | [İmza Alanını Kullanarak Akıllı Kartla İmzalayın](./sign-with-smart-card-using-signature-field/) | Aspose.PDF for .NET ile akıllı kart kullanarak PDF'leri güvenli bir şekilde nasıl imzalayacağınızı öğrenin. Kolay uygulama için adım adım kılavuzumuzu izleyin. | | [C# ile PDF İmzalarını Kontrol Et – İmzalı PDF Dosyalarını Okuma](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) | Aspose.PDF for .NET kullanarak C# ile PDF imzalarını kontrol etmeyi ve imzalı dosyaları okumayı öğrenin. | +| [C# ile PDF'de İmzayı Doğrulama – Tam Aspose Kılavuzu](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) | Aspose.PDF for .NET kullanarak C# ile PDF imzalarını nasıl doğrulayacağınızı adım adım öğrenin. | +| [C# ile PDF'e Dijital İmza Ekle – Tam Adım‑Adım Kılavuz](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) | Aspose.PDF for .NET kullanarak C# ile PDF dosyalarına dijital imza eklemeyi adım adım öğrenin. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/turkish/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/turkish/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..b462c9b85 --- /dev/null +++ b/pdf/turkish/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,258 @@ +--- +category: general +date: 2026-03-06 +description: Aspose.PDF kullanarak PDF'e dijital imza ekleyin. pkcs7 ayrılmış imza + oluşturmayı ve özel bir geri arama ile pfx kullanarak PDF'i imzalamayı öğrenin. +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: tr +og_description: PDF'ye hızlıca dijital imza ekleyin. Bu rehber, pkcs7 ayrık imza oluşturmayı + ve C#'ta pfx kullanarak PDF'yi imzalamayı gösterir. +og_title: C# ile PDF'e Dijital İmza Ekle – Tam Programlama Öğreticisi +tags: +- Aspose.PDF +- C# +- Digital Signature +title: C# ile PDF'e Dijital İmza Ekle – Tam Adım Adım Rehber +url: /tr/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Dijital İmza PDF Ekle – Tam Adım‑Adım Kılavuz + +Hiç **add digital signature pdf** dosyaları eklemeniz gerektiğinde nereden başlayacağınızı bilemediniz mi? Yalnız değilsiniz; birçok geliştirici, belgelerin yasal bağlayıcı bir imza gerektirdiği ve kod tabanının sadece düz PDF'ler üretebildiği durumlarda aynı duvara çarpar. + +Bu öğreticide, Aspose.PDF for .NET kullanarak **add digital signature pdf** belgeleri eklemenizi, PKCS#7 ayrık imzası oluşturmanızı ve PDF'i bir PFX sertifikasıyla imzalamanızı sağlayan uygulamalı bir çözümü adım adım inceleyeceğiz—tamamen C# içinde. Sonunda çalıştırmaya hazır bir kod parçacığına, her çağrının “neden”ine dair anlayışa ve kenar durumları için uyarlama bilgisine sahip olacaksınız. + +## Öğrenecekleriniz + +- İmzalanmamış bir PDF'i nasıl yüklersiniz ve imzalamaya nasıl hazırlarsınız. +- **create pkcs7 detached signature** mekanikleri ve neden bir ayrık imzayı gömülü bir imzaya tercih edebileceğiniz. +- **sign pdf using pfx** adımını özel bir geri çağırma (callback) ile nasıl yaparsınız, böylece kriptografik süreç üzerinde tam kontrol sağlarsınız. +- Yaygın tuzakların (eksik sertifika, yanlış hash algoritması vb.) nasıl giderileceğine dair ipuçları. + +### Ön Koşullar + +| Gereksinim | Sebep | +|------------|-------| +| .NET 6.0 veya üzeri | Modern dil özellikleri ve daha iyi bellek yönetimi. | +| Aspose.PDF for .NET (NuGet paketi) | `PdfFileSignature`, `PKCS7Detached` ve diğer PDF yardımcılarını sağlar. | +| Geçerli bir PFX dosyası (`.pfx`) ve özel anahtar | **sign pdf using pfx** adımı için gereklidir. | +| Temel C# bilgisi | Kod basittir, ancak `using` ifadelerini anlamak yardımcı olur. | + +> **Pro tip:** PFX parolanızı kaynak kontrolünden uzak tutun—üretim ortamı için ortam değişkenleri veya Azure Key Vault kullanın. + +--- + +## Aspose.PDF ile Dijital İmza PDF Nasıl Eklenir + +Aşağıda süreci beş sindirilebilir adıma bölüyoruz. Her adım bir kod snippet'i, *neden* önemli olduğuna dair bir açıklama ve hızlı bir kontrol içerir. + +![İmzalı PDF'in bir görüntüleyicideki ekran görüntüsü, görünür bir imza alanı gösteriyor](/images/add-digital-signature-pdf.png "add digital signature pdf örneği") + +### Adım 1 – İmzalanmamış PDF Belgesini Yükleyin + +İlk olarak imzalamak istediğiniz PDF'i temsil eden bir `Document` nesnesine ihtiyacımız var. `using var` kullanmak dosya tutamacının otomatik olarak serbest bırakılmasını sağlar. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**Neden?** +Aspose bir PDF'i nesne grafiği olarak ele alır; onu yüklemek sayfalara, açıklamalara ve daha sonra imza için hashlenecek iç byte akışına erişim sağlar. + +### Adım 2 – PdfFileSignature Yardımcısını Başlatın + +`PdfFileSignature` aslında kriptografik zarfı uygulayan sınıftır. `PKCS7Detached` ile el ele çalışır. + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**Neden?** +İmzalayanı belge üzerinden ayırmak, aynı `Document` örneğini diğer işlemler (ör. filigran ekleme) için imzayı sonlandırmadan önce yeniden kullanmanıza olanak tanır. + +### Adım 3 – PKCS#7 Ayrık İmza Oluşturun (Create PKCS7 Detached Signature) + +Bir **PKCS#7 ayrık imza** yalnızca PDF'in hash'ini saklar, PDF'i kendisini değil. Bu, büyük belgeler veya orijinal dosyanın değişmeden kalması gerektiğinde idealdir. + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**Neden özel bir geri çağırma?** +Bazen imzalama anahtarı bir HSM'de veya Azure Key Vault'ta bulunur ve özel anahtar doğrudan çıkarılamaz. `CustomSignHash` sağlayarak hash'i anahtarı tutan hizmete gönderirsiniz, böylece özel materyal güvende kalır. + +**Özel geri çağırma gerekmezse ne olur?** +`CustomSignHash`'i atlayabilirsiniz; Aspose PFX içindeki özel anahtarı otomatik olarak kullanır. Ancak özel yol daha esnek olup uyumluluk gereksinimlerine daha iyi uyar. + +### Adım 4 – İmzayı Belirli Bir Sayfaya Uygulayın (Sign PDF Using PFX) + +Şimdi görünür bir imza alanını sayfaya yerleştiriyoruz. Dikdörtgen, konumu ve boyutu (puan cinsinden) tanımlar. + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**Neden bir dikdörtgen tanımlıyoruz?** +Görünür bir imza, son kullanıcıların belgenin imzalı olduğunu görmesini sağlar. `isVisible` değerini `false` yaparsanız imza gizli olur—geçerli ama keşfetmesi zor. + +**Kenar durumu:** PDF'in hiç sayfası yoksa (boş dosya) çağrı `ArgumentOutOfRangeException` fırlatır. İmzalamadan önce her zaman `pdfDocument.Pages.Count > 0` kontrol edin. + +### Adım 5 – İmzalı PDF'i Kaydedin + +Son olarak, imzalı belgeyi diske kalıcı olarak yazın. ASP.NET Core içinde doğrudan bir yanıt akışına da gönderebilirsiniz. + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**Doğrulama ipucu:** Oluşan dosyayı Adobe Acrobat Reader'da açın. Sertifika makinede güvenilir ise imza panelinde yeşil bir onay işareti (checkmark) görmelisiniz. + +--- + +## Tam Çalışan Örnek + +Her şeyi bir araya getirerek, yolları ve parolaları ayarladıktan sonra kopyalayıp çalıştırabileceğiniz bağımsız bir konsol programı aşağıdadır. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**Beklenen çıktı:** Konsol “✅ PDF signed successfully!” mesajını verir ve aynı klasörde `CustomSigned.pdf` dosyası oluşur. Açtığınızda (100,100)‑(300,200) koordinatlarında bir imza widget'ı göreceksiniz. + +--- + +## Sık Sorulan Sorular & Kenar Durumları + +### PFX'im bir akıllı kartla korunuyorsa ne yapmalıyım? + +Hash'i akıllı kart sürücüsüne iletmek için `CustomSignHash` delege'ini kullanın. Sürücü imza baytlarını döndürür ve Aspose bunları özel anahtarı asla ortaya çıkarmadan gömer. + +### Aynı anda birden fazla sayfayı imzalayabilir miyim? + +Evet. `pdfSigner.Sign` metodunu bir döngü içinde çağırın, `pageNumber` ve isteğe bağlı olarak dikdörtgeni her sayfa için ayarlayın. Her çağrı ayrı bir imza nesnesi ekler; bazı görüntüleyiciler bunları ayrı ayrı listeler. + +### Hash algoritmasını nasıl değiştiririm? + +`PKCS7Detached` varsayılan olarak SHA‑256 kullanır, ancak `HashAlgorithm` özelliğini ayarlayabilirsiniz: + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +İmzalayan sağlayıcınızın seçtiğiniz algoritmayı desteklediğinden emin olun. + +### Sertifika zinciri istemci makinesinde güvenilir değilse ne olur? + +Tam zinciri PFX içinde bulundurun veya kök sertifikayı son kullanıcının güven deposuna dağıtın. Aksi takdirde Acrobat “Signature is unknown” uyarısı verir. + +### Ayrık imza PDF/A‑3 ile uyumlu mu? + +PDF/A‑3 gömülü imzalar gerektirir, bu yüzden ayrık PKCS#7 uyumlu olmayabilir. Bu durumda `CustomSignHash` delege'ini kaldırın ve Aspose'un dahili imzalama sürecine bırakın; böylece gömülü bir imza oluşturulur. + +--- + +## Üretim İçin En İyi Uygulamalar + +1. **Parolaları asla kod içinde sabitlemeyin.** Ortam değişkenleri veya bir gizli yönetici (secret manager) üzerinden alın. +2. **PDF'i imzalamadan önce doğrulayın.** Bozuk dosyalar `PdfFileSignatureException` fırlatır. +3. **Hash algoritması ve sertifika parmak izini** denetim izleri için kaydedin. +4. **Birden fazla PDF görüntüleyicide test edin** (Adobe Reader, Foxit, Chrome) imzanın istediğiniz gibi göründüğünden emin olun. +5. **Zaman damgası eklemeyi düşünün**; bir TSA (Time‑Stamp Authority) isteği, imzanın yasal dayanıklılığını artırır. + +--- + +## Sonuç + +Aspose.PDF kullanarak **add digital signature pdf** dosyalarını nasıl ekleyeceğinizi, **PKCS#7 ayrık imza** oluşturmayı ve **sign pdf using pfx** işlemini özel bir geri çağırma ile nasıl yapacağınızı gösterdik. Tam örnek kutudan çıkar çıkmaz çalışır ve açıklamalar, HSM'ler, zaman damgası hizmetleri veya PDF/A uyumluluğu gibi senaryoları özelleştirmeniz için size güven verir. + +Sonraki adım olarak **birden fazla belgeyi toplu olarak imzalama**, **Azure Key Vault** entegrasyonu ile güvenli anahtar depolama veya **imza görünümünü görsel olarak özelleştirme** konularını keşfedebilirsiniz. Bu konular, burada inşa ettiğimiz temelin üzerine doğrudan oturur. + +Adımları izlediyseniz, ekip arkadaşlarınızla paylaşabileceğiniz, hatta bir AI destekli asistan cevabında referans gösterebileceğiniz sağlam, alıntı yapılabilir bir çözümünüz var. İyi imzalamalar, ve bir şey net değilse yorum bırakmaktan çekinmeyin! + +{{< /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/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/turkish/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..50f45edb3 --- /dev/null +++ b/pdf/turkish/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,200 @@ +--- +category: general +date: 2026-03-06 +description: Aspose PDF ile C#’ta bir PDF’deki imzayı nasıl doğrulayacağınızı öğrenin. + Adım adım PDF imza doğrulama, PDF imzasını doğrulama ve bozulmuş imzalarla başa + çıkma. +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: tr +og_description: Aspose PDF ile bir PDF'deki imzayı nasıl doğrularsınız. Bu kılavuzu + izleyerek PDF imza doğrulaması yapın, PDF imzasını doğrulayın ve C#'ta bozulmuş + imzaları tespit edin. +og_title: C# ile PDF'de İmza Nasıl Doğrulanır – Tam Aspose Rehberi +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: C# ile PDF'de İmza Doğrulama – Tam Aspose Rehberi +url: /tr/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# ile PDF’te İmza Nasıl Doğrulanır – Eksiksiz Aspose Rehberi + +PDF’de **imzanın nasıl doğrulanacağını** hiç merak ettiniz mi? Saçlarınızı yolmak zorunda kalmadan! Tek başınıza değilsiniz. Birçok geliştirici, uyumluluk ya da denetim gerekçeleriyle **pdf signature verification** ihtiyacıyla karşılaştığında bir duvara çarpar ve “sadece kütüphaneye güven” yaklaşımı ters tepebilir. + +Bu öğreticide, **pdf imzasını doğrulama** sadece değil, aynı zamanda imzanın değiştirilip değiştirilmediğini de söyleyen pratik, uçtan‑uca bir çözümü adım adım inceleyeceğiz. **Aspose PDF** kütüphanesini kullanacağız; bu sayede kod .NET 6+, .NET Framework 4.6+ ve hatta .NET Core’da çalışır. Sonuna kadar, herhangi bir C# projesine ekleyebileceğiniz hazır bir kod parçacığı elde edeceksiniz. + +## Gereksinimler + +- **Aspose.Pdf** NuGet paketi (yazı anındaki en son sürüm – 23.12). +- .NET geliştirme ortamı (Visual Studio, Rider veya VS Code). +- İmzalı bir PDF dosyası (biz buna `Signed.pdf` diyeceğiz). +- Temel C# bilgisi – sıradan `using` ifadeleri ve `Console` I/O yeterli. + +Hepsi bu. Ek hizmet, gizli konfigürasyon dosyası yok. Hazır mısınız? Hadi başlayalım. + +![imza doğrulama diyagramı](image.png "imza doğrulama") + +## Adım 1: PDF İmza Doğrulama İçin Projenizi Hazırlayın + +Aspose API’sini çağırmadan önce kütüphaneyi referans olarak eklemeniz gerekir. Terminalinizde ya da Package Manager Console’da şu komutu çalıştırın: + +```bash +dotnet add package Aspose.Pdf +``` + +Ya da UI’yı tercih ediyorsanız, NuGet Package Manager’da **Aspose.Pdf** aratıp yükleyin. Bu adım kritik; **aspose pdf signature** assembly’si olmadan `PdfFileSignature` sınıfına erişemezsiniz. + +> **Pro ipucu:** En iyi performans ve eski uyumluluk uyarılarından kaçınmak için .NET 6 ya da üzerini hedefleyin. + +## Adım 2: PDF Belgesini Yükleyin + +Paket yüklendikten sonra kontrol etmek istediğimiz PDF’i açabiliriz. `Document` sınıfı, dosyanın tamamını belleğe alır. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**Neden önemli:** Belgeyi yüklemek, imza alanları da dahil olmak üzere iç yapısına erişmemizi sağlar. Dosya eksik ya da bozuksa, `Document` bir istisna fırlatır; bunu yakalayarak daha nazik bir kullanıcı deneyimi sunabilirsiniz. + +## Adım 3: Aspose PdfFileSignature Nesnesini Oluşturun + +Belge elimizde olduğuna göre, bir sonraki adım `PdfFileSignature` örneği yaratmak. Bu sınıf, PDF’lerde gömülü dijital imzaları okuma, doğrulama ve manipüle etme işlevlerini sağlar. + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**Açıklama:** `PdfFileSignature` yapıcı metodu, yüklenmiş `Document` nesnesini alır. İçeride imza sözlüğünü ayrıştırır ve `VerifySignature` ile `IsSignatureCompromised` gibi metodları kullanılabilir hâle getirir. + +## Adım 4: İmza Bütünlüğünü Doğrulayın + +**pdf signature verification**’ın kalbi `VerifySignature` metodudur. Kriptografik hash değerinin saklananla eşleşmesi ve sertifika zincirinin güvenilir olması durumunda `true` döner (güven yöneticisini burada atlayacağız). + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +Birden fazla imza varsa, indeks (`0`, `1`, …) değiştirerek kontrol edin. Metod, bütünlük ve güveni tek seferde denetler; bu yüzden çoğu senaryoda tercih edilen yöntemdir. + +## Adım 5: Bozulmuş Bir İmzayı Tespit Edin + +“Geçerli” bir imza, imzadan sonra belge değiştirildiyse bozulmuş olabilir. Aspose, bu ince durumu yakalamak için `IsSignatureCompromised` sunar. + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**Ne zaman kullanılır:** PDF imzalanıp ardından bir yorum eklenir ya da bir sayfa değiştirilirse, hash değeri farklı olur ve `IsSignatureCompromised` `true` döner; `VerifySignature` sertifika sağlam olduğu sürece hâlâ `true` olabilir. İki bayrağı da kontrol etmek tam bir tablo sunar. + +## Adım 6: Sonuçları Yorumlayın + +Şimdi elimizde iki boolean var: `isSignatureValid` ve `isSignatureCompromised`. Bunları kullanıcı dostu bir konsol çıktısına dönüştürelim. + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### Beklenen Çıktı + +| Senaryo | Konsol Çıktısı | +|-----------------------------------------|------------------------------------| +| Geçerli ve bozulmamış | `Signature OK` | +| Geçerli ama bozulmuş (belge değiştirildi) | `Signature compromised!` | +| Geçersiz (sertifika güvenilir değil, hash eşleşmiyor) | `Signature verification failed` | + +Bu tablo, boolean sonuçları insan tarafından okunabilir mesajlara hızlıca eşlemenize yardımcı olur. + +## Tam Çalışan Örnek + +Hepsini bir araya getirdiğimizde, işte eksiksiz, çalıştırmaya hazır program: + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +Kopyalayıp, `pdfPath`’i ayarlayın ve çalıştırın. Her şey doğru kurulduysa yukarıdaki üç mesajdan biri görüntülenecek. + +## PDF İmza Doğrulama İçin Yaygın Tuzaklar ve İpuçları + +| Sorun | Neden Oluşur | Çözüm / Önleme | +|-----------------------------------------|--------------------------------------|--------------------------------------------------| +| **Aspose lisansı eksik** | Ücretsiz deneme su işareti ekler ve bazı API çağrılarını kısıtlayabilir. | Lisans kaydedin (`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`). | +| **Birden fazla imza ama yanlış indeks** | Yanlış imzayı kontrol ederek yanlış negatif sonuç alabilirsiniz. | `signatureVerifier.GetSignatureCount()` ile döngü kurun ve her birini inceleyin. | +| **Sertifika zinciri güvenilir değil** | `VerifySignature` kök CA güvenilir depoda yoksa başarısız olur. | İmzalayan CA’yı Windows Trusted Root deposuna ekleyin veya özel bir `CertificateValidator` yapılandırın. | +| **Dosya başka bir süreç tarafından kilitli** | PDF başka bir yerde açıkken açılmaya çalışılırsa `IOException` fırlatılır. | `FileShare.ReadWrite` ile `FileStream` kullanın ya da önce geçici bir dosyaya kopyalayın. | +| **PDF yolu hatalı** | Küçük bir yazım hatası `FileNotFoundException` üretir. | `File.Exists(pdfPath)` ile yolu doğruladıktan sonra yükleyin. | + +### Karşılaşabileceğiniz Kenar Durumları + +- **Ayrı imzalar**: Bazı PDF’ler imzaları dışarıda tutar. Aspose’un `PdfFileSignature` şu anda sadece gömülü imzaları destekler. +- **Zaman damgalı imzalar**: Zaman damgası otoritesini (TSA) doğrulamanız gerekiyorsa, `VerifySignature` metodunu özel bir `VerificationOptions` nesnesiyle çağırmanız gerekir – bu hızlı rehberin kapsamı dışında ama uyumluluk gerektiren projeler için önemlidir. + +## Sonraki Adımlar – Doğrulama Mantığınızı Genişletin + +Temel **imzanın nasıl doğrulanacağını** öğrendinize göre, şimdi şunları yapabilirsiniz: + +1. **PDF imzasını** güvenilir sertifika listesine (ör. şirket PKI) karşı doğrulama. +2. `GetSignatureInfo` ile **imza detaylarını** (imzalayan adı, imzalama zamanı, sertifika parmak izi) dışa aktarma. +3. Bir klasördeki **birden çok PDF’i toplu işleme** alıp sonuçları denetim amaçlı CSV’ye kaydetme. + +Tüm bunlar, az önce incelediğimiz kodun doğal bir uzantısıdır ve aynı **aspose pdf signature** ekosistemi içinde kalmanızı sağlar. + +--- + +**Özetle**, artık C# ve Aspose kullanarak bir PDF’te **imzanın nasıl doğrulanacağını**, bozulmuş bir imzayı nasıl tespit edeceğinizi ve doğrulama başarısız olduğunda ne yapmanız gerektiğini biliyorsunuz. Yaklaşım sağlam, birden çok imzayı destekliyor ve daha büyük belge‑işleme hatlarına entegre edilebilir. + +Bu senaryoya bir farklılık eklemek ister misiniz? Belki imzalama yapmanız gerekiyor ya da şifreli PDF’lerle uğraşıyorsunuz. Yorum bırakın, birlikte o yönleri de keşfedelim. İyi kodlamalar! + +{{< /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/programming-with-stamps-and-watermarks/_index.md b/pdf/turkish/net/programming-with-stamps-and-watermarks/_index.md index 20ee90cae..c74b26444 100644 --- a/pdf/turkish/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/turkish/net/programming-with-stamps-and-watermarks/_index.md @@ -26,7 +26,7 @@ Aspose.PDF'nin .NET için "Pullar ve Filigranlarla Programlama" öğreticileri, | [PDF Dosyasına PDF Sayfa Damgası Ekle](./add-pdf-page-stamp/) | Bu detaylı kılavuzla Aspose.PDF for .NET kullanarak PDF sayfa damgası eklemeyi öğrenin. PDF belgelerinizin etkisini artırın. | | [PDF Dosyasına Metin Damgası Ekle](./add-text-stamp/) | Aspose.PDF for .NET'i kullanarak adım adım kılavuzumuzla bir PDF dosyasına metin damgası eklemeyi öğrenin ve belge sunumlarınızı bir üst seviyeye taşıyın. | | [PDF Dosyasında Eserlerin Sayımı](./counting-artifacts/) .NET için Aspose.PDF kullanarak bir PDF'deki filigranları nasıl sayacağınızı öğrenin. Herhangi bir ön deneyim gerektirmeyen yeni başlayanlar için adım adım kılavuz. | -| [PDF Dosyasında Hizalamayı Tanımla](./define-alignment/) | Bu kılavuz, .NET için Aspose.PDF'yi kullanarak PDF dosyalarında metin hizalamasının nasıl tanımlanacağını adım adım bir eğitimle birlikte ele almaktadır. +| [PDF Dosyasında Hizalamayı Tanımla](./define-alignment/) | Bu kılavuz, .NET için Aspose.PDF'yi kullanarak PDF dosalarında metin hizalamasının nasıl tanımlanacağını adım adım bir eğitimle birlikte ele almaktadır. | [Damga Açıklamasından Metin Çıkar](./extract-text-from-stamp-annotation/) | Bu adım adım eğitimle, .NET için Aspose.PDF'yi kullanarak bir damga açıklamasından metnin nasıl çıkarılacağını öğrenin, ayrıntılı bir kod örneği de var. | [PDF Dosyasında Vuruş Metnini Doldur](./fill-stroke-text/) | Bu pratik örneklerle dolu adım adım kılavuzla, Aspose.PDF for .NET kullanarak PDF dosyalarındaki kontur metnini zahmetsizce nasıl dolduracağınızı öğrenin. | [PDF Dosyasından Filigran Al](./get-watermark/) | Aspose.PDF for .NET kullanarak PDF dosyalarından filigranların nasıl çıkarılacağını adım adım bir kılavuzla öğrenin. Filigran çıkarma için ayrıntılı eğitim. | @@ -39,6 +39,7 @@ Aspose.PDF'nin .NET için "Pullar ve Filigranlarla Programlama" öğreticileri, | [Üstbilgi Altbilgi Bölümündeki Tablo](./table-in-header-footer-section/) | Aspose.PDF for .NET kullanarak bir PDF dosyasının altbilgisine kolayca metin eklemeyi öğrenin. Sorunsuz entegrasyon için adım adım kılavuz dahildir. | | [PDF Dosyasının Altbilgisindeki Metin](./text-in-footer/) | Aspose.PDF for .NET ile PDF dosyasının alt bilgisine metin eklemeyi öğrenin. | | [PDF Dosyasının Başlığındaki Metin](./text-in-header/) | Bu adım adım eğitimle Aspose.PDF for .NET kullanarak PDF'lere metin başlıkları eklemeyi öğrenin. Belgelerinizi verimli ve etkili bir şekilde geliştirin. | +| [C# ile Bates Numaralandırmalı PDF Belgesi Oluşturma – Tam Kılavuz](./create-pdf-document-with-bates-numbering-in-c-full-guide/) | Aspose.PDF for .NET kullanarak C# dilinde Bates numaralandırmasıyla PDF belgeleri oluşturmayı adım adım öğrenin. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/turkish/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/turkish/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..a00125046 --- /dev/null +++ b/pdf/turkish/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,183 @@ +--- +category: general +date: 2026-03-06 +description: C#'ta PDF belgesi oluşturun ve bates numarasını kolayca ekleyin. Boş + sayfa PDF eklemeyi, sayfaya damga yerleştirmeyi ve bates numaralandırmayı öğrenin. +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: tr +og_description: C#'ta PDF belgesi oluşturun ve bates numarası ekleyin. Bu kılavuz, + boş sayfa PDF eklemeyi, sayfaya damga yerleştirmeyi ve bates numaralandırmasını + uygulamayı gösterir. +og_title: Bates Numaralandırmasıyla PDF Belgesi Oluşturma – C# Öğreticisi +tags: +- Aspose.Pdf +- C# +- PDF automation +title: C# ile Bates Numaralandırmalı PDF Belgesi Oluşturma – Tam Kılavuz +url: /tr/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# ile Bates Numaralandırmalı PDF Belgesi Oluşturma + +C#'ta **PDF belgesi oluşturma** ihtiyacı hiç duydunuz mu ve bir Bates numarasını eklemenin nasıl yapılacağını saçınızı yolmak istemeden merak ettiniz mi? Tek başınıza değilsiniz—hukuk firmaları, mahkemeler ve hatta bazı kurumsal uyum ekipleri bu bulmacayla her gün karşılaşıyor. İyi haber? Birkaç satır Aspose.Pdf kodu ile yepyeni bir PDF oluşturabilir, üzerine boş bir sayfa ekleyebilir ve tek bir akıcı adımda uygun bir Bates numarası damgalayabilirsiniz. + +Bu öğreticide tüm süreci adım adım inceleyeceğiz: projeyi kurmaktan, boş bir sayfa PDF eklemeye, **bates numaralandırma eklemenin** nasıl yapılacağını bulmaya ve son olarak **sayfaya damga yerleştirme** ve sonucu kaydetmeye kadar. Sonunda, herhangi bir .NET uygulamasına ekleyebileceğiniz hazır bir kod parçacığına sahip olacaksınız. Belirsiz referanslar yok, sadece eksiksiz, çalıştırılabilir bir örnek. + +## Gereksinimler + +- **.NET 6+** (veya .NET Framework 4.6+ – Aspose.Pdf her ikisiyle çalışır) +- **Aspose.Pdf for .NET** NuGet paketi (`Install-Package Aspose.Pdf`) +- İyi bir IDE (Visual Studio, Rider veya C# uzantılı VS Code) + +Hepsi bu. Ekstra DLL yok, dış hizmet yok. Hadi başlayalım. + +## Adım 1: PDF Belgesi Oluşturma – İlk Kurulum + +İlk olarak, yeni bir `Document` nesnesine ihtiyacımız var. Bunu, her şeyin yer alacağı boş bir tuval olarak düşünün. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **Neden önemli:** `Document` sınıfı, her Aspose işleminin giriş noktasıdır. Bir örnek oluşturmak, `Pages` koleksiyonuna, meta verilere ve güvenlik ayarlarına erişim sağlar—profesyonel bir PDF için tüm yapı taşları. + +## Adım 2: Boş Sayfa PDF Ekleme + +Sayfası olmayan bir PDF, sayfası olmayan bir kitap gibidir—çok işe yaramaz. Boş bir sayfa eklemek basittir ve Bates numarasını damgalayacağımız bir yüzey sağlar. + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **İpucu:** Birden fazla sayfaya ihtiyacınız varsa, bir döngü içinde `pdfDocument.Pages.Add()` çağırın. Her çağrı, bağımsız olarak özelleştirebileceğiniz yeni bir `Page` nesnesi döndürür. + +## Adım 3: Bates Numaralandırma Ekleme – TextStamp Oluşturma + +Şimdi konunun özü: **Bates numarası**. Aspose.Pdf'de bu sadece özel bir artifact bayrağına sahip bir `TextStamp`. + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **`Artifact` ayarlamamın nedeni:** Bazı PDF okuyucular Bates numaralarını aranabilir meta veri olarak gösterir. Damgayı `BatesNumbering` artifact'i olarak işaretlemek, sonraki araçların otomatik olarak tanımasını sağlar. + +## Adım 4: Damgayı Sayfaya Yerleştirme + +Damga hazır olduğunda, şimdi **damgayı sayfaya yerleştiriyoruz**. Bu adımda görsel numara PDF'de gerçekten görünür. + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **Köşe durumu:** Her sayfada numaranın artmasını istiyorsanız, `pdfDocument.Pages` üzerinden döngü yapıp `AddStamp` çağırmadan önce `batesStamp.Value` değerini güncellersiniz. Buradaki örnek, statik bir “Bates‑001” ile basit tutar. + +## Adım 5: Sonucu Kaydet ve Doğrula + +Son olarak, PDF'i diske kaydediyoruz. Yazma izniniz olan bir klasör seçin; aksi takdirde `UnauthorizedAccessException` alırsınız. + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +`BatesStamped.pdf` dosyasını herhangi bir görüntüleyicide açtığınızda, boş sayfanın sağ‑alt köşesinde küçük bir “Bates‑001” görmelisiniz. + +> **Beklenen çıktı:** +> ![PDF with Bates number stamp](image-placeholder.png "PDF with Bates number stamp") +> *Alt metin: Alt‑sağ köşede Bates numarası damgası bulunan PDF.* + +Numara görünmüyorsa, kenar boşluğu değerlerini iki kez kontrol edin ve sayfa boyutunun çok küçük olmadığından emin olun (varsayılan A4 iyi çalışır). Ayrıca `Artifact` bayrağının herhangi bir son‑işlem aracılığıyla kaldırılmadığını doğrulayın. + +## Tam Çalışan Örnek + +Aşağıda, tamamen kopyala‑yapıştır‑hazır program yer alıyor. Tüm `using` yönergelerini ve yönlendirme yorumlarını içerir. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +Programı çalıştırın, PDF'i açın ve Bates numarasını tam olarak belirttiğimiz yerde göreceksiniz. 🎉 + +## Yaygın Varyasyonlar ve Dikkat Edilmesi Gerekenler + +| Senaryo | Değiştirilecek Şey | Neden | +|----------|--------------------|-------| +| **Birden fazla sayfa, artan numaralar** | `pdfDocument.Pages` üzerinde döngü yapın, `AddStamp` çağırmadan önce `batesStamp.Value = $"Bates-{i:D3}"` olarak ayarlayın | Her sayfaya benzersiz bir tanımlayıcı verir, yasal paketler için tipiktir | +| **Farklı konum (üst‑sol)** | `HorizontalAlignment = HorizontalAlignment.Left` ve `VerticalAlignment = VerticalAlignment.Top` olarak değiştirin | Bazı organizasyonlar numarayı altbilgi yerine başlıkta tercih eder | +| **Özel yazı tipi veya renk** | `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` olarak ayarlayın | Okunabilirliği artırır veya marka yönergelerine uyar | +| **Mevcut bir PDF'yi arka plan olarak ekleme** | `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` ile kaynak PDF'yi yükleyin | Önceden oluşturulmuş bir formun üzerine damga eklemeniz gerektiğinde faydalıdır | + +## Sonuç + +Aspose.Pdf for .NET kullanarak **PDF belgesi oluşturma**, **boş sayfa pdf ekleme** ve **bates numarası ekleme** işlemlerini, ardından **damgayı sayfaya yerleştirme** ve dosyayı kaydetme konularını gösterdik. Kod kasıtlı olarak kompakt tutulmuştur, böylece ondalıklarca dosyayı toplu işleyebilir ya da bir web servisine entegre edebilirsiniz. + +Bunu daha da ileri götürmeye hazırsanız, şunları düşünün: + +- Büyük dava dosyaları için artış mantığını otomatikleştirme. +- PDF oluşturmayı bir ASP.NET Core API'ye gömme. +- `pdfDocument.Encrypt(...)` ile güvenlik (parola koruması) ekleme. + +Denemekten, şeyleri kırmaktan ve yorumlarda soru sormaktan çekinmeyin. İyi kodlamalar, ve PDF'lerinizin her zaman mükemmel damgalanmasını dileriz! + +{{< /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/programming-with-tagged-pdf/_index.md b/pdf/turkish/net/programming-with-tagged-pdf/_index.md index 01ba8ad36..c067f87aa 100644 --- a/pdf/turkish/net/programming-with-tagged-pdf/_index.md +++ b/pdf/turkish/net/programming-with-tagged-pdf/_index.md @@ -45,6 +45,7 @@ Aspose.PDF for .NET'in "Etiketli PDF'lerle Programlama" öğreticileri, bu kitap | [PDF Dosyasındaki Metin Yapısı Öğeleri](./text-structure-elements/) Aspose.PDF for .NET ile PDF'lerdeki metin yapı öğelerini düzenlemeyi öğrenin. Bu adım adım kılavuz, yapılandırılmış PDF'ler oluşturmak için ihtiyacınız olan her şeyi kapsar. | | [PDF Dosyasını Doğrula](./validate-pdf/) | .NET için Aspose.PDF ile bir PDF dosyasının nasıl doğrulanacağını öğrenin. Standartlara uygunluğunu kontrol edin ve bir doğrulama raporu oluşturun. | | [C# ile Etiketli PDF Oluşturma – Tam Adım Adım Kılavuz](./create-tagged-pdf-in-c-complete-step-by-step-guide/) | C# ve Aspose.PDF for .NET kullanarak etiketli PDF oluşturmayı adım adım öğrenin. | +| [C# ile Etiketli PDF Oluşturma – Adım Adım Kılavuz](./create-tagged-pdf-in-c-step-by-step-guide/) | C# ve Aspose.PDF for .NET kullanarak etiketli PDF oluşturmayı adım adım öğrenin. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/turkish/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/turkish/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..f4203c33f --- /dev/null +++ b/pdf/turkish/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,281 @@ +--- +category: general +date: 2026-03-06 +description: Aspose.Pdf ile C#'ta etiketli PDF oluşturun. PDF'ye resim eklemeyi, şekil + konumunu ayarlamayı ve erişilebilirlik için PDF'yi etiketlemeyi öğrenin. +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: tr +og_description: Aspose.Pdf ile etiketli PDF oluşturun. Bu kılavuz, PDF'ye resim eklemeyi, + şekil konumunu ayarlamayı ve erişilebilirlik için PDF'yi etiketlemeyi gösterir. +og_title: C#'ta Etiketli PDF Oluşturma – Tam Kılavuz +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: C#'ta Etiketli PDF Oluşturma – Adım Adım Rehber +url: /tr/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#’ta Etiketli PDF Oluşturma – Tam Kılavuz + +Ever needed to **create tagged PDF** in C# but weren’t sure where to start? You’re not alone; accessibility is a must these days, and a tagged PDF is the backbone of a compliant document. In this tutorial we’ll walk through a real‑world example that **adds image to PDF**, sets the figure’s position, and shows **how to tag PDF** using Aspose.Pdf. By the end you’ll have a fully‑tagged PDF you can ship to anyone. + +We’ll cover everything from loading an existing file to saving the final output, so you won’t have to hunt for “how to add image” elsewhere. No fluff—just a clear, runnable solution that works with Aspose.Pdf 23.8 (the latest at time of writing). Grab your IDE, and let’s get started. + +--- + +## Gerekenler + +- **Aspose.Pdf for .NET** (NuGet paketi `Aspose.Pdf`). +- .NET 6+ (veya .NET Framework 4.7.2+). +- Zaten mantıksal bir yapıya sahip bir giriş PDF’i (yani zaten etiketli) – eğer değilse, `pdfDocument.TaggedContent = true` ile etiketlemeyi etkinleştirebilirsiniz. +- Gömmek istediğiniz bir görüntü dosyası (`image.png`). + +Hepsi bu. Başka kütüphane yok, gizli yapılandırma dosyaları yok. + +--- + +## Adım 1: Mevcut PDF Belgesini Yükleyin (Etiketli PDF Temelini Oluşturma) + +İlk olarak geliştirmek istediğimiz PDF’i açıyoruz. Dosyayı yüklemek, onun mantıksal yapısına erişmemizi sağlar; bu, **create tagged pdf** iş akışları için çok önemlidir. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*Neden önemli:* Etiket ağacı olmadan PDF, ekran okuyuculara yapısal bilgi iletemez. Etiketlemeyi etkinleştirmek, eklediğimiz yeni öğelerin (örneğin bir şekil) doğru hiyerarşiyi miras almasını sağlar. + +--- + +## Adım 2: Mantıksal Yapı Köküne Erişin (How to Tag PDF) + +Şimdi PDF’in mantıksal yapısına giriyoruz. Kök öğe, tüm etiketlerin konteyneridir—belgenin taslağı gibi düşünün. + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*Açıklama:* `logicalRoot`, `
` veya `
` gibi yeni etiketler eklememizi sağlar. Bu, **how to tag PDF** programatik olarak yapmanın çekirdeğidir. + +--- + +## Adım 3: Bir Figure Etiketi Oluşturun ve Konumunu Ayarlayın (Set Figure Position) + +Bir *Figure* etiketi, görsel içeriği isteğe bağlı bir başlıkla gruplar. Bir tane oluşturacağız, konumlandıracağız ve köke ekleyeceğiz. + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*Neden konum ayarlıyoruz:* **set figure position** adımı, görsel öğenin sayfada nerede görüneceğini belirler. Bunu atlayırsanız, şekil beklenmedik bir konumda görünebilir veya yardımcı teknolojiler tarafından görünmez olabilir. + +--- + +## Adım 4: Görsel Temsil Ekleyin – Bir Görüntü Ekleyin (Add Image to PDF) + +Etiket yerinde olduğunda, gerçek bir görüntüye ihtiyacımız var. Bu, **add image to pdf** sorusunun cevabıdır. + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*Önemli nokta:* Dikdörtgen koordinatları, daha önce tanımladığımız `figureTag.Position` ile eşleşmelidir; aksi takdirde şekil ve görsel içeriği senkron dışı olur ve erişilebilirlik bozulur. + +--- + +## Adım 5: Güncellenen PDF’i Kaydedin (Etiketli PDF Oluşturmayı Tamamlayın) + +Son olarak, değişiklikleri yeni bir dosyaya kaydediyoruz. Orijinali dokunulmaz bırakmak iyi bir uygulamadır. + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +Bu aşamada, `
` etiketi içinde düzgün konumlandırılmış bir görüntü içeren bir **create tagged pdf** dosyanız var. `output.pdf` dosyasını Adobe Acrobat’ta açın ve *Tags* panelini kontrol edin – kök altında bir `Figure` düğümü görmelisiniz. + +--- + +## Tam, Çalıştırmaya Hazır Örnek + +Aşağıda, bir konsol uygulamasına kopyalayıp yapıştırabileceğiniz tam program yer alıyor. Tüm adımlar zaten doğru sırada. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### Beklenen Sonuç + +- `output.pdf`, (100, 150) noktalarında görüntüyü göstererek, 300 × 200 nokta boyutunda açılır. +- *Tags* bölmesi, görüntüyü kapsayan bir `Figure` öğesi gösterir. +- Ekran okuyucu araçları, resmi tanımlamadan önce “Figure” duyurur, temel erişilebilirlik standartlarını karşılar. + +--- + +## Yaygın Sorular ve Kenar Durumları + +### Kaynak PDF zaten etiketli değilse ne olur? + +Aspose.Pdf, `pdfDocument.TaggedContent.IsTagged = true;` ayarını yaparak etiketlemeyi açmanıza izin verir. Kütüphane varsayılan bir etiket ağacı oluşturur; ardından örnekte gösterildiği gibi özel etiketler ekleyebilirsiniz. + +### Şekle bir başlık ekleyebilir miyim? + +Evet. `figureTag` oluşturduktan sonra, bir `Paragraph` içine `TextFragment` ekleyebilir ve `Tag` değerini `Caption` olarak ayarlayabilirsiniz. Örnek: + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### Şekli farklı bir sayfaya nasıl yerleştiririm? + +`var firstPage = pdfDocument.Pages[1];` satırını istediğiniz sayfa indeksiyle, örneğin `pdfDocument.Pages[3]` ile değiştirin. Sayfa boyutu farklıysa `Position` koordinatlarını ayarlamayı unutmayın. + +### Birden fazla görüntüyü etiketlemem gerekirse ne yapmalıyım? + +Her görüntü için yeni bir `Figure` oluşturun, her birine benzersiz bir `Position` verin ve ilgili `Image` nesnesini uygun sayfaya ekleyin. Görüntü koleksiyonları üzerinde döngü kullanmak güzel çalışır. + +### Bu PDF/A uyumluluğu ile çalışır mı? + +Aspose.Pdf, PDF/A‑1b, PDF/A‑2b ve PDF/A‑3b destekler. PDF/A belgesi oluştururken, kaydetmeden önce uyumluluk modunu ayarladığınızdan emin olun: + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +Etiketleme mantığı aynı kalır. + +--- + +## Profesyonel İpuçları ve Tuzaklar + +- **Pro tip:** Her zaman mutlak yollar veya `Path.Combine` kullanın; böylece çalışma zamanı dosya‑bulunamadı hatalarından kaçınırsınız. +- **Dikkat:** `Figure` etiketi ile `Image` dikdörtgeni arasındaki uyumsuz koordinatlar—yardımcı teknolojiler bu hizalamaya dayanır. +- **Performans notu:** Birçok sayfa işliyorsanız, görüntü akışını bir `using` bloğu içinde sararak kaynakları hızlıca serbest bırakın. +- **Sürüm kontrolü:** Gösterilen API, Aspose.Pdf 23.8+ ile çalışır. Eski sürümler, sınıf adlarında hafif farklılıklar içerebilir (ör. `FigureElement` yerine `LogicalStructureElement`). + +--- + +## Sonuç + +Başlangıçtan sona kadar **create tagged pdf** yaptık, **add image to pdf** gösterdik ve **set figure position** nasıl yapılır gösterirken **how to tag pdf** ve **how to add image** sorularına tek, bütünleşik bir örnekle yanıt verdik. Kod çalıştırmaya hazır, açıklamalar her adımın “neden”ini kapsıyor ve artık C#’ta erişilebilir PDF’ler oluşturmak için sağlam bir temele sahipsiniz. + +Bir sonraki meydan okumaya hazır mısınız? `
` etiketleriyle tablolar eklemeyi deneyin veya arşivleme amaçlı bir PDF/A‑2b uyumluluk katmanı ekleyin. Aynı desen—yükle, mantıksal yapıya eriş, bir etiket oluştur, görsel içeriği ekle, kaydet—çoğu PDF erişilebilirlik görevinde geçerlidir. + +Bir sorunla karşılaşırsanız veya burada ele alınmayan bir kullanım senaryonuz varsa, aşağıya yorum bırakın. Etiketlemeye iyi çalışmalar ve herkesin okuyabileceği PDF’ler oluşturmaktan keyif alın! + +![Figure etiketi ve görüntüsü olan bir PDF gösteren diyagram – etiketli pdf oluşturmayı açıklar](placeholder-image.png "etiketli pdf örneği") + +{{< /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/digital-signatures/_index.md b/pdf/vietnamese/net/digital-signatures/_index.md index 55b27aa87..2422c6d31 100644 --- a/pdf/vietnamese/net/digital-signatures/_index.md +++ b/pdf/vietnamese/net/digital-signatures/_index.md @@ -35,6 +35,9 @@ Tìm hiểu cách tạo, ký và xác minh chữ ký PDF an toàn bằng Aspose. ### [Cách trích xuất thông tin chữ ký PDF bằng Aspose.PDF .NET: Hướng dẫn từng bước](./extract-pdf-signature-info-aspose-pdf-net/) Tìm hiểu cách trích xuất thông tin chữ ký số từ PDF bằng Aspose.PDF cho .NET. Hướng dẫn từng bước này bao gồm cài đặt, triển khai và ứng dụng thực tế. +### [Cách đọc chữ ký trong PDF bằng C# – Hướng dẫn từng bước](./how-to-read-signatures-in-pdf-with-c-step-by-step-guide/) +Hướng dẫn chi tiết cách đọc và trích xuất chữ ký số từ tệp PDF bằng C# và Aspose.PDF. + ### [Cách triển khai chữ ký số trong .NET với Aspose.PDF: Hướng dẫn toàn diện](./implement-pdf-signatures-dotnet-aspose-pdf-guide/) Tìm hiểu cách triển khai chữ ký số an toàn trên tệp PDF bằng Aspose.PDF cho .NET, bao gồm cả việc loại bỏ các trường tùy chọn. diff --git a/pdf/vietnamese/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md b/pdf/vietnamese/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..1b21f7690 --- /dev/null +++ b/pdf/vietnamese/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-03-06 +description: Cách đọc chữ ký trong PDF bằng C#. Học cách tải tài liệu PDF bằng C#, + liệt kê các chữ ký PDF và lấy chữ ký số PDF một cách nhanh chóng và đáng tin cậy. +draft: false +keywords: +- how to read signatures +- load pdf document c# +- list pdf signatures +- get digital signatures pdf +language: vi +og_description: Cách đọc chữ ký trong PDF bằng C#. Hướng dẫn này chỉ cách tải tài + liệu PDF bằng C#, liệt kê các chữ ký PDF và truy xuất chữ ký số PDF trong vài bước + đơn giản. +og_title: Cách Đọc Chữ Ký trong PDF bằng C# – Hướng Dẫn Toàn Diện +tags: +- Aspose.Pdf +- C# +- Digital Signatures +- PDF Processing +title: Cách Đọc Chữ Ký trong PDF bằng C# – Hướng Dẫn Từng Bước +url: /vi/net/digital-signatures/how-to-read-signatures-in-pdf-with-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách Đọc Chữ Ký trong PDF bằng C# – Hướng Dẫn Toàn Diện + +Bạn đã bao giờ tự hỏi **cách đọc chữ ký** đã được nhúng sẵn trong một tệp PDF chưa? Có thể bạn đang xây dựng một bảng điều khiển tuân thủ, hoặc bạn chỉ cần kiểm tra các hợp đồng đã ký trước khi chúng được lưu vào cơ sở dữ liệu. Tin tốt là với một vài dòng C# và thư viện Aspose.Pdf, bạn có thể lấy tên chữ ký trực tiếp từ tệp—không cần kiểm tra thủ công. + +Trong hướng dẫn này, chúng ta sẽ đi qua cách tải tài liệu PDF trong C#, liệt kê các chữ ký PDF, và lấy thông tin chữ ký số trong PDF. Khi kết thúc, bạn sẽ có một ứng dụng console sẵn sàng chạy, in ra mọi tên chữ ký mà nó tìm thấy, cùng với các mẹo xử lý các trường hợp đặc biệt như tệp được bảo vệ bằng mật khẩu. + +## Yêu cầu trước + +- .NET 6.0 trở lên (mã cũng hoạt động với .NET Framework 4.6+) +- Aspose.Pdf for .NET (bạn có thể lấy giấy phép tạm thời miễn phí từ trang web Aspose) +- Một tệp PDF đã chứa một hoặc nhiều chữ ký số (tệp mẫu `MultiSigned.pdf` được bao gồm trong repo) + +> **Mẹo chuyên nghiệp:** Nếu bạn đang sử dụng Visual Studio, bật *Nullable Reference Types* để phát hiện sớm các lỗi liên quan đến null. + +## Bước 1: Tải Tài Liệu PDF trong C# + +Điều đầu tiên chúng ta cần là một đối tượng `Document` đại diện cho tệp PDF trên đĩa. Lớp `Document` của Aspose.Pdf xử lý mọi thứ từ việc trích xuất văn bản đơn giản đến xử lý biểu mẫu phức tạp. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + +try +{ + // Load the PDF into memory + Document pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"❌ Failed to load PDF: {ex.Message}"); + return; +} +``` + +**Tại sao điều này quan trọng:** Việc tải PDF xác nhận rằng tệp tồn tại và có thể đọc được. Nếu tệp bị hỏng hoặc đường dẫn sai, chúng ta sẽ dừng sớm thay vì gặp các lỗi khó hiểu sau này khi cố gắng liệt kê chữ ký. + +## Bước 2: Tạo Trợ Giúp `PdfFileSignature` + +Aspose tách việc xử lý PDF chung (`Document`) khỏi các thao tác liên quan đến chữ ký (`PdfFileSignature`). Khi khởi tạo trợ giúp này, chúng ta có quyền truy cập vào các phương thức như `GetSignatureNames()`. + +```csharp +// Wrap the loaded document with the signature API +using var pdfSigner = new PdfFileSignature(pdfDocument); +Console.WriteLine("🔐 PdfFileSignature object created."); +``` + +**Tại sao điều này quan trọng:** Lớp `PdfFileSignature` biết cách phân tích các mục từ điển `/Sig` của PDF, nơi lưu trữ các chữ ký số. Sử dụng nó đảm bảo chúng ta đọc chữ ký chính xác như khi chúng được thêm vào, giữ nguyên mọi siêu dữ liệu mật mã. + +## Bước 3: Lấy Tất Cả Tên Chữ Ký + +Bây giờ là phần cốt lõi của **cách đọc chữ ký**: gọi `GetSignatureNames()`. Phương thức này trả về một mảng string chứa *tên trường* của mỗi chữ ký. + +```csharp +// Grab every signature name in the document +string[] signatureNames = pdfSigner.GetSignatureNames(); + +if (signatureNames.Length == 0) +{ + Console.WriteLine("⚠️ No signatures found in this PDF."); +} +else +{ + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); +} +``` + +**Kết quả bạn sẽ thấy:** Nếu `MultiSigned.pdf` chứa ba chữ ký có tên `Signature1`, `Signature2`, và `Signature3`, đầu ra console sẽ là: + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature object created. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +``` + +## Bước 4: (Tùy chọn) Xác Thực Tính Hợp Lệ của Mỗi Chữ Ký + +Đọc tên thường là đủ, nhưng nhiều dự án cũng cần biết mỗi chữ ký còn hợp lệ hay không. Aspose cho phép bạn xác thực một chữ ký bằng tên trường của nó: + +```csharp +foreach (var name in signatureNames) +{ + // Validate the signature; returns true if it’s intact and trusted + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); +} +``` + +> **Trường hợp đặc biệt:** Nếu PDF được bảo vệ bằng mật khẩu, bạn phải cung cấp mật khẩu trước khi gọi `VerifySignature`. Sử dụng `pdfDocument.Encrypt.Password = "yourPassword";` ngay sau khi tải tài liệu. + +## Ví Dụ Hoàn Chỉnh Hoạt Động + +Dưới đây là chương trình hoàn chỉnh mà bạn có thể sao chép‑dán vào một dự án console mới (`dotnet new console`). Nó bao gồm tất cả các bước, xử lý lỗi, và xác thực tùy chọn. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +namespace PdfSignatureReader +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------------------------ + // 1️⃣ Load the PDF document that contains signatures + // ------------------------------------------------------------------ + const string pdfPath = @"C:\Samples\MultiSigned.pdf"; + + Document pdfDocument; + try + { + pdfDocument = new Document(pdfPath); + Console.WriteLine($"✅ Loaded PDF: {pdfPath}"); + } + catch (Exception ex) + { + Console.WriteLine($"❌ Unable to load PDF: {ex.Message}"); + return; + } + + // ------------------------------------------------------------------ + // 2️⃣ Create a PdfFileSignature object to work with digital signatures + // ------------------------------------------------------------------ + using var pdfSigner = new PdfFileSignature(pdfDocument); + Console.WriteLine("🔐 PdfFileSignature helper initialized."); + + // ------------------------------------------------------------------ + // 3️⃣ Retrieve the names of all signatures present in the document + // ------------------------------------------------------------------ + string[] signatureNames = pdfSigner.GetSignatureNames(); + + // ------------------------------------------------------------------ + // 4️⃣ Display the found signature names + // ------------------------------------------------------------------ + if (signatureNames.Length == 0) + { + Console.WriteLine("⚠️ No signatures found in this PDF."); + return; + } + + Console.WriteLine($"📄 Found {signatureNames.Length} signature(s):"); + Console.WriteLine(string.Join(", ", signatureNames)); + + // ------------------------------------------------------------------ + // 5️⃣ (Optional) Verify each signature's validity + // ------------------------------------------------------------------ + foreach (var name in signatureNames) + { + bool isValid = pdfSigner.VerifySignature(name); + Console.WriteLine($"🔎 {name}: {(isValid ? "Valid ✅" : "Invalid ❌")}"); + } + } + } +} +``` + +**Kết quả mong đợi** (giả sử có ba chữ ký hợp lệ): + +``` +✅ Loaded PDF: C:\Samples\MultiSigned.pdf +🔐 PdfFileSignature helper initialized. +📄 Found 3 signature(s): +Signature1, Signature2, Signature3 +🔎 Signature1: Valid ✅ +🔎 Signature2: Valid ✅ +🔎 Signature3: Valid ✅ +``` + +## Xử Lý Các Biến Thể Thông Thường + +| Situation | What to Change | Why | +|-----------|----------------|-----| +| **PDF được bảo vệ bằng mật khẩu** | Đặt `pdfDocument.Encrypt.Password = "yourPwd";` trước khi tạo `PdfFileSignature`. | Nếu không có mật khẩu, các từ điển chữ ký sẽ được mã hoá và `GetSignatureNames()` sẽ trả về mảng rỗng. | +| **PDF lớn ( > 100 MB )** | Sử dụng `pdfSigner.GetSignatureNames(0, 10)` để phân trang kết quả (tham số đầu tiên = chỉ số bắt đầu). | Tải toàn bộ danh sách chữ ký một lúc có thể tiêu tốn nhiều bộ nhớ. | +| **Không có chữ ký nào** | Mã đã in ra cảnh báo thân thiện. Hãy cân nhắc ghi log điều này như một sự kiện kiểm toán. | Giúp các quy trình tiếp theo quyết định có từ chối tệp hoặc yêu cầu người dùng cung cấp phiên bản đã ký hay không. | +| **Tên trường chữ ký tùy chỉnh** | Phương thức trả về bất kỳ tên trường nào được sử dụng khi ký, ví dụ `EmployeeApproval`. Không cần công việc thêm. | Cho phép bạn ánh xạ chữ ký trở lại các vai trò kinh doanh. | + +## Thực Hành Tốt Nhất & Mẹo + +- **Giải phóng đối tượng**: Mẫu `using var pdfSigner` đảm bảo các tài nguyên gốc được giải phóng kịp thời. +- **Cấp phép sớm**: Gọi `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` ở đầu hàm `Main` để tránh watermark đánh giá. +- **An toàn đa luồng**: Nếu bạn xử lý nhiều PDF đồng thời, tạo một `PdfFileSignature` riêng cho mỗi luồng. Lớp này không an toàn với đa luồng. +- **Ghi log**: Trong môi trường production, thay thế `Console.WriteLine` bằng một logger có cấu trúc (Serilog, NLog) để bạn có thể ghi lại chính xác tên chữ ký cho các bản ghi kiểm toán. +- **Kiểm tra phiên bản**: Mã này hoạt động với Aspose.Pdf for .NET 23.10 và mới hơn. Các phiên bản cũ hơn có thể yêu cầu `PdfSignature` thay vì `PdfFileSignature`. + +## Kết Luận + +Chúng ta đã đề cập **cách đọc chữ ký** từ một PDF bằng C#. Bằng cách tải tài liệu PDF, tạo trợ giúp `PdfFileSignature`, và gọi `GetSignatureNames()`, bạn có thể liệt kê mọi chữ ký số được nhúng trong tệp. Việc xác thực tùy chọn bổ sung một lớp tin cậy, và đoạn mã mẫu cho bạn thấy cách tích hợp chính xác vào một ứng dụng console thực tế. + +Sẵn sàng cho bước tiếp theo? Hãy thử kết hợp điều này với `DigitalSignatureUtil` của Aspose để trích xuất chứng chỉ người ký, hoặc đưa danh sách chữ ký vào bảng điều khiển tuân thủ để đánh dấu các hợp đồng chưa ký. Các khả năng là vô hạn—chỉ cần nhớ **tải tài liệu PDF C#**, **liệt kê chữ ký PDF**, và **lấy chữ ký số PDF** mỗi khi bạn cần một cuộc kiểm tra nhanh. + +Chúc lập trình vui vẻ, và hy vọng các PDF của bạn luôn được ký một cách an toàn! + +{{< /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-conversion/_index.md b/pdf/vietnamese/net/document-conversion/_index.md index 62e00da14..334099d67 100644 --- a/pdf/vietnamese/net/document-conversion/_index.md +++ b/pdf/vietnamese/net/document-conversion/_index.md @@ -23,41 +23,42 @@ Bạn sẽ học cách chỉ định cài đặt chuyển đổi, trích xuất | --- | --- | | [Thêm tệp đính kèm vào PDFA](./add-attachment-to-pdfa/) | Tìm hiểu cách thêm tệp đính kèm vào tài liệu PDF/A bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. | | [CGM sang tập tin PDF](./cgm-to-pdf/) | Tìm hiểu cách chuyển đổi tệp CGM sang PDF bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. Hoàn hảo cho cả nhà phát triển và nhà thiết kế. | -| [EPUB sang PDF](./epub-to-pdf/) Tìm hiểu cách chuyển đổi EPUB sang PDF bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. Dễ dàng, hiệu quả và hoàn hảo cho mọi người dùng. | -| [Nhận kích thước SVG](./get-svg-dimensions/) | Tìm hiểu cách sử dụng Aspose.PDF cho .NET để chuyển đổi tệp SVG sang PDF với hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển muốn thao tác với PDF. | -| [HTML sang PDF](./html-to-pdf/) | Tìm hiểu cách chuyển đổi HTML sang PDF bằng Aspose.PDF cho .NET với hướng dẫn toàn diện này. | -| [Markdown sang PDF](./markdown-to-pdf/) | Tìm hiểu cách chuyển đổi Markdown sang PDF bằng Aspose.PDF cho .NET trong hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển muốn hợp lý hóa việc chuyển đổi tài liệu. | -| [MHT sang PDF](./mht-to-pdf/) | Tìm hiểu cách chuyển đổi tệp MHT sang PDF bằng Aspose.PDF cho .NET trong hướng dẫn từng bước này. Chuyển đổi tài liệu dễ dàng và hiệu quả. | -| [Định hướng trang theo kích thước hình ảnh](./page-orientation-according-image-dimensions/) Tìm hiểu cách tạo tệp PDF bằng Aspose.PDF cho .NET, thiết lập hướng trang dựa trên kích thước hình ảnh trong hướng dẫn từng bước này. | -| [PCL sang PDF](./pcl-to-pdf/) | Tìm hiểu cách chuyển đổi tệp PCL sang PDF bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. Hoàn hảo cho cả nhà phát triển và doanh nghiệp. | -| [PDFA sang PDF](./pdfa-to-pdf/) | Tìm hiểu cách chuyển đổi PDF/A sang PDF bằng Aspose.PDF cho .NET trong hướng dẫn toàn diện, từng bước này. | -| [PDF sang DOC](./pdf-to-doc/) | Tìm hiểu cách chuyển đổi PDF sang DOC bằng Aspose.PDF cho .NET trong hướng dẫn toàn diện này. Bao gồm hướng dẫn từng bước và mẹo. | -| [PDF sang EPUB](./pdf-to-epub/) | Tìm hiểu cách chuyển đổi PDF sang EPUB bằng Aspose.PDF cho .NET trong hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển và người sáng tạo nội dung. | -| [PDF sang HTML](./pdf-to-html/) | Tìm hiểu cách chuyển đổi PDF sang HTML bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển và người sáng tạo nội dung. | -| [PDF sang PDFA](./pdf-to-pdfa/) Tìm hiểu cách chuyển đổi tệp PDF sang định dạng PDF/A bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. | -| [PDF sang PDFA3b](./pdf-to-pdfa3b/) | Học cách chuyển đổi tệp PDF sang định dạng PDF/A-3B dễ dàng với Aspose.PDF cho .NET trong hướng dẫn từng bước này. | -| [Gợi ý phông chữ PDF sang PNG](./pdf-to-png-font-hinting/) | Học cách chuyển đổi PDF sang PNG với gợi ý phông chữ bằng Aspose.PDF cho .NET theo hướng dẫn từng bước dễ dàng. | -| [Hướng dẫn PDF sang PNG – Chuyển đổi các trang PDF sang PNG trong C#](./pdf-to-png-tutorial-convert-pdf-pages-to-png-in-c/) | Tìm hiểu cách chuyển đổi các trang PDF sang định dạng PNG bằng Aspose.PDF cho .NET trong C# với hướng dẫn chi tiết từng bước. | -| [PDF sang PPT](./pdf-to-ppt/) | Tìm hiểu cách chuyển đổi PDF sang PPT bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. Dễ dàng, hiệu quả và hoàn hảo cho các bài thuyết trình. | -| [PDF sang SVG](./pdf-to-svg/) | Tìm hiểu cách chuyển đổi tệp PDF sang định dạng SVG bằng Aspose.PDF cho .NET trong hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển và nhà thiết kế. | -| [PDF sang TeX](./pdf-to-tex/) | Tìm hiểu cách chuyển đổi PDF sang TeX bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển muốn nâng cao kỹ năng xử lý tài liệu. | -| [PDF sang XLS](./pdf-to-xls/) Dễ dàng chuyển đổi tệp PDF sang định dạng XLS bằng Aspose.PDF cho .NET. Làm theo hướng dẫn từng bước của chúng tôi để trích xuất dữ liệu liền mạch. | -| [PDF sang XML](./pdf-to-xml/) | Tìm hiểu cách chuyển đổi PDF sang XML bằng Aspose.PDF cho .NET trong hướng dẫn toàn diện này. Hướng dẫn từng bước có kèm ví dụ về mã. | -| [PDF sang XPS](./pdf-to-xps/) | Tìm hiểu cách chuyển đổi PDF sang XPS bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển và những người đam mê xử lý tài liệu. | -| [Phụ lục sang PDF](./postscript-to-pdf/) | Tìm hiểu cách chuyển đổi tệp Postscript sang PDF bằng Aspose.PDF cho .NET trong hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển ở mọi cấp độ. | -| [Cung cấp thông tin xác thực trong quá trình chuyển đổi HTML sang PDF](./provide-credentials-during-html-to-pdf/) | Tìm hiểu cách chuyển đổi HTML sang PDF bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển muốn hợp lý hóa việc tạo tài liệu. | -| [Xóa siêu liên kết sau khi chuyển đổi từ Html](./remove-hyperlinks-after-converting-from-html/) Tìm hiểu cách xóa siêu liên kết khỏi tài liệu HTML sau khi chuyển đổi sang PDF bằng Aspose.PDF cho .NET trong hướng dẫn từng bước này. | -| [Thay thế phông chữ bị thiếu](./replace-missing-fonts/) | Tìm hiểu cách thay thế phông chữ bị thiếu trong tài liệu PDF bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. | -| [Đặt tên phông chữ mặc định](./set-default-font-name/) | Tìm hiểu cách đặt tên phông chữ mặc định khi kết xuất PDF thành hình ảnh bằng Aspose.PDF cho .NET. Hướng dẫn này bao gồm các điều kiện tiên quyết, hướng dẫn từng bước và Câu hỏi thường gặp. | -| [SVG sang PDF](./svg-to-pdf/) | Tìm hiểu cách chuyển đổi SVG sang PDF bằng Aspose.PDF cho .NET trong hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển và nhà thiết kế. | -| [TeX sang PDF](./tex-to-pdf/) | Tìm hiểu cách chuyển đổi TeX sang PDF bằng Aspose.PDF cho .NET với hướng dẫn chi tiết từng bước này. Hoàn hảo cho các nhà phát triển và chuyên gia tài liệu. | -| [Văn bản sang PDF](./text-to-pdf/) Tìm hiểu cách chuyển đổi tệp văn bản sang PDF bằng Aspose.PDF cho .NET trong hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển muốn cải thiện ứng dụng của họ. | -| [Cải thiện hiệu suất TIFF sang PDF](./tiff-to-pdf-performance-improvement/) | Chuyển đổi hiệu quả hình ảnh TIFF sang PDF bằng Aspose.PDF cho .NET. Tìm hiểu từng bước với các mẹo tối ưu hóa hiệu suất để xử lý các tệp hình ảnh lớn một cách trơn tru. | -| [Trang Web Sang PDF](./web-page-to-pdf/) | Tìm hiểu cách chuyển đổi trang web sang PDF bằng Aspose.PDF cho .NET trong hướng dẫn chi tiết từng bước này. | -| [XML sang PDF](./xml-to-pdf/) | Tìm hiểu cách chuyển đổi XML sang PDF bằng Aspose.PDF cho .NET trong hướng dẫn từng bước toàn diện này, kèm theo các ví dụ mã và giải thích chi tiết. | -| [XML To PDFĐặt Đường dẫn hình ảnh](./xml-to-pdfset-image-path/) | Tìm hiểu cách chuyển đổi XML sang PDF dễ dàng bằng Aspose.PDF cho .NET. Hướng dẫn chi tiết này hướng dẫn bạn từng bước trong quy trình, từ thiết lập đến hoàn tất. | -| [XPS sang PDF](./xps-to-pdf/) Tìm hiểu cách chuyển đổi tệp XPS sang PDF bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển và những người đam mê tài liệu. | -| [Chuyển đổi PDF sang PDF/X‑4 trong C# – Hướng dẫn ASP.NET PDF từng bước](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | Tìm hiểu cách chuyển đổi tệp PDF sang định dạng PDF/X‑4 bằng Aspose.PDF cho .NET trong hướng dẫn từng bước này. | +| [EPUB sang PDF](./epub-to-pdf/) Tìm hiểu cách chuyển đổi EPUB sang PDF bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. Dễ dàng, hiệu quả và hoàn hảo cho mọi người dùng. | +| [Nhận kích thước SVG](./get-svg-dimensions/) | Tìm hiểu cách sử dụng Aspose.PDF cho .NET để chuyển đổi tệp SVG sang PDF với hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển muốn thao tác với PDF. | +| [HTML sang PDF](./html-to-pdf/) | Tìm hiểu cách chuyển đổi HTML sang PDF bằng Aspose.PDF cho .NET với hướng dẫn toàn diện này. | +| [Markdown sang PDF](./markdown-to-pdf/) | Tìm hiểu cách chuyển đổi Markdown sang PDF bằng Aspose.PDF cho .NET trong hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển muốn hợp lý hóa việc chuyển đổi tài liệu. | +| [MHT sang PDF](./mht-to-pdf/) | Tìm hiểu cách chuyển đổi tệp MHT sang PDF bằng Aspose.PDF cho .NET trong hướng dẫn từng bước này. Chuyển đổi tài liệu dễ dàng và hiệu quả. | +| [Định hướng trang theo kích thước hình ảnh](./page-orientation-according-image-dimensions/) Tìm hiểu cách tạo tệp PDF bằng Aspose.PDF cho .NET, thiết lập hướng trang dựa trên kích thước hình ảnh trong hướng dẫn từng bước này. | +| [PCL sang PDF](./pcl-to-pdf/) | Tìm hiểu cách chuyển đổi tệp PCL sang PDF bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. Hoàn hảo cho cả nhà phát triển và doanh nghiệp. | +| [PDFA sang PDF](./pdfa-to-pdf/) | Tìm hiểu cách chuyển đổi PDF/A sang PDF bằng Aspose.PDF cho .NET trong hướng dẫn toàn diện, từng bước này. | +| [PDF sang DOC](./pdf-to-doc/) | Tìm hiểu cách chuyển đổi PDF sang DOC bằng Aspose.PDF cho .NET trong hướng dẫn toàn diện này. Bao gồm hướng dẫn từng bước và mẹo. | +| [PDF sang EPUB](./pdf-to-epub/) | Tìm hiểu cách chuyển đổi PDF sang EPUB bằng Aspose.PDF cho .NET trong hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển và người sáng tạo nội dung. | +| [PDF sang HTML](./pdf-to-html/) | Tìm hiểu cách chuyển đổi PDF sang HTML bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển và người sáng tạo nội dung. | +| [PDF sang PDFA](./pdf-to-pdfa/) Tìm hiểu cách chuyển đổi tệp PDF sang định dạng PDF/A bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. | +| [PDF sang PDFA3b](./pdf-to-pdfa3b/) | Học cách chuyển đổi tệp PDF sang định dạng PDF/A-3B dễ dàng với Aspose.PDF cho .NET trong hướng dẫn từng bước này. | +| [Gợi ý phông chữ PDF sang PNG](./pdf-to-png-font-hinting/) | Học cách chuyển đổi PDF sang PNG với gợi ý phông chữ bằng Aspose.PDF cho .NET theo hướng dẫn từng bước dễ dàng. | +| [Hướng dẫn PDF sang PNG – Chuyển đổi các trang PDF sang PNG trong C#](./pdf-to-png-tutorial-convert-pdf-pages-to-png-in-c/) | Tìm hiểu cách chuyển đổi các trang PDF sang định dạng PNG bằng Aspose.PDF cho .NET trong C# với hướng dẫn chi tiết từng bước. | +| [PDF sang PPT](./pdf-to-ppt/) | Tìm hiểu cách chuyển đổi PDF sang PPT bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. Dễ dàng, hiệu quả và hoàn hảo cho các bài thuyết trình. | +| [PDF sang SVG](./pdf-to-svg/) | Tìm hiểu cách chuyển đổi tệp PDF sang định dạng SVG bằng Aspose.PDF cho .NET trong hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển và nhà thiết kế. | +| [PDF sang TeX](./pdf-to-tex/) | Tìm hiểu cách chuyển đổi PDF sang TeX bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển muốn nâng cao kỹ năng xử lý tài liệu. | +| [PDF sang XLS](./pdf-to-xls/) Dễ dàng chuyển đổi tệp PDF sang định dạng XLS bằng Aspose.PDF cho .NET. Làm theo hướng dẫn từng bước của chúng tôi để trích xuất dữ liệu liền mạch. | +| [PDF sang XML](./pdf-to-xml/) | Tìm hiểu cách chuyển đổi PDF sang XML bằng Aspose.PDF cho .NET trong hướng dẫn toàn diện này. Hướng dẫn từng bước có kèm ví dụ về mã. | +| [PDF sang XPS](./pdf-to-xps/) | Tìm hiểu cách chuyển đổi PDF sang XPS bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển và những người đam mê xử lý tài liệu. | +| [Phụ lục sang PDF](./postscript-to-pdf/) | Tìm hiểu cách chuyển đổi tệp Postscript sang PDF bằng Aspose.PDF cho .NET trong hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển ở mọi cấp độ. | +| [Cung cấp thông tin xác thực trong quá trình chuyển đổi HTML sang PDF](./provide-credentials-during-html-to-pdf/) | Tìm hiểu cách chuyển đổi HTML sang PDF bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển muốn hợp lý hóa việc tạo tài liệu. | +| [Xóa siêu liên kết sau khi chuyển đổi từ Html](./remove-hyperlinks-after-converting-from-html/) Tìm hiểu cách xóa siêu liên kết khỏi tài liệu HTML sau khi chuyển đổi sang PDF bằng Aspose.PDF cho .NET trong hướng dẫn từng bước này. | +| [Thay thế phông chữ bị thiếu](./replace-missing-fonts/) | Tìm hiểu cách thay thế phông chữ bị thiếu trong tài liệu PDF bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. | +| [Đặt tên phông chữ mặc định](./set-default-font-name/) | Tìm hiểu cách đặt tên phông chữ mặc định khi kết xuất PDF thành hình ảnh bằng Aspose.PDF cho .NET. Hướng dẫn này bao gồm các điều kiện tiên quyết, hướng dẫn từng bước và Câu hỏi thường gặp. | +| [SVG sang PDF](./svg-to-pdf/) | Tìm hiểu cách chuyển đổi SVG sang PDF bằng Aspose.PDF cho .NET trong hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển và nhà thiết kế. | +| [TeX sang PDF](./tex-to-pdf/) | Tìm hiểu cách chuyển đổi TeX sang PDF bằng Aspose.PDF cho .NET với hướng dẫn chi tiết từng bước này. Hoàn hảo cho các nhà phát triển và chuyên gia tài liệu. | +| [Văn bản sang PDF](./text-to-pdf/) Tìm hiểu cách chuyển đổi tệp văn bản sang PDF bằng Aspose.PDF cho .NET trong hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển muốn cải thiện ứng dụng của họ. | +| [Cải thiện hiệu suất TIFF sang PDF](./tiff-to-pdf-performance-improvement/) | Chuyển đổi hiệu quả hình ảnh TIFF sang PDF bằng Aspose.PDF cho .NET. Tìm hiểu từng bước với các mẹo tối ưu hóa hiệu suất để xử lý các tệp hình ảnh lớn một cách trơn tru. | +| [Trang Web Sang PDF](./web-page-to-pdf/) | Tìm hiểu cách chuyển đổi trang web sang PDF bằng Aspose.PDF cho .NET trong hướng dẫn chi tiết từng bước này. | +| [XML sang PDF](./xml-to-pdf/) | Tìm hiểu cách chuyển đổi XML sang PDF bằng Aspose.PDF cho .NET trong hướng dẫn từng bước toàn diện này, kèm theo các ví dụ mã và giải thích chi tiết. | +| [XML To PDFĐặt Đường dẫn hình ảnh](./xml-to-pdfset-image-path/) | Tìm hiểu cách chuyển đổi XML sang PDF dễ dàng bằng Aspose.PDF cho .NET. Hướng dẫn chi tiết này hướng dẫn bạn từng bước trong quy trình, từ thiết lập đến hoàn tất. | +| [XPS sang PDF](./xps-to-pdf/) Tìm hiểu cách chuyển đổi tệp XPS sang PDF bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. Hoàn hảo cho các nhà phát triển và những người đam mê tài liệu. | +| [Chuyển đổi PDF sang PDF/X‑4 trong C# – Hướng dẫn ASP.NET PDF từng bước](./convert-pdf-to-pdf-x-4-in-c-step-by-step-asp-net-pdf-tutoria/) | Tìm hiểu cách chuyển đổi tệp PDF sang định dạng PDF/X‑4 bằng Aspose.PDF cho .NET trong hướng dẫn từng bước này. | +| [Hướng dẫn Aspose PDF: Chuyển đổi PDF sang PDF/X‑4 trong C#](./aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/) | Tìm hiểu cách chuyển đổi PDF sang PDF/X‑4 bằng Aspose.PDF cho .NET trong hướng dẫn chi tiết. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/vietnamese/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md b/pdf/vietnamese/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md new file mode 100644 index 000000000..77f0c11f1 --- /dev/null +++ b/pdf/vietnamese/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-03-06 +description: Hướng dẫn Aspose PDF cho thấy cách sử dụng Aspose để tải tài liệu PDF + trong C#, chuyển đổi PDF sang PDF/X‑4 và lưu PDF đã chuyển đổi một cách hiệu quả. +draft: false +keywords: +- aspose pdf tutorial +- how to use aspose +- load pdf document c# +- convert pdf to pdf/x-4 +- save converted pdf +language: vi +og_description: Hướng dẫn Aspose PDF giải thích cách tải tài liệu PDF trong C#, chuyển + đổi sang định dạng PDF/X‑4 và lưu PDF đã chuyển đổi với các ví dụ mã rõ ràng. +og_title: 'Hướng dẫn Aspose PDF: Chuyển đổi PDF sang PDF/X‑4 trong C#' +tags: +- Aspose +- PDF +- C# +- DocumentConversion +title: 'Hướng dẫn Aspose PDF: Chuyển đổi PDF sang PDF/X‑4 bằng C#' +url: /vi/net/document-conversion/aspose-pdf-tutorial-convert-pdf-to-pdf-x-4-in-c/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hướng dẫn Aspose PDF: Chuyển PDF sang PDF/X‑4 bằng C# + +Bạn đã bao giờ tự hỏi làm thế nào sử dụng Aspose để chuyển một tệp PDF thông thường thành PDF/X‑4 mà không gặp khó khăn? Bạn không phải là người duy nhất—các nhà phát triển thường cần một cách đáng tin cậy để **load PDF document C#**‑style, chuyển đổi, và sau đó **save the converted PDF** cho các quy trình downstream. Trong hướng dẫn này, chúng tôi sẽ trình bày một ví dụ hoàn chỉnh, có thể chạy được, thực hiện đúng như vậy, sử dụng phiên bản mới nhất của Aspose.Pdf cho .NET. + +Chúng tôi sẽ bao phủ mọi thứ từ cài đặt thư viện, tải PDF nguồn, chuyển đổi sang tiêu chuẩn PDF/X‑4, và cuối cùng ghi kết quả ra đĩa. Khi kết thúc, bạn sẽ nắm vững **how to use Aspose** cho kịch bản chuyển đổi phổ biến này, cùng với các mẹo xử lý các trường hợp đặc biệt. + +## Prerequisites + +Trước khi bắt đầu, hãy chắc chắn rằng bạn có: + +- .NET 6.0 trở lên (mã cũng chạy trên .NET Framework, nhưng .NET 6+ được khuyến nghị). +- Một tệp giấy phép hợp lệ cho Aspose.Pdf for .NET (hoặc bạn có thể chạy ở chế độ đánh giá để thử nhanh). +- Visual Studio 2022 hoặc bất kỳ IDE nào hỗ trợ C#. +- Một tệp PDF đầu vào nằm tại `YOUR_DIRECTORY/input.pdf`. +- Không cần gói NuGet bổ sung nào ngoài `Aspose.Pdf`. + +## Install Aspose.Pdf via NuGet + +Mở terminal hoặc Package Manager Console và chạy: + +```bash +dotnet add package Aspose.Pdf +``` + +Điều này sẽ tải phiên bản ổn định mới nhất (tính đến tháng 3 2026, phiên bản 23.12). Nếu bạn thích giao diện UI, hãy tìm *Aspose.Pdf* trong NuGet Package Manager và cài đặt nó. + +## Step 1: Load PDF Document in C# with Aspose + +Điều đầu tiên bạn cần làm là đưa PDF nguồn vào bộ nhớ. Lớp `Document` của Aspose là điểm vào. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the source PDF document +var sourcePath = @"YOUR_DIRECTORY\input.pdf"; + +Document pdfDocument; +try +{ + pdfDocument = new Document(sourcePath); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to load PDF: {ex.Message}"); + throw; +} +``` + +**Tại sao điều này quan trọng:** Việc tải tệp xác nhận rằng đường dẫn tồn tại và PDF không bị hỏng. Khối `try/catch` cung cấp cách xử lý lỗi một cách nhẹ nhàng—rất hữu ích khi tệp đến từ việc tải lên của người dùng. + +## Step 2: Convert PDF to PDF/X‑4 Format + +PDF/X‑4 là một tập con của PDF được thiết kế cho việc in ấn và lưu trữ đáng tin cậy. Chuyển đổi đảm bảo rằng mọi phông chữ đều được nhúng và tệp tuân thủ các tiêu chuẩn ngành. + +```csharp +// Step 2: Convert the document to PDF/X‑4 format +// ConvertErrorAction.Delete removes objects that can’t be translated. +pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); +``` + +**Tại sao chọn `ConvertErrorAction.Delete`?** Một số PDF cũ chứa các thành phần (như chú thích không được hỗ trợ) mà nếu không xóa sẽ làm ngừng quá trình chuyển đổi. Xóa chúng giúp quy trình diễn ra suôn sẻ, nhưng bạn nên kiểm tra đầu ra nếu cần giữ lại các thành phần đó. + +### Optional: Verify Conversion Success + +Nếu bạn muốn chắc chắn hơn, có thể kiểm tra thuộc tính `PdfFormat` của tài liệu sau khi chuyển đổi: + +```csharp +if (pdfDocument.PdfFormat != PdfFormat.PDF_X_4) +{ + Console.WriteLine("Warning: Conversion did not produce PDF/X‑4 as expected."); +} +``` + +## Step 3: Save the Converted PDF File + +Bây giờ tài liệu đã ở dạng PDF/X‑4, hãy ghi lại nó ra đĩa. + +```csharp +// Step 3: Save the converted PDF/X‑4 document +var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + +try +{ + pdfDocument.Save(outputPath); + Console.WriteLine($"Successfully saved PDF/X‑4 to: {outputPath}"); +} +catch (Exception ex) +{ + Console.WriteLine($"Failed to save PDF: {ex.Message}"); + throw; +} +``` + +**Kết quả bạn sẽ thấy:** Một tệp mới có tên `Converted_PDFX4.pdf` xuất hiện trong `YOUR_DIRECTORY`. Mở nó bằng bất kỳ trình xem PDF nào hỗ trợ PDF/X‑4 (Adobe Acrobat, Foxit, v.v.) và bạn sẽ nhận thấy mọi phông chữ đều được nhúng và tài liệu tuân thủ đặc tả PDF/X‑4. + +![hướng dẫn aspose pdf - chuyển PDF sang PDF/X‑4](/images/aspose-pdf-conversion.png "hướng dẫn aspose pdf hiển thị kết quả chuyển đổi PDF/X‑4") + +*Văn bản alt của hình ảnh bao gồm từ khóa chính, đáp ứng yêu cầu SEO.* + +## Full End‑to‑End Example + +Kết hợp tất cả lại, đây là một ứng dụng console tự chứa mà bạn có thể sao chép‑dán vào dự án C# mới: + +```csharp +using System; +using Aspose.Pdf; + +namespace AsposePdfX4Demo +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths as needed + var inputPath = @"YOUR_DIRECTORY\input.pdf"; + var outputPath = @"YOUR_DIRECTORY\Converted_PDFX4.pdf"; + + // Load the source PDF + Document pdfDocument; + try + { + pdfDocument = new Document(inputPath); + Console.WriteLine("PDF loaded successfully."); + } + catch (Exception loadEx) + { + Console.WriteLine($"Error loading PDF: {loadEx.Message}"); + return; + } + + // Convert to PDF/X‑4 + try + { + pdfDocument.Convert(PdfFormat.PDF_X_4, ConvertErrorAction.Delete); + Console.WriteLine("Conversion to PDF/X‑4 completed."); + } + catch (Exception convEx) + { + Console.WriteLine($"Conversion failed: {convEx.Message}"); + return; + } + + // Save the converted file + try + { + pdfDocument.Save(outputPath); + Console.WriteLine($"File saved as PDF/X‑4 at: {outputPath}"); + } + catch (Exception saveEx) + { + Console.WriteLine($"Saving failed: {saveEx.Message}"); + } + } + } +} +``` + +Chạy chương trình, và bạn sẽ thấy các thông báo console xác nhận từng bước. Nếu có bất kỳ lỗi nào, thông báo lỗi sẽ chỉ ra giai đoạn cụ thể. + +## Common Questions & Edge Cases + +### What if I need to keep annotations? + +`ConvertErrorAction.Delete` loại bỏ các đối tượng không được hỗ trợ, bao gồm một số chú thích. Chuyển sang `ConvertErrorAction.Keep` nếu việc giữ chúng là quan trọng, nhưng hãy kiểm tra đầu ra—một số chú thích vẫn có thể gây cảnh báo tuân thủ. + +### How do I handle large PDFs (hundreds of MB)? + +Aspose.Pdf stream tệp, vì vậy việc sử dụng bộ nhớ vẫn ở mức vừa phải. Tuy nhiên, bạn có thể muốn tăng ngưỡng `System.GC` hoặc xử lý tài liệu theo từng phần (ví dụ, chuyển đổi trang‑theo‑trang) cho các tệp cực lớn. + +### Can I convert multiple files in a batch? + +Chắc chắn rồi. Đặt logic tải‑chuyển‑lưu vào trong một vòng lặp `foreach` duyệt qua thư mục chứa các PDF. Hãy nhớ xử lý ngoại lệ riêng cho mỗi tệp để một PDF lỗi không làm dừng toàn bộ batch. + +### Does this work on .NET Core on Linux? + +Có. Aspose.Pdf là đa nền tảng. Chỉ cần đảm bảo gói NuGet `Aspose.Pdf` được tham chiếu và bạn đã cài đặt các tệp phông chữ phù hợp trên máy chủ Linux nếu cần render văn bản. + +## Pro Tips from the Field + +- **Set a license early**: `Aspose.Pdf.License license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic");` – điều này loại bỏ watermark đánh giá và tăng hiệu năng. +- **Validate the output**: Sử dụng `PdfFormatValidator` của Aspose để lập trình xác nhận tính tuân thủ PDF/X‑4 trước khi phát hành tệp. +- **Log conversion time**: Các batch lớn sẽ có lợi khi đo thời gian mỗi lần chuyển đổi (`Stopwatch`) để phát hiện suy giảm hiệu năng. +- **Avoid hard‑coded paths**: Ưu tiên sử dụng tệp cấu hình hoặc biến môi trường cho `inputPath` và `outputPath`—giúp ứng dụng di động hơn. + +## Conclusion + +Trong **Aspose PDF Tutorial** này chúng tôi đã trình bày một quy trình sạch sẽ, end‑to‑end cho **how to use Aspose** để **load PDF document C#**, chuyển đổi sang tiêu chuẩn **PDF/X‑4**, và **save the converted PDF**. Đoạn mã hoàn toàn có thể chạy, giải thích *tại sao* mỗi bước và nêu bật các rủi ro bạn có thể gặp trong dự án thực tế. + +Bây giờ bạn đã nắm vững các kiến thức cơ bản, có thể mở rộng giải pháp—xử lý hàng chục tệp cùng lúc, nhúng siêu dữ liệu tùy chỉnh, hoặc tích hợp chuyển đổi vào API web. Khả năng là vô hạn, và Aspose.Pdf cung cấp công cụ để bạn đạt được mục tiêu nhanh chóng. + +Có thêm câu hỏi nào về xử lý PDF với Aspose? Hãy để lại bình luận, khám phá tài liệu chính thức của Aspose, hoặc thử nghiệm với mã ở trên. Chúc bạn chuyển đổi thành công! + +{{< /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-creation/_index.md b/pdf/vietnamese/net/document-creation/_index.md index 3f3c93d4a..669dd73e4 100644 --- a/pdf/vietnamese/net/document-creation/_index.md +++ b/pdf/vietnamese/net/document-creation/_index.md @@ -77,6 +77,12 @@ Hướng dẫn mã cho Aspose.PDF Net ### [Tạo tài liệu PDF với Aspose.PDF – Thêm trang, hình dạng & Lưu](./create-pdf-document-with-aspose-pdf-add-page-shape-save/) Hướng dẫn cách thêm trang, hình dạng và lưu tài liệu PDF bằng Aspose.PDF trong .NET. +### [Tạo tài liệu PDF với Aspose.PDF – Hướng dẫn từng bước](./create-pdf-document-with-aspose-pdf-step-by-step-guide/) +Hướng dẫn chi tiết cách tạo tài liệu PDF bằng Aspose.PDF trong .NET, bao gồm thêm trang, hình dạng và lưu tệp. + +### [Tạo tài liệu PDF với Aspose.PDF – Hướng dẫn đầy đủ C#](./create-pdf-document-with-aspose-pdf-full-c-guide/) +Hướng dẫn chi tiết cách tạo tài liệu PDF bằng Aspose.PDF trong C#, bao gồm thêm trang, hình dạng và lưu tệp. + ## 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-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md b/pdf/vietnamese/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md new file mode 100644 index 000000000..ef4dd5a4a --- /dev/null +++ b/pdf/vietnamese/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-03-06 +description: Tạo tài liệu PDF trong C# bằng Aspose.PDF – học cách thêm trang trắng + PDF, hộp văn bản, widget và lưu PDF nhanh chóng. +draft: false +keywords: +- create pdf document +- add blank pages pdf +- how to add textbox +- how to add widget +- how to save pdf +language: vi +og_description: Tạo tài liệu PDF trong C# với Aspose.PDF. Hướng dẫn này chỉ cách thêm + các trang trống PDF, textbox, widget và cách lưu PDF. +og_title: Tạo tài liệu PDF với Aspose.PDF – Hướng dẫn C# đầy đủ +tags: +- pdf +- csharp +- aspose +- forms +title: Tạo tài liệu PDF với Aspose.PDF – Hướng dẫn đầy đủ C# +url: /vi/net/document-creation/create-pdf-document-with-aspose-pdf-full-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tạo tài liệu PDF với Aspose.PDF – Hướng dẫn đầy đủ C# + +Bạn đã bao giờ cần **tạo tài liệu pdf** từ đầu trong một dự án .NET và tự hỏi nên bắt đầu từ đâu chưa? Bạn không đơn độc; nhiều nhà phát triển gặp cùng một khó khăn khi yêu cầu đầu tiên là “tạo một PDF có thể điền được với cùng một ô nhập liệu trên ba trang.” Tin tốt? Với Aspose.PDF bạn có thể tạo nhanh một PDF chuyên nghiệp chỉ với vài dòng mã. + +Trong hướng dẫn này, chúng ta sẽ đi qua toàn bộ quy trình: từ khởi tạo một PDF mới, **thêm các trang trống pdf**, chèn một **textbox**, sao chép nó bằng các chú thích **widget**, và cuối cùng **lưu PDF** vào đĩa. Khi kết thúc, bạn sẽ có một tệp sẵn sàng sử dụng có tên *MultiWidgetField.pdf* và hiểu rõ lý do mỗi bước quan trọng. + +## Nội dung hướng dẫn này + +- Các yêu cầu trước khi bạn viết một dòng mã duy nhất. +- Tạo PDF tài liệu từng bước bằng Aspose.PDF cho .NET. +- Cách thêm các trang trống, một trường textbox trong biểu mẫu, và các instance widget bổ sung. +- Mẹo xử lý các vấn đề thường gặp (ví dụ: đánh chỉ mục trang, xung đột tên trường). +- Một chương trình C# hoàn chỉnh, sẵn sàng sao chép‑dán mà bạn có thể chạy ngay hôm nay. + +Không có liên kết tài liệu bên ngoài, không có các phím tắt “xem tài liệu API”—tất cả những gì bạn cần đều có ở đây. + +## Yêu cầu trước + +Trước khi bắt đầu, hãy chắc chắn rằng bạn có: + +1. **.NET 6.0** (hoặc bất kỳ phiên bản nào mới hơn) đã được cài đặt trên máy của bạn. +2. Giấy phép **Aspose.PDF for .NET** đang hoạt động hoặc một khóa đánh giá tạm thời. +3. Môi trường phát triển như **Visual Studio 2022** hoặc **VS Code** với phần mở rộng C#. + +Chỉ vậy—không cần gì thêm. + +## Bước 1: Khởi tạo tài liệu PDF và Thêm các trang trống + +Điều đầu tiên bạn làm khi **tạo tài liệu pdf** một cách lập trình là tạo một đối tượng `Document`. Hãy nghĩ nó như việc mở một cuốn sổ mới. Sau đó bạn thêm các trang cần thiết; trong trường hợp của chúng ta là ba trang trống. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using System; + +// Step 1 – Create a new PDF and add three blank pages +Document pdfDocument = new Document(); // Empty PDF container + +for (int i = 0; i < 3; i++) // Loop to add pages +{ + pdfDocument.Pages.Add(); // Each call adds a blank page +} +``` + +**Tại sao điều này quan trọng:** Aspose.PDF xử lý các trang như một bộ sưu tập zero‑based nội bộ, nhưng API công cộng của nó là 1‑based, vì vậy `Pages[1]` là trang đầu tiên bạn vừa thêm. Thêm các trang trước sẽ cung cấp cho bạn một nền để đặt các trường biểu mẫu sau này, và việc này rẻ hơn nhiều so với việc chèn trang khi tài liệu đã lớn. + +> **Mẹo chuyên nghiệp:** Nếu bạn chỉ cần một trang duy nhất, bạn có thể bỏ qua vòng lặp và gọi `pdfDocument.Pages.Add()` một lần. Thêm nhiều trang trong một vòng lặp giúp mã dễ mở rộng. + +## Bước 2: Định nghĩa trường TextBox trên Trang đầu tiên + +Bây giờ chúng ta đã có ba tờ trống, hãy thả một **textbox** lên trang đầu tiên. `TextBoxField` là một phần tử biểu mẫu mà người dùng cuối có thể nhập liệu khi PDF được mở trong Acrobat Reader hoặc bất kỳ trình xem PDF nào hỗ trợ biểu mẫu. + +```csharp +// Step 2 – Create a TextBox field on page 1 +TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], // Target page (1‑based) + new Rectangle(100, 700, 300, 730) // Position & size (LLX, LLY, URX, URY) +) +{ + PartialName = "Comment", // Internal field name + Value = "Enter your comment here..." // Optional default text +}; +``` + +**Tại sao lại dùng tọa độ hình chữ nhật?** Aspose.PDF sử dụng đơn vị point (1/72 inch). Hình chữ nhật `(100, 700, 300, 730)` đặt textbox khoảng nửa trang, rộng 200 pt và cao 30 pt. Điều chỉnh các số này để phù hợp với bố cục của bạn. + +> **Câu hỏi thường gặp:** *Tôi có cần đặt thuộc tính `Value` không?* +> Không, đây là tùy chọn. Để trống sẽ hiển thị một trường trắng; đặt giá trị mặc định có thể hướng dẫn người dùng. + +## Bước 3: Thêm Widget Annotation cho cùng một trường trên Trang 2 và 3 + +Một **widget** là biểu diễn trực quan của một trường biểu mẫu trên một trang cụ thể. Mặc định, một trường chỉ xuất hiện trên trang mà nó được tạo. Để tái sử dụng cùng một textbox trên các trang khác, bạn gắn các đối tượng `WidgetAnnotation` bổ sung vào bộ sưu tập `Widgets` của trường. + +```csharp +// Step 3 – Replicate the textbox on pages 2 and 3 using widgets +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730) // Same position on page 2 +)); + +commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730) // Same position on page 3 +)); +``` + +**Tại sao lại cần widget?** Nếu không có chúng, người dùng sẽ chỉ thấy textbox trên trang 1, mặc dù trường cơ bản đã tồn tại. Widget cho phép bạn chia sẻ một trường logic duy nhất trên nhiều trang, đảm bảo văn bản nhập vào xuất hiện ở mọi nơi trường được hiển thị. + +> **Trường hợp đặc biệt:** Nếu bạn cần textbox ở các tọa độ khác nhau trên mỗi trang, chỉ cần thay đổi giá trị `Rectangle` cho mỗi widget. + +## Bước 4: Đăng ký trường vào bộ sưu tập Form của tài liệu + +Aspose.PDF duy trì một đăng ký trung tâm cho tất cả các trường biểu mẫu. Thêm trường vào bộ sưu tập `Form` sẽ làm cho nó trở thành một phần của cấu trúc biểu mẫu tương tác trong PDF. + +```csharp +// Step 4 – Add the field to the document’s form collection +pdfDocument.Form.Add(commentField, "Comment"); +``` + +Tham số thứ hai (`"Comment"`) là **tên đầy đủ** của trường. Nó phải là duy nhất trong toàn bộ tài liệu; nếu không Aspose sẽ ném ra một ngoại lệ. + +## Bước 5: Lưu PDF kết quả – Cách lưu PDF + +Cuối cùng, chúng ta lưu tài liệu trong bộ nhớ ra đĩa. Đây là phần **cách lưu pdf** của hướng dẫn. + +```csharp +// Step 5 – Save the PDF to a file +string outputPath = @"C:\Temp\MultiWidgetField.pdf"; +pdfDocument.Save(outputPath); + +Console.WriteLine($"PDF saved successfully to {outputPath}"); +``` + +**Tại sao phải chỉ định đường dẫn tuyệt đối?** Sử dụng đường dẫn tuyệt đối tránh nhầm lẫn về thư mục làm việc, đặc biệt khi chạy chương trình từ debugger của Visual Studio. Nếu bạn muốn dùng đường dẫn tương đối, chỉ cần đảm bảo thư mục tồn tại trước khi gọi `Save`. + +### Kết quả mong đợi + +Mở *MultiWidgetField.pdf* trong Adobe Acrobat Reader. Bạn sẽ thấy cùng một textbox trên các trang 1, 2 và 3. Gõ bất kỳ nội dung nào vào trường trên bất kỳ trang nào—văn bản sẽ ngay lập tức xuất hiện trên các trang khác vì chúng chia sẻ cùng một trường biểu mẫu cơ bản. + +![Ví dụ tạo tài liệu PDF hiển thị một textbox trên ba trang](https://example.com/placeholder-image.png "Ví dụ tạo tài liệu PDF") + +*Văn bản thay thế hình ảnh: Ví dụ tạo tài liệu PDF hiển thị một textbox trên ba trang.* + +## Ví dụ đầy đủ, sẵn sàng chạy + +Dưới đây là chương trình hoàn chỉnh mà bạn có thể sao chép vào một dự án console mới (`dotnet new console`) và chạy. Tất cả các bước đã được sắp xếp, và mã bao gồm các chú thích để rõ ràng. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Forms; + +namespace AsposePdfDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create a new PDF document and add pages + // ------------------------------------------------- + Document pdfDocument = new Document(); + for (int i = 0; i < 3; i++) + pdfDocument.Pages.Add(); // Adds a blank page each iteration + + // ------------------------------------------------- + // Step 2: Define a TextBox form field on page 1 + // ------------------------------------------------- + TextBoxField commentField = new TextBoxField( + pdfDocument.Pages[1], + new Rectangle(100, 700, 300, 730)) + { + PartialName = "Comment", + Value = "Enter your comment here..." + }; + + // ------------------------------------------------- + // Step 3: Add widget annotations for pages 2 and 3 + // ------------------------------------------------- + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[2], + new Rectangle(100, 700, 300, 730))); + + commentField.Widgets.Add(new WidgetAnnotation( + pdfDocument.Pages[3], + new Rectangle(100, 700, 300, 730))); + + // ------------------------------------------------- + // Step 4: Register the field with the document's form collection + // ------------------------------------------------- + pdfDocument.Form.Add(commentField, "Comment"); + + // ------------------------------------------------- + // Step 5: Save the PDF (how to save pdf) + // ------------------------------------------------- + string outputPath = @"C:\Temp\MultiWidgetField.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF successfully created at: {outputPath}"); + } + } +} +``` + +Chạy chương trình, điều hướng tới `C:\Temp\`, và mở PDF đã tạo. Bạn sẽ thấy ba textbox giống hệt nhau, sẵn sàng cho người dùng nhập liệu. + +## Các biến thể thường gặp & Trường hợp đặc biệt + +| Scenario | What to Change | Why | +|----------|----------------|-----| +| **Kích thước textbox khác nhau trên mỗi trang** | Điều chỉnh các giá trị `Rectangle` cho mỗi `WidgetAnnotation`. | Cho phép bạn điều chỉnh trường cho phù hợp với các bố cục khác nhau. | +| **Trường chỉ đọc** | Đặt `commentField.ReadOnly = true;`. | Ngăn người dùng chỉnh sửa nội dung sau khi đã điền lần đầu. | +| **Textbox đa dòng** | Đặt `commentField.Multiline = true;` và tăng chiều cao của rectangle. | Cho phép nhập bình luận dài hơn mà không cần cuộn. | +| **Thêm trường thứ hai** | Tạo một `TextBoxField` khác (hoặc bất kỳ `FormField` nào) và lặp lại các bước 2‑4 với một tên mới. | Bạn có thể thu thập nhiều thông tin trong cùng một PDF. | + +## Mẹo chuyên nghiệp & Những lỗi cần tránh + +- **Đánh chỉ mục trang:** Hãy nhớ rằng `pdfDocument.Pages[1]` là trang đầu tiên, không phải `[0]`. Trộn lẫn chỉ mục 0‑based và 1‑based sẽ gây ra ngoại lệ “Index out of range”. +- **Xung đột tên trường:** Hai trường không thể có cùng tên đầy đủ. Nếu bạn gặp lỗi về tên trùng lặp, hãy kiểm tra lại chuỗi bạn truyền vào `Form.Add`. +- **Giấy phép vs. Đánh giá:** Phiên bản đánh giá sẽ thêm watermark trên mỗi trang. Triển khai giấy phép hợp lệ để loại bỏ nó trong môi trường sản xuất. +- **Hiệu suất:** Thêm hàng trăm trang trong một vòng lặp là ổn, nhưng nếu bạn cần tạo PDF rất lớn (hàng nghìn trang), hãy cân nhắc sử dụng + +{{< /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-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md b/pdf/vietnamese/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md new file mode 100644 index 000000000..3831b652f --- /dev/null +++ b/pdf/vietnamese/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-03-06 +description: Tạo tài liệu PDF bằng Aspose.PDF trong C#. Tìm hiểu cách thêm trang PDF, + vẽ hình chữ nhật PDF, thêm hình dạng PDF và điều chỉnh độ dày viền của hình chữ + nhật — tất cả trong một hướng dẫn. +draft: false +keywords: +- create pdf document +- add page pdf +- draw rectangle pdf +- add shape pdf +- rectangle border thickness +language: vi +og_description: Tạo tài liệu PDF trong C# với Aspose.PDF. Hướng dẫn này cho thấy cách + thêm trang PDF, vẽ hình chữ nhật PDF, thêm hình dạng PDF và thiết lập độ dày viền + của hình chữ nhật. +og_title: Tạo tài liệu PDF với Aspose.PDF – Hướng dẫn đầy đủ +tags: +- Aspose.PDF +- C# +- PDF generation +title: Tạo tài liệu PDF với Aspose.PDF – Hướng dẫn từng bước +url: /vi/net/document-creation/create-pdf-document-with-aspose-pdf-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tạo tài liệu PDF với Aspose.PDF – Hướng dẫn từng bước + +Bạn đã bao giờ cần **tạo tài liệu PDF** một cách lập trình và không chắc bắt đầu từ đâu chưa? Bạn không đơn độc—nhiều nhà phát triển gặp cùng một khó khăn khi ứng dụng của họ cần tạo ra hoá đơn, báo cáo hoặc chứng chỉ một cách nhanh chóng. + +Tin tốt là với Aspose.PDF cho .NET, bạn có thể thực hiện điều này chỉ trong vài dòng code, và bạn cũng sẽ học cách **add page PDF**, **draw rectangle PDF**, **add shape PDF**, và điều chỉnh **rectangle border thickness** trong quá trình. Hãy cùng bắt đầu. + +## Những gì bạn sẽ xây dựng + +Khi kết thúc hướng dẫn này, bạn sẽ có một ứng dụng console C# hoạt động đầy đủ mà: + +1. **Tạo một tài liệu PDF** từ đầu. +2. **Thêm một trang PDF** vào tài liệu. +3. **Vẽ một hình chữ nhật PDF** trên trang đó. +4. **Xác thực** rằng hình chữ nhật nằm trong giới hạn trang (**add shape PDF** step). +5. Đặt độ dày **border rectangle** tùy chỉnh. +6. Lưu kết quả dưới tên `ShapeValidated.pdf`. + +Không có dịch vụ bên ngoài, không có cấu hình bí ẩn—chỉ cần C# thuần và Aspose.PDF. + +### Yêu cầu trước + +- .NET 6.0 hoặc mới hơn (code cũng hoạt động với .NET Framework 4.6+). +- Tham chiếu tới gói NuGet `Aspose.Pdf`. Bạn có thể thêm nó qua: + +```bash +dotnet add package Aspose.Pdf +``` + +- Một trình soạn thảo văn bản hoặc IDE—Visual Studio, VS Code, Rider, bất kỳ công cụ nào bạn thích. + +> **Mẹo chuyên nghiệp:** Nếu bạn đang làm việc trên máy công ty, hãy chắc chắn nguồn NuGet không bị chặn; nếu không bạn sẽ nhận được lỗi “Package not found”. + +--- + +## Tạo tài liệu PDF – Khởi tạo Document + +Bước đầu tiên là tạo một đối tượng `Document`. Hãy nghĩ nó như một bảng vẽ trống, nơi mọi trang và hình dạng sẽ được đặt. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Drawing; + +// Step 1: Create a new PDF document +Document pdfDocument = new Document(); +``` + +Tại sao chúng ta cần đối tượng này? Nó đại diện cho toàn bộ tệp PDF trong bộ nhớ, cho phép chúng ta truy cập vào bộ sưu tập `Pages`, siêu dữ liệu và cài đặt bảo mật. Khi đã có document, bạn có thể bắt đầu thêm các trang, văn bản, hình ảnh và đồ họa vector. + +--- + +## Thêm một trang vào PDF (add page pdf) + +Một PDF không có trang thực chất là một tệp rỗng—vô nghĩa. Thêm một trang rất đơn giản, và bạn có thể tùy chỉnh kích thước nếu muốn. Ở đây chúng ta dùng kích thước A4 mặc định. + +```csharp +// Step 2: Add a new page to the document +Page pdfPage = pdfDocument.Pages.Add(); +``` + +Phương thức `Add()` trả về một thể hiện `Page` mới đã nằm trong bộ sưu tập `Pages`, vì vậy bạn có thể ngay lập tức bắt đầu vẽ trên nó. Trong các trường hợp thực tế, bạn có thể lặp qua một tập dữ liệu và thêm hàng chục trang; cùng một lời gọi một dòng sẽ hoạt động cho mỗi vòng lặp. + +--- + +## Vẽ hình chữ nhật (draw rectangle pdf) + +Bây giờ là phần trực quan: một hình chữ nhật với viền rõ ràng. Đây là nơi **draw rectangle pdf** được sử dụng. + +```csharp +// Step 3: Define a rectangle shape with a border +RectangleShape rectangleShape = new RectangleShape +{ + // Rectangle coordinates: lower‑left (50,50), upper‑right (600,800) + Rect = new Rectangle(50, 50, 600, 800), + // Set the border thickness – this is the rectangle border thickness + Border = new BorderInfo(BorderSide.All, 2) // 2 points thick +}; +``` + +Một vài điểm cần lưu ý: + +- `Rect` sử dụng đơn vị point (1 pt ≈ 1/72 inch). Các tọa độ xác định góc dưới‑trái và góc trên‑phải, cho phép bạn kiểm soát độ rộng và chiều cao một cách chính xác. +- `BorderInfo` cho phép bạn chỉ định các cạnh nào có đường viền và độ dày của đường. Ở đây chúng ta áp dụng đường 2 point cho **tất cả** các cạnh, tạo cho hình chữ nhật một vẻ ngoài sạch sẽ, đồng nhất. + +--- + +## Xác thực vị trí hình (add shape pdf) + +Trước khi chúng ta ghi hình chữ nhật vào trang, nên kiểm tra xem nó có nằm trong khu vực có thể in của trang hay không. Aspose.PDF cung cấp một phương thức trợ giúp tiện lợi cho việc này. + +```csharp +// Step 4: Verify that the shape fits within the page boundaries +if (pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shape is inside the page – add it + pdfPage.Add(rectangleShape); +} +else +{ + Console.WriteLine("Shape exceeds page boundaries."); +} +``` + +Tại sao lại quan tâm? Nếu bạn vô tình đặt một hình phần nào đó ra ngoài màn hình, trình xem PDF có thể cắt bớt, gây ra trải nghiệm người dùng khó hiểu. Điều kiện bảo vệ **add shape pdf** này đảm bảo bạn chỉ thêm nội dung sẽ hiển thị đầy đủ. + +--- + +## Lưu PDF (add page pdf) + +Cuối cùng, chúng ta ghi tài liệu trong bộ nhớ ra đĩa. Bạn có thể chọn bất kỳ vị trí nào mà bạn có quyền ghi. + +```csharp +// Step 5: Save the PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/ShapeValidated.pdf"); +Console.WriteLine("PDF created successfully!"); +``` + +Sau khi chạy chương trình, mở `ShapeValidated.pdf`—bạn sẽ thấy một trang duy nhất với một hình chữ nhật có viền gọn gàng, nằm gần trung tâm. + +--- + +## Kết quả mong đợi + +Khi bạn mở PDF đã tạo, bạn sẽ thấy: + +- Một trang kích thước A4. +- Một hình chữ nhật có góc dưới‑trái bắt đầu tại (50 pt, 50 pt) và góc trên‑phải kết thúc tại (600 pt, 800 pt). +- Một viền **dày 2 point** bao quanh hình chữ nhật. + +Nếu console in ra “PDF created successfully!”, bạn biết rằng mã đã chạy thành công mà không gặp lỗi kiểm tra giới hạn. + +![Sơ đồ minh họa cách tạo tài liệu PDF với Aspose.PDF](https://example.com/diagram-create-pdf.png "Tạo tài liệu PDF – tổng quan trực quan") + +*Văn bản thay thế của hình ảnh bao gồm từ khóa chính để đáp ứng yêu cầu SEO.* + +--- + +## Câu hỏi thường gặp & Trường hợp đặc biệt + +### Nếu tôi cần kích thước trang khác thì sao? + +Thay thế trang mặc định bằng kích thước tùy chỉnh: + +```csharp +Page customPage = pdfDocument.Pages.Add(); +customPage.SetPageSize(PageSize.A5); +``` + +### Làm thế nào để thay đổi màu viền? + +```csharp +rectangleShape.Border = new BorderInfo(BorderSide.All, 2) +{ + Color = Color.Red +}; +``` + +### Tôi có thể thêm nhiều hình trên cùng một trang không? + +Chắc chắn. Chỉ cần lặp lại khối **add shape pdf** với `RectangleShape` mới (hoặc các lớp con `Shape` khác) và điều chỉnh tọa độ `Rect` cho phù hợp. + +### Nếu hình chữ nhật vượt quá giới hạn trang thì sao? + +Lệnh gọi `IsShapeWithinBounds` sẽ trả về `false`. Trong mã sản xuất bạn có thể muốn tự động thay đổi kích thước hình: + +```csharp +if (!pdfPage.IsShapeWithinBounds(rectangleShape.Rect)) +{ + // Shrink to fit + rectangleShape.Rect = pdfPage.PageInfo.TrimBox; +} +pdfPage.Add(rectangleShape); +``` + +--- + +## Tóm tắt + +Chúng ta đã đi qua toàn bộ vòng đời của **tạo tài liệu PDF** với Aspose.PDF: + +1. Khởi tạo `Document`. +2. **Thêm một trang PDF** bằng `Pages.Add()`. +3. **Vẽ một hình chữ nhật PDF** qua `RectangleShape`. +4. **Thêm hình PDF** chỉ sau khi xác nhận nó nằm trong trang. +5. Kiểm soát **độ dày viền hình chữ nhật** bằng `BorderInfo`. +6. Lưu tệp. + +Đó là toàn bộ quy trình trong chưa tới 60 dòng code. + +--- + +## Tiếp theo là gì? + +- **Thêm văn bản**: Sử dụng `TextFragment` để đặt tiêu đề hoặc nhãn bên trong hình chữ nhật. +- **Chèn hình ảnh**: Lớp `Image` cho phép bạn nhúng logo hoặc biểu đồ. +- **Tạo bảng**: Lý tưởng cho hoá đơn hoặc báo cáo dữ liệu. +- **Áp dụng bảo mật**: Bảo vệ PDF bằng mật khẩu nếu nó chứa dữ liệu nhạy cảm. + +Mỗi chủ đề trên dựa trên những kiến thức cơ bản ở đây, vì vậy bạn đã sẵn sàng để khám phá các kịch bản tạo PDF nâng cao hơn. + +### Tiếp tục thử nghiệm + +Đừng dừng lại ở một hình chữ nhật duy nhất—hãy thử nghiệm với các hình dạng, màu sắc và kiểu đường khác nhau. API của Aspose.PDF rất phong phú, và càng thử nghiệm bạn sẽ càng thoải mái. Nếu gặp khó khăn, tài liệu chính thức của Aspose là người bạn đồng hành tốt, nhưng hãy nhớ rằng đoạn code ở trên là một giải pháp hoàn chỉnh, sẵn sàng sao chép‑dán và có thể chạy ngay hôm nay. + +Chúc lập trình vui vẻ, và hy vọng các PDF của bạn luôn hiển thị đúng như mong muốn! + +{{< /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 7ddc3e168..da1388d79 100644 --- a/pdf/vietnamese/net/document-manipulation/_index.md +++ b/pdf/vietnamese/net/document-manipulation/_index.md @@ -311,6 +311,9 @@ Tìm hiểu cách chia nhỏ các tệp PDF nhiều trang và tạo tệp PDF m ### [Hướng dẫn tối ưu về thao tác PDF với Aspose.PDF .NET: Tải, lưu và thay thế văn bản hiệu quả](./master-pdf-manipulation-aspose-pdf-net/) Tìm hiểu cách làm chủ thao tác PDF bằng Aspose.PDF cho .NET. Hướng dẫn này bao gồm việc tải, lưu và thay thế văn bản trong PDF, lý tưởng cho các nhà phát triển tìm kiếm hiệu quả. +### [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. + ## 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-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md b/pdf/vietnamese/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md new file mode 100644 index 000000000..206fc382e --- /dev/null +++ b/pdf/vietnamese/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/_index.md @@ -0,0 +1,251 @@ +--- +category: general +date: 2026-03-06 +description: Tìm hiểu cách xóa thông tin trong PDF bằng Aspose PDF trong C#. Hướng + dẫn từng bước này chỉ cách tải tài liệu PDF trong C#, truy cập trang PDF đầu tiên + và loại bỏ hình ảnh khỏi PDF. +draft: false +keywords: +- how to redact pdf +- remove image from pdf +- load pdf document c# +- use aspose pdf +- access first pdf page +language: vi +og_description: Cách xóa nội dung PDF nhanh chóng bằng Aspose PDF trong C#. Tải tài + liệu PDF, truy cập trang PDF đầu tiên và loại bỏ hình ảnh khỏi PDF chỉ với vài dòng + mã. +og_title: Cách xóa thông tin nhạy cảm trong PDF bằng C# – Hướng dẫn Aspose PDF +tags: +- Aspose PDF +- C# +- PDF Redaction +title: Cách xóa thông tin nhạy cảm trong PDF bằng C# với Aspose PDF – Hướng dẫn toàn + diện +url: /vi/net/document-manipulation/how-to-redact-pdf-in-c-with-aspose-pdf-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách Xóa Nội Dung PDF trong C# với Aspose PDF – Hướng Dẫn Toàn Diện + +Bạn đã bao giờ tự hỏi **cách xóa nội dung PDF** mà không phải lo lắng chưa? Có thể bạn vừa nhận được một hợp đồng ẩn logo bí mật, hoặc một báo cáo vẫn còn hình ảnh placeholder cần xóa. Trong những lúc đó, bạn sẽ muốn một cách tiếp cận lập trình đáng tin cậy để loại bỏ nội dung—không cần đến các thủ thuật thủ công của Acrobat. + +Trong tutorial này, chúng ta sẽ đi qua một giải pháp ngắn gọn, từ đầu đến cuối để **load PDF document C#**, **access first PDF page**, và sau đó **remove image from PDF** bằng thư viện mạnh mẽ **use Aspose PDF**. Khi kết thúc, bạn sẽ có một file PDF đã được xóa nội dung sẵn sàng phân phối, và hiểu vì sao mỗi dòng code đều quan trọng. + +> **Mẹo chuyên nghiệp:** Aspose PDF hoạt động với .NET Framework 4.6+ và .NET Core 3.1+, vì vậy bạn sẽ ổn dù đang dùng Windows, Linux hay macOS. + +--- + +![how to redact pdf example](redact-pdf-before-after.png){alt="ví dụ cách xóa nội dung PDF"} + +## Những Gì Bạn Cần Chuẩn Bị + +- **Aspose.PDF for .NET** (gói NuGet mới nhất) +- Môi trường phát triển **C#** (Visual Studio, Rider, hoặc VS Code) +- Một file PDF mẫu chứa tài nguyên hình ảnh bạn muốn xóa (chúng ta sẽ gọi nó là `Sensitive.pdf`) + +Không cần công cụ bên thứ ba nào khác, không cần OCR, chỉ cần code thuần. + +--- + +## Bước 1: Load PDF Document C# – Bước Đầu Tiên + +Trước khi có thể xóa bất kỳ nội dung nào, bạn phải đưa file vào bộ nhớ. Lớp `Document` là điểm khởi đầu cho mọi thao tác Aspose PDF. + +```csharp +using Aspose.Pdf; + +// Step 1: Load the PDF document you want to edit +// Replace the path with the actual location of your file +Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); +``` + +**Tại sao điều này quan trọng:** +`Document` phân tích toàn bộ cấu trúc PDF, xây dựng mô hình đối tượng cho phép bạn thao tác các trang, tài nguyên và annotation. Nếu file không thể tải (đường dẫn sai, PDF bị hỏng), một ngoại lệ sẽ được ném ngay—giúp bạn biết sớm có vấn đề. + +### Sai Lầm Thường Gặp + +> *“Tôi nhận được `FileNotFoundException` mặc dù file tồn tại.”* +> Đảm bảo đường dẫn là tuyệt đối hoặc thư mục làm việc của dự án khớp với vị trí của `Sensitive.pdf`. Sử dụng `Path.Combine(Environment.CurrentDirectory, "Sensitive.pdf")` có thể giúp tránh các rắc rối về đường dẫn tương đối. + +--- + +## Bước 2: Access First PDF Page – Nơi Hình Ảnh Ẩn Nằm + +Hình ảnh được lưu dưới dạng tài nguyên trên mỗi trang. Trong nhiều PDF đơn giản, trang đầu tiên thường là nơi chứa hình ảnh cần xóa, vì vậy chúng ta sẽ lấy trang đó. + +```csharp +// Step 2: Access the first page (pages are 1‑based) +Page firstPage = pdfDocument.Pages[1]; +``` + +**Tại sao điều này quan trọng:** +Aspose PDF sử dụng chỉ mục bắt đầu từ 1 cho các trang, điều này hơi khác so với hầu hết các collection trong .NET. Truy cập sai trang có thể khiến bạn xóa nội dung sai—hoặc tệ hơn, để lại hình ảnh nhạy cảm không bị xóa. + +### Xem Xét Trường Hợp Đặc Biệt + +Nếu tài liệu của bạn không có trang nào (PDF trống), việc gọi `pdfDocument.Pages[1]` sẽ ném `IndexOutOfRangeException`. Một kiểm tra nhanh có thể cứu bạn: + +```csharp +if (pdfDocument.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF contains no pages to redact."); +} +``` + +--- + +## Bước 3: Remove Image from PDF – Xóa Tài Nguyên Hình Ảnh + +Aspose PDF cho phép bạn xóa một tài nguyên bằng tên. Hầu hết các hình ảnh có tên `Im1`, `Im2`, v.v., nhưng bạn có thể kiểm tra `firstPage.Resources.Images` để xác nhận. + +```csharp +// Step 3: Redact (remove) a specific image resource by its name, e.g., "Im1" +firstPage.Resources.RedactResource("Im1"); +``` + +**Tại sao điều này quan trọng:** +`RedactResource` xóa hình ảnh *và* mọi tham chiếu tới nó trên trang, đảm bảo khoảng trống được lấp đầy bằng vùng trắng thay vì một liên kết hỏng. Đây là cách chuẩn PDF để xóa nội dung. + +### Cách Tìm Tên Hình Ảnh Chính Xác + +Nếu bạn không chắc hình ảnh có tên `"Im1"`: + +```csharp +foreach (var img in firstPage.Resources.Images) +{ + Console.WriteLine($"Image name: {img.Key}"); +} +``` + +Chạy đoạn mã này, kiểm tra đầu ra trên console, và thay `"Im1"` bằng khóa thực tế bạn thấy. + +--- + +## Bước 4: Save the Redacted PDF – Hoàn Thành Công Việc + +Bây giờ hình ảnh không mong muốn đã bị xóa, hãy ghi các thay đổi trở lại đĩa. + +```csharp +// Step 4: Save the modified PDF to a new file +pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); +``` + +**Tại sao điều này quan trọng:** +Lưu vào **file mới** giữ nguyên bản gốc—đây là một mạng lưới an toàn trong trường hợp bạn cần khôi phục. Nếu muốn ghi đè, chỉ cần trỏ phương thức `Save` tới đường dẫn gốc, nhưng hãy nhớ rằng thao tác này không thể hoàn tác. + +### Kiểm Tra Kết Quả + +Mở `Redacted.pdf` bằng bất kỳ trình xem PDF nào. Vị trí hình ảnh nên xuất hiện trống, và phần còn lại của tài liệu nên giống hệt bản gốc. Nếu bố cục trang bị lệch, hãy kiểm tra lại rằng bạn chỉ xóa tài nguyên mong muốn và không phải một XObject chia sẻ. + +--- + +## Ví Dụ Hoàn Chỉnh + +Kết hợp tất cả lại, đây là chương trình hoàn chỉnh, sẵn sàng chạy: + +```csharp +using System; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // Load the PDF you want to edit + Document pdfDocument = new Document("YOUR_DIRECTORY/Sensitive.pdf"); + + // Ensure the document has at least one page + if (pdfDocument.Pages.Count == 0) + { + Console.WriteLine("The PDF contains no pages."); + return; + } + + // Access the first page + Page firstPage = pdfDocument.Pages[1]; + + // OPTIONAL: List all image resources on the page (helps you find the correct name) + Console.WriteLine("Images on page 1:"); + foreach (var img in firstPage.Resources.Images) + { + Console.WriteLine($"- {img.Key}"); + } + + // Redact the image named "Im1" + firstPage.Resources.RedactResource("Im1"); + + // Save the redacted PDF + pdfDocument.Save("YOUR_DIRECTORY/Redacted.pdf"); + + Console.WriteLine("Redaction complete. Check Redacted.pdf."); + } +} +``` + +**Kết quả mong đợi** (trên console): + +``` +Images on page 1: +- Im1 +Redaction complete. Check Redacted.pdf. +``` + +Khi mở `Redacted.pdf`, hình ảnh từng là `Im1` sẽ biến mất, để lại một trang sạch sẽ. + +--- + +## Câu Hỏi Thường Gặp + +### Điều này có hoạt động với PDF được mã hoá không? + +Nếu PDF nguồn được bảo vệ bằng mật khẩu, truyền mật khẩu vào hàm khởi tạo `Document`: + +```csharp +Document pdfDocument = new Document("Sensitive.pdf", new LoadOptions { Password = "mySecret" }); +``` + +### Còn nếu hình ảnh xuất hiện trên nhiều trang? + +Lặp qua từng trang và gọi `RedactResource` với cùng một tên hình ảnh (hoặc khám phá tên trên mỗi trang). Ví dụ: + +```csharp +foreach (Page page in pdfDocument.Pages) +{ + if (page.Resources.Images.ContainsKey("Im1")) + page.Resources.RedactResource("Im1"); +} +``` + +### Tôi có thể xóa văn bản theo cách tương tự không? + +Có—sử dụng `page.Contents.RedactText("confidential")` hoặc dùng lớp `Redactor` cho các mẫu phức tạp hơn. Đó là một tutorial riêng, nhưng nguyên tắc tương tự như việc xóa hình ảnh. + +--- + +## Kết Luận – Những Gì Chúng Ta Đã Đạt Được + +Chúng ta đã trả lời **cách xóa nội dung PDF** một cách lập trình bằng cách: + +1. **Loading PDF document C#** với Aspose PDF. +2. **Accessing first PDF page** để tìm tài nguyên mục tiêu. +3. **Removing image from PDF** qua `RedactResource`. +4. **Saving** phiên bản đã làm sạch một cách an toàn. + +Cách tiếp cận này nhanh, có thể lặp lại, và hoạt động trong các job batch—hoàn hảo cho các pipeline tuân thủ hoặc tự động tạo báo cáo. + +Nếu bạn muốn tiến xa hơn, hãy khám phá: + +- **Batch redaction** cho toàn bộ thư mục PDF. +- **Redacting text** bằng các mẫu regex sử dụng `Redactor`. +- **Embedding a watermark** sau khi xóa để đánh dấu “đã làm sạch”. + +Hãy thử ngay, điều chỉnh logic tên hình ảnh cho các file của bạn, + +{{< /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/performance-optimization/_index.md b/pdf/vietnamese/net/performance-optimization/_index.md index d508b5887..918204a84 100644 --- a/pdf/vietnamese/net/performance-optimization/_index.md +++ b/pdf/vietnamese/net/performance-optimization/_index.md @@ -50,6 +50,9 @@ Làm chủ nghệ thuật chuyển đổi tệp SVG sang PDF một cách chính ### [Gỡ bỏ phông chữ trong PDF bằng Aspose.PDF cho .NET: Giảm kích thước tệp và cải thiện hiệu suất](./optimize-pdfs-unembed-fonts-aspose-pdf-net/) Tìm hiểu cách bỏ nhúng phông chữ khỏi tệp PDF của bạn bằng Aspose.PDF cho .NET. Tối ưu hóa hiệu suất PDF, giảm kích thước tệp và cải thiện thời gian tải với hướng dẫn từng bước này. +### [Cách nén PDF với Aspose.PDF – Hướng dẫn nhanh](./how-to-compress-pdf-with-aspose-pdf-quick-guide/) +Hướng dẫn nhanh cách nén tệp PDF bằng Aspose.PDF cho .NET, giảm kích thước mà vẫn giữ chất lượng. + ## 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/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md b/pdf/vietnamese/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md new file mode 100644 index 000000000..f77b60298 --- /dev/null +++ b/pdf/vietnamese/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/_index.md @@ -0,0 +1,204 @@ +--- +category: general +date: 2026-03-06 +description: Tìm hiểu cách nén PDF ngay lập tức bằng Aspose.Pdf. Hướng dẫn này cho + thấy cách giảm kích thước tệp PDF bằng nén PDF không mất dữ liệu. +draft: false +keywords: +- how to compress pdf +- reduce pdf file size +- lossless pdf compression +- shrink pdf file size +- save optimized pdf +language: vi +og_description: Cách nén PDF bằng Aspose.Pdf? Hãy làm theo hướng dẫn từng bước này + để giảm kích thước tệp PDF, đạt được nén PDF không mất dữ liệu và lưu các tệp PDF + đã tối ưu. +og_title: cách nén pdf bằng Aspose.Pdf – hướng dẫn nhanh +tags: +- pdf +- aspnet +- csharp +title: Cách nén PDF bằng Aspose.Pdf – Hướng dẫn nhanh +url: /vi/net/performance-optimization/how-to-compress-pdf-with-aspose-pdf-quick-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# cách nén pdf với Aspose.Pdf – hướng dẫn nhanh + +Bạn đã bao giờ tự hỏi **cách nén pdf** mà không biến chúng thành một mớ hỗn độn mờ nhạt? Bạn không phải là người duy nhất. Hầu hết các nhà phát triển gặp khó khăn khi họ cần **giảm kích thước file pdf** cho các tệp đính kèm email, tải lên web, hoặc giới hạn lưu trữ, nhưng họ sợ mất chất lượng hình ảnh. + +Trong hướng dẫn này, chúng tôi sẽ hướng dẫn qua một ví dụ hoàn chỉnh, sẵn sàng chạy, cho bạn thấy chính xác **cách nén pdf** bằng cách sử dụng bộ tối ưu tích hợp của Aspose.Pdf. Khi kết thúc, bạn sẽ biết cách **giảm kích thước file pdf**, giữ cho hình ảnh của bạn sắc nét với **nén pdf không mất dữ liệu**, và cuối cùng **lưu file pdf đã tối ưu** mà hoạt động tốt với bất kỳ trình xem nào. + +## Những gì bạn sẽ học + +- Tải một PDF nặng (ví dụ, một tệp chứa nhiều hình ảnh độ phân giải cao) vào bộ nhớ. +- Áp dụng bộ tối ưu của Aspose.Pdf với các cài đặt không mất dữ liệu mặc định. +- Lưu kết quả dưới dạng một tệp mới, nhỏ hơn. +- Mẹo để điều chỉnh nén nếu bạn cần giảm kích thước hơn nữa. + +Không cần công cụ bên ngoài, không có các thủ thuật dòng lệnh bí ẩn—chỉ cần mã C# sạch sẽ và giải thích rõ ràng. + +## Yêu cầu trước + +Trước khi chúng ta bắt đầu, hãy chắc chắn rằng bạn có: + +| Requirement | Why it matters | +|-------------|----------------| +| .NET 6.0 hoặc sau (hoặc .NET Framework 4.6+) | Aspose.Pdf hỗ trợ cả hai; các runtime mới hơn mang lại hiệu năng tốt hơn. | +| Gói NuGet Aspose.Pdf cho .NET (`Aspose.Pdf`) | `Document` class nằm ở đây. | +| Một PDF có hình ảnh lớn (ví dụ, `HeavyImages.pdf`) | Cung cấp cho bạn một đối tượng thực tế để nén. | +| Visual Studio, Rider, hoặc bất kỳ trình chỉnh sửa C# nào bạn thích | Sự thoải mái là quan trọng—chọn thứ bạn cảm thấy tự nhiên. | + +> **Mẹo chuyên nghiệp:** Nếu bạn đang sử dụng pipeline CI/CD, hãy thêm tham chiếu NuGet vào file `.csproj` của bạn để quá trình build không bao giờ quên nó. + +```xml + + + +``` + +## Bước 1: Tải PDF bạn muốn nén + +Đầu tiên chúng ta cần một đối tượng `Document` trỏ tới tệp nguồn. Hãy nghĩ nó như việc mở một cuốn sách trước khi bạn bắt đầu chỉnh sửa các chương. + +```csharp +using Aspose.Pdf; + +// Replace the path with the location of your heavy PDF. +string sourcePath = @"C:\Docs\HeavyImages.pdf"; + +Document pdfDoc = new Document(sourcePath); +Console.WriteLine($"Loaded PDF – {pdfDoc.Pages.Count} pages, {pdfDoc.Info.Title ?? "no title"}"); +``` + +*​Tại sao điều này quan trọng:* Việc tải tệp cho phép Aspose.Pdf đọc tất cả các tài nguyên nhúng (hình ảnh, phông chữ, v.v.). Nếu không có bước này, sẽ không có gì để **giảm kích thước file pdf**. + +## Bước 2: Áp dụng nén PDF không mất dữ liệu + +Aspose.Pdf cung cấp một phương thức `Optimize` mà, theo mặc định, thực hiện một quy trình **nén pdf không mất dữ liệu**. Nó loại bỏ các đối tượng dư thừa, nén lại hình ảnh với cùng độ trung thực hình ảnh, và xóa các phông chữ không dùng. + +```csharp +// Optimize the PDF using the library's default, lossless settings. +pdfDoc.Optimize(); + +// Optional: tweak settings if you need a more aggressive shrink. +// var opt = new OptimizationOptions { CompressImages = true, ImageQuality = 80 }; +// pdfDoc.Optimize(opt); +Console.WriteLine("Optimization complete – PDF is now ready to be saved."); +``` + +*​Tại sao điều này quan trọng:* Bộ tối ưu mặc định được thiết kế để **giảm kích thước file pdf** trong khi giữ nguyên mọi pixel. Nếu sau này bạn quyết định có thể chấp nhận một chút giảm chất lượng, `OptimizationOptions` đã được chú thích cho phép bạn đổi một vài kilobyte thêm để tăng tốc. + +## Bước 3: Lưu PDF đã tối ưu + +Bây giờ tài liệu đã gọn hơn, chúng ta ghi nó ra một tệp mới. Giữ nguyên bản gốc không thay đổi là thói quen tốt, đặc biệt khi bạn đang thử nghiệm các cài đặt khác nhau. + +```csharp +string outputPath = @"C:\Docs\Optimized.pdf"; + +pdfDoc.Save(outputPath); +Console.WriteLine($"Optimized PDF saved to: {outputPath}"); +``` + +Sau khi lưu, so sánh kích thước các tệp: + +```csharp +long originalSize = new FileInfo(sourcePath).Length; +long optimizedSize = new FileInfo(outputPath).Length; +Console.WriteLine($"Original size: {originalSize / 1024} KB"); +Console.WriteLine($"Optimized size: {optimizedSize / 1024} KB"); +Console.WriteLine($"Reduction: {100 - (optimizedSize * 100 / originalSize)}%"); +``` + +Bạn sẽ thấy sự giảm đáng kể—thường **30‑70 %** tùy thuộc vào số lượng hình ảnh độ phân giải cao có trong nguồn. + +![hình minh họa cách nén pdf](image.png "cách nén pdf") + +*Văn bản thay thế hình ảnh:* cách nén pdf – trước và sau khi tối ưu + +## Nâng cao: Điều chỉnh nén cho các kịch bản cụ thể + +Mặc dù bộ tối ưu mặc định rất tốt cho hầu hết các trường hợp, đôi khi bạn cần **giảm kích thước file pdf** hơn nữa: + +| Scenario | Setting to adjust | Effect | +|----------|-------------------|--------| +| PDF có nhiều hình ảnh raster | `CompressImages = true` + lower `ImageQuality` (e.g., 70) | Giảm số byte của hình ảnh, mất một chút chất lượng hình ảnh. | +| PDF chứa các phông chữ trùng lặp | `RemoveUnusedObjects = true` | Loại bỏ các phông chữ không được tham chiếu. | +| PDF có siêu dữ liệu lớn | `RemoveMetadata = true` | Xóa các khối XML/siêu dữ liệu ẩn. | + +Bạn có thể kết hợp chúng trong một đối tượng `OptimizationOptions` và truyền nó vào `pdfDoc.Optimize(options)`. + +## Câu hỏi thường gặp & các trường hợp đặc biệt + +**Nếu PDF đã được tối ưu rồi thì sao?** +Aspose.Pdf vẫn sẽ quét tài liệu, nhưng sự thay đổi kích thước sẽ rất ít. Chạy bộ tối ưu trên một tệp đã gọn là an toàn; nó sẽ không làm hỏng gì cả. + +**Tôi có thể nén PDF được mã hóa không?** +Có, nhưng bạn phải cung cấp mật khẩu trước khi gọi `Optimize`. Ví dụ: + +```csharp +Document encrypted = new Document(sourcePath, "myPassword"); +encrypted.Optimize(); +encrypted.Save(outputPath); +``` + +**Còn PDF có đồ họa vector thì sao?** +Các đối tượng vector đã nhẹ, vì vậy bộ tối ưu tập trung vào hình ảnh raster và siêu dữ liệu. Mong đợi lợi nhuận vừa phải cho các tệp chỉ có vector. + +## Ví dụ đầy đủ, có thể chạy + +Dưới đây là một ứng dụng console tự chứa mà bạn có thể sao chép‑dán vào một `.csproj` mới. Nó minh họa mọi thứ đã thảo luận—từ tải đến xác minh. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; + +class Program +{ + static void Main() + { + // ----- Configuration ------------------------------------------------- + string sourcePath = @"C:\Docs\HeavyImages.pdf"; + string outputPath = @"C:\Docs\Optimized.pdf"; + + // ----- Step 1: Load ------------------------------------------------- + Document pdfDoc = new Document(sourcePath); + Console.WriteLine($"Loaded {pdfDoc.Pages.Count} pages."); + + // ----- Step 2: Optimize (lossless) ---------------------------------- + pdfDoc.Optimize(); // default lossless compression + Console.WriteLine("PDF optimized with lossless settings."); + + // ----- Step 3: Save ------------------------------------------------- + pdfDoc.Save(outputPath); + Console.WriteLine($"Saved optimized PDF to {outputPath}"); + + // ----- Verify size reduction ---------------------------------------- + long originalSize = new FileInfo(sourcePath).Length; + long optimizedSize = new FileInfo(outputPath).Length; + Console.WriteLine($"Original: {originalSize / 1024} KB"); + Console.WriteLine($"Optimized: {optimizedSize / 1024} KB"); + Console.WriteLine($"Saved {100 - (optimizedSize * 100 / originalSize)}% space."); + } +} +``` + +Chạy chương trình, mở `Optimized.pdf` trong bất kỳ trình xem nào, và bạn sẽ thấy cùng bố cục trang, cùng hình ảnh sắc nét, nhưng tệp nhẹ hơn. Đó là phép màu của **nén pdf không mất dữ liệu**. + +## Kết luận + +Chúng tôi đã trình bày **cách nén pdf** bằng bộ tối ưu tích hợp của Aspose.Pdf, minh họa quy trình thực tế **giảm kích thước file pdf**, và giải thích các lý do nền tảng cho mỗi bước. Bằng cách tuân theo mô hình ba bước—tải, tối ưu, lưu—bạn có thể **giảm kích thước file pdf** ngay lập tức, giữ nguyên hình ảnh của mình với **nén pdf không mất dữ liệu**, và tự tin **lưu file pdf đã tối ưu** cho việc sử dụng tiếp theo. + +Sẵn sàng cho thử thách tiếp theo? Hãy thử nối bộ tối ưu này với một script batch để xử lý toàn bộ thư mục, hoặc thử nghiệm với `OptimizationOptions` tùy chọn để ép thêm vài kilobyte cuối cùng. Các nguyên tắc tương tự áp dụng dù bạn đang làm việc trên công cụ desktop, API web, hay công việc batch phía server. + +Có thêm câu hỏi về xử lý PDF, những điểm đặc biệt của Aspose.Pdf, hoặc I/O file .NET? Để lại bình luận bên dưới, và chúng ta sẽ tiếp tục cuộc trò chuyện. Chúc bạn nén thành công! + +{{< /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/programming-with-security-and-signatures/_index.md b/pdf/vietnamese/net/programming-with-security-and-signatures/_index.md index 6d117b8a3..0949ea7cf 100644 --- a/pdf/vietnamese/net/programming-with-security-and-signatures/_index.md +++ b/pdf/vietnamese/net/programming-with-security-and-signatures/_index.md @@ -34,6 +34,8 @@ Hướng dẫn cung cấp cho bạn tổng quan chi tiết về các phương ph | [Thiết lập quyền trong tệp PDF](./set-privileges/) | Tìm hiểu cách thiết lập quyền PDF bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. Bảo mật tài liệu của bạn một cách hiệu quả. | | [Ký bằng thẻ thông minh sử dụng chữ ký tệp PDF](./sign-with-smart-card-using-pdf-file-signature/) | Tìm hiểu cách ký tệp PDF bằng thẻ thông minh với Aspose.PDF cho .NET. Thực hiện theo hướng dẫn từng bước này để có chữ ký số an toàn. | | [Ký bằng thẻ thông minh sử dụng trường chữ ký](./sign-with-smart-card-using-signature-field/) | Tìm hiểu cách ký PDF an toàn bằng thẻ thông minh với Aspose.PDF cho .NET. Làm theo hướng dẫn từng bước của chúng tôi để triển khai dễ dàng. | +| [Cách xác minh chữ ký trong PDF bằng C# – Hướng dẫn đầy đủ của Aspose](./how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/) | Học cách kiểm tra và xác thực chữ ký PDF bằng C# với Aspose.PDF cho .NET trong hướng dẫn chi tiết. | +| [Thêm Chữ ký Kỹ thuật số PDF trong C# – Hướng dẫn Chi tiết Từng Bước](./add-digital-signature-pdf-in-c-complete-step-by-step-guide/) | Học cách thêm chữ ký kỹ thuật số vào PDF bằng C# với Aspose.PDF cho .NET. Hướng dẫn chi tiết từng bước. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/vietnamese/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md b/pdf/vietnamese/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..7a0c9d75e --- /dev/null +++ b/pdf/vietnamese/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,258 @@ +--- +category: general +date: 2026-03-06 +description: Thêm chữ ký số vào PDF bằng Aspose.PDF. Tìm hiểu cách tạo chữ ký pkcs7 + rời và ký PDF bằng pfx với một callback tùy chỉnh. +draft: false +keywords: +- add digital signature pdf +- create pkcs7 detached signature +- sign pdf using pfx +- Aspose PDF signing +- C# PDF digital signature +language: vi +og_description: Thêm chữ ký số vào PDF nhanh chóng. Hướng dẫn này chỉ cách tạo chữ + ký tách pkcs7 và ký PDF bằng pfx trong C#. +og_title: Thêm Chữ ký số PDF trong C# – Hướng dẫn lập trình đầy đủ +tags: +- Aspose.PDF +- C# +- Digital Signature +title: Thêm Chữ Ký Số vào PDF trong C# – Hướng Dẫn Chi Tiết Từng Bước +url: /vi/net/programming-with-security-and-signatures/add-digital-signature-pdf-in-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Thêm Chữ Ký Số vào PDF – Hướng Dẫn Chi Tiết Từng Bước + +Bạn đã bao giờ cần **thêm chữ ký số pdf** nhưng không biết bắt đầu từ đâu? Bạn không phải là người duy nhất; nhiều nhà phát triển gặp khó khăn khi giấy tờ yêu cầu chữ ký có tính pháp lý và mã nguồn chỉ biết tạo các PDF thuần. + +Trong hướng dẫn này, chúng ta sẽ thực hiện một giải pháp thực tế cho phép bạn **thêm chữ ký số pdf** vào tài liệu bằng Aspose.PDF cho .NET, tạo chữ ký PKCS#7 tách rời, và ký PDF bằng chứng chỉ PFX — tất cả bằng C# thuần. Khi kết thúc, bạn sẽ có một đoạn mã sẵn sàng chạy, hiểu được “tại sao” mỗi lời gọi được thực hiện, và biết cách điều chỉnh cho các trường hợp đặc biệt. + +## Những Điều Bạn Sẽ Học + +- Cách tải một PDF chưa ký và chuẩn bị nó để ký. +- Cơ chế của **tạo chữ ký pkcs7 tách rời** và lý do bạn có thể muốn sử dụng dạng tách rời thay vì nhúng. +- Các bước chính xác để **ký pdf bằng pfx** với một callback tùy chỉnh, cho phép bạn kiểm soát toàn bộ quá trình mật mã. +- Mẹo khắc phục các lỗi thường gặp (thiếu chứng chỉ, thuật toán băm sai, v.v.). + +### Yêu Cầu Trước + +| Yêu cầu | Lý do | +|-------------|--------| +| .NET 6.0 trở lên | Các tính năng ngôn ngữ hiện đại và quản lý bộ nhớ tốt hơn. | +| Aspose.PDF cho .NET (gói NuGet) | Cung cấp `PdfFileSignature`, `PKCS7Detached`, và các tiện ích PDF khác. | +| Một file PFX hợp lệ (`.pfx`) có khóa riêng | Cần thiết cho bước **ký pdf bằng pfx**. | +| Kiến thức cơ bản về C# | Mã nguồn khá đơn giản, nhưng hiểu `using` statements sẽ giúp. | + +> **Mẹo chuyên nghiệp:** Đừng để mật khẩu PFX nằm trong mã nguồn — sử dụng biến môi trường hoặc Azure Key Vault cho môi trường production. + +--- + +## Cách Thêm Chữ Ký Số PDF với Aspose.PDF + +Dưới đây chúng ta chia quy trình thành năm bước dễ hiểu. Mỗi bước bao gồm một đoạn mã, giải thích *tại sao* nó quan trọng, và một kiểm tra nhanh. + +![Ảnh chụp màn hình PDF đã ký trong trình xem, hiển thị trường chữ ký có thể nhìn thấy](/images/add-digital-signature-pdf.png "ví dụ thêm chữ ký số pdf") + +### Bước 1 – Tải Tài Liệu PDF Chưa Ký + +Đầu tiên chúng ta cần một đối tượng `Document` đại diện cho PDF bạn muốn ký. Sử dụng `using var` sẽ tự động giải phóng handle của file. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Load the PDF you want to protect +using var pdfDocument = new Document("YOUR_DIRECTORY/Unsigned.pdf"); +``` + +**Tại sao?** +Aspose xử lý PDF như một đồ thị đối tượng; việc tải nó cho phép bạn truy cập các trang, chú thích, và luồng byte nội bộ sẽ được băm cho chữ ký. + +### Bước 2 – Khởi Tạo Trợ Giúp PdfFileSignature + +`PdfFileSignature` là lớp thực hiện việc bao bọc mật mã. Nó làm việc chặt chẽ với `PKCS7Detached`. + +```csharp +using Aspose.Pdf.Facades; + +// Create a signer bound to the loaded document +using var pdfSigner = new PdfFileSignature(pdfDocument); +``` + +**Tại sao?** +Tách riêng phần ký khỏi tài liệu cho phép bạn tái sử dụng cùng một instance `Document` cho các thao tác khác (ví dụ: thêm watermark) trước khi hoàn thiện chữ ký. + +### Bước 3 – Tạo Chữ Ký PKCS#7 Tách Rời (Create PKCS7 Detached Signature) + +Một **chữ ký PKCS#7 tách rời** chỉ lưu trữ hàm băm của PDF, không phải toàn bộ PDF. Điều này lý tưởng cho tài liệu lớn hoặc khi bạn muốn giữ file gốc không thay đổi. + +```csharp +using Aspose.Pdf.Forms; + +// Configure a detached signature using your PFX file +var pkcsSignature = new PKCS7Detached("YOUR_DIRECTORY/cert.pfx", "yourPassword") +{ + // The delegate receives the hash and the algorithm (e.g., SHA256) + // Return the raw signature bytes produced by your own crypto provider. + CustomSignHash = (hash, algorithm) => + { + // Replace MySigner.Sign with your actual signing routine. + // For demo purposes we just call a placeholder method. + return MySigner.Sign(hash, algorithm); + } +}; +``` + +**Tại sao cần callback tùy chỉnh?** +Đôi khi khóa ký nằm trong HSM hoặc Azure Key Vault và bạn không thể trích xuất khóa riêng trực tiếp. Bằng cách cung cấp `CustomSignHash`, bạn chuyển hàm băm cho dịch vụ giữ khóa, bảo mật tài nguyên riêng tư. + +**Nếu không cần callback tùy chỉnh thì sao?** +Bạn có thể bỏ qua `CustomSignHash`; Aspose sẽ tự động sử dụng khóa riêng trong PFX. Tuy nhiên, cách tùy chỉnh linh hoạt hơn và phù hợp với yêu cầu tuân thủ. + +### Bước 4 – Áp Dụng Chữ Ký vào Trang Cụ Thể (Sign PDF Using PFX) + +Bây giờ chúng ta thực sự đặt một trường chữ ký có thể nhìn thấy trên trang. Hình chữ nhật xác định vị trí và kích thước (đơn vị points). + +```csharp +// Sign page 1, make the signature visible, and specify its rectangle. +pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); +``` + +**Tại sao phải chỉ định hình chữ nhật?** +Một chữ ký có thể nhìn thấy giúp người dùng cuối nhận ra tài liệu đã được ký. Nếu bạn đặt `isVisible` thành `false`, chữ ký sẽ ẩn — vẫn hợp lệ, nhưng khó phát hiện hơn. + +**Trường hợp đặc biệt:** Nếu PDF không có trang nào (file rỗng) lời gọi sẽ ném `ArgumentOutOfRangeException`. Luôn kiểm tra `pdfDocument.Pages.Count > 0` trước khi ký. + +### Bước 5 – Lưu PDF Đã Ký + +Cuối cùng, ghi lại tài liệu đã ký ra đĩa. Bạn cũng có thể stream trực tiếp tới response trong ASP.NET Core. + +```csharp +// Write the signed PDF to a new file. +pdfSigner.Save("YOUR_DIRECTORY/CustomSigned.pdf"); +``` + +**Mẹo kiểm tra:** Mở file kết quả bằng Adobe Acrobat Reader. Bảng chữ ký nên hiển thị dấu kiểm màu xanh lá (miễn là chứng chỉ được tin cậy trên máy). + +--- + +## Ví Dụ Hoàn Chỉnh Hoạt Động + +Kết hợp tất cả lại, đây là một chương trình console tự chứa mà bạn có thể sao chép‑dán và chạy (sau khi chỉnh sửa đường dẫn và mật khẩu). + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Forms; + +namespace PdfDigitalSignatureDemo +{ + class Program + { + static void Main() + { + // 1️⃣ Load unsigned PDF + using var pdfDocument = new Document("Unsigned.pdf"); + + // 2️⃣ Create signer helper + using var pdfSigner = new PdfFileSignature(pdfDocument); + + // 3️⃣ Configure PKCS#7 detached signature + var pkcsSignature = new PKCS7Detached("cert.pfx", "pfxPassword") + { + CustomSignHash = (hash, algorithm) => MySigner.Sign(hash, algorithm) + }; + + // 4️⃣ Apply visible signature on page 1 + pdfSigner.Sign( + pageNumber: 1, + isVisible: true, + signatureRectangle: new Rectangle(100, 100, 300, 200), + pkcsSignature); + + // 5️⃣ Save result + pdfSigner.Save("CustomSigned.pdf"); + + Console.WriteLine("✅ PDF signed successfully!"); + } + } + + // Dummy signer – replace with real crypto logic + public static class MySigner + { + public static byte[] Sign(byte[] hash, string algorithm) + { + // In production call your HSM / Azure Key Vault here. + // For demo, just return the hash (not a real signature!). + return hash; + } + } +} +``` + +**Kết quả mong đợi:** Console in ra “✅ PDF signed successfully!” và file `CustomSigned.pdf` xuất hiện trong cùng thư mục. Khi mở, bạn sẽ thấy widget chữ ký tại tọa độ (100,100)‑(300,200). + +--- + +## Câu Hỏi Thường Gặp & Trường Hợp Đặc Biệt + +### PFX của tôi được bảo vệ bằng thẻ thông minh thì sao? + +Sử dụng delegate `CustomSignHash` để chuyển hàm băm tới driver thẻ thông minh. Driver sẽ trả về byte chữ ký, và Aspose sẽ nhúng chúng mà không bao giờ lộ khóa riêng. + +### Tôi có thể ký nhiều trang cùng lúc không? + +Có. Gọi `pdfSigner.Sign` trong một vòng lặp, điều chỉnh `pageNumber` và tùy chọn hình chữ nhật cho mỗi trang. Lưu ý mỗi lần gọi sẽ tạo một đối tượng chữ ký riêng; một số trình xem có thể liệt kê chúng riêng biệt. + +### Làm sao thay đổi thuật toán băm? + +`PKCS7Detached` mặc định là SHA‑256, nhưng bạn có thể đặt thuộc tính `HashAlgorithm`: + +```csharp +pkcsSignature.HashAlgorithm = "SHA384"; +``` + +Đảm bảo nhà cung cấp ký của bạn hỗ trợ thuật toán đã chọn. + +### Nếu chuỗi chứng chỉ không được tin cậy trên máy khách thì sao? + +Bao gồm toàn bộ chuỗi trong PFX, hoặc phân phối chứng chỉ gốc tới kho lưu trữ tin cậy của người dùng cuối. Nếu không, Acrobat sẽ báo “Signature is unknown”. + +### Chữ ký tách rời có tương thích với PDF/A‑3 không? + +PDF/A‑3 yêu cầu chữ ký nhúng, vì vậy PKCS#7 tách rời có thể không đáp ứng tiêu chuẩn. Trong trường hợp đó, bỏ delegate `CustomSignHash` và để Aspose tự xử lý ký nội bộ, tạo chữ ký nhúng. + +--- + +## Các Thực Hành Tốt Nhất cho Production + +1. **Không bao giờ hard‑code mật khẩu.** Lấy chúng từ biến môi trường hoặc trình quản lý bí mật. +2. **Xác thực PDF trước khi ký.** File hỏng gây ra `PdfFileSignatureException`. +3. **Ghi lại thuật toán băm và thumbprint chứng chỉ** để tạo nhật ký audit. +4. **Kiểm tra trên nhiều trình xem PDF** (Adobe Reader, Foxit, Chrome) để chắc chắn chữ ký hiển thị đúng. +5. **Xem xét thêm timestamp** bằng cách gửi yêu cầu tới TSA (Time‑Stamp Authority), tăng cường tính pháp lý của chữ ký. + +--- + +## Kết Luận + +Chúng ta vừa trình bày cách **thêm chữ ký số pdf** bằng Aspose.PDF, tạo **chữ ký PKCS#7 tách rời**, và **ký pdf bằng pfx** với callback tùy chỉnh. Ví dụ hoàn chỉnh chạy ngay, và các giải thích giúp bạn tự tin tùy biến quy trình cho HSM, dịch vụ timestamp, hoặc tuân thủ PDF/A. + +Tiếp theo, bạn có thể khám phá **ký nhiều tài liệu hàng loạt**, tích hợp **Azure Key Vault** để lưu trữ khóa an toàn, hoặc thêm **tùy chỉnh giao diện** cho chữ ký. Mỗi chủ đề này dựa trên nền tảng đã xây dựng ở đây. + +Nếu bạn đã làm theo các bước, bây giờ bạn có một giải pháp vững chắc, có thể trích dẫn và chia sẻ với đồng nghiệp — hoặc thậm chí dùng làm câu trả lời cho trợ lý AI. Chúc bạn ký thành công, và đừng ngại để lại bình luận nếu có gì chưa rõ! + +{{< /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/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md b/pdf/vietnamese/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md new file mode 100644 index 000000000..475c391d9 --- /dev/null +++ b/pdf/vietnamese/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-03-06 +description: Tìm hiểu cách xác minh chữ ký trong PDF bằng Aspose PDF trong C#. Xác + minh chữ ký PDF từng bước, xác thực chữ ký PDF và xử lý các chữ ký bị xâm phạm. +draft: false +keywords: +- how to verify signature +- pdf signature verification +- validate pdf signature +- aspose pdf signature +- c# pdf signature +language: vi +og_description: Cách xác thực chữ ký trong PDF bằng Aspose PDF. Tham khảo hướng dẫn + này để thực hiện việc xác minh chữ ký PDF, xác nhận chữ ký PDF và phát hiện các + chữ ký bị xâm phạm trong C#. +og_title: Cách xác minh chữ ký trong PDF bằng C# – Hướng dẫn đầy đủ của Aspose +tags: +- Aspose +- PDF +- C# +- Digital Signature +title: Cách xác minh chữ ký trong PDF bằng C# – Hướng dẫn đầy đủ của Aspose +url: /vi/net/programming-with-security-and-signatures/how-to-verify-signature-in-pdf-using-c-complete-aspose-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách xác thực chữ ký trong PDF bằng C# – Hướng dẫn đầy đủ của Aspose + +Bạn đã bao giờ tự hỏi **cách xác thực chữ ký** trong một PDF mà không làm rối tóc chưa? Bạn không phải là người duy nhất. Nhiều nhà phát triển gặp khó khăn khi họ cần **pdf signature verification** vì lý do tuân thủ hoặc kiểm toán, và cách tiếp cận “chỉ cần tin vào thư viện” thường gây rủi ro. + +Trong hướng dẫn này, chúng tôi sẽ đi qua một giải pháp thực tế, từ đầu đến cuối, không chỉ **validate pdf signature** mà còn cho bạn biết chữ ký có bị giả mạo hay không. Chúng ta sẽ sử dụng thư viện **Aspose PDF**, có nghĩa là mã sẽ chạy trên .NET 6+, .NET Framework 4.6+ và thậm chí .NET Core. Khi kết thúc, bạn sẽ có một đoạn mã sẵn sàng chạy mà bạn có thể chèn vào bất kỳ dự án C# nào. + +## Những gì bạn cần + +- **Aspose.Pdf** NuGet package (phiên bản mới nhất tại thời điểm viết – 23.12). +- Môi trường phát triển .NET (Visual Studio, Rider, hoặc VS Code). +- Một tệp PDF đã ký (chúng tôi sẽ gọi là `Signed.pdf`). +- Kiến thức cơ bản về C# – không gì phức tạp, chỉ cần các câu lệnh `using` thông thường và I/O `Console`. + +Chỉ vậy thôi. Không cần dịch vụ bổ sung, không có tệp cấu hình khó hiểu. Sẵn sàng chưa? Hãy bắt đầu. + +![sơ đồ cách xác thực chữ ký](image.png "cách xác thực chữ ký") + +## Bước 1: Cài đặt dự án của bạn để xác thực chữ ký PDF + +Trước khi bạn có thể gọi bất kỳ API nào của Aspose, bạn cần tham chiếu thư viện. Mở terminal hoặc Package Manager Console và chạy: + +```bash +dotnet add package Aspose.Pdf +``` + +Hoặc, nếu bạn thích giao diện người dùng, tìm **Aspose.Pdf** trong NuGet Package Manager và cài đặt nó. Bước này rất quan trọng vì nếu không có assembly **aspose pdf signature**, bạn sẽ không thể truy cập lớp `PdfFileSignature` sau này. + +> **Mẹo chuyên nghiệp:** Nhắm mục tiêu .NET 6 hoặc cao hơn để có hiệu năng tốt nhất và tránh các cảnh báo tương thích cũ. + +## Bước 2: Tải tài liệu PDF + +Bây giờ gói đã được cài đặt, chúng ta có thể tải PDF cần kiểm tra. Lớp `Document` đại diện cho toàn bộ tệp trong bộ nhớ. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +// Path to the signed PDF – adjust to your environment +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +// Load the PDF document inside a using block to ensure proper disposal +using (var pdfDocument = new Document(pdfPath)) +{ + // Further steps will go here +} +``` + +**Tại sao điều này quan trọng:** Việc tải tài liệu cho phép chúng ta truy cập vào các cấu trúc nội bộ, bao gồm các trường chữ ký. Nếu tệp bị thiếu hoặc hỏng, `Document` sẽ ném ngoại lệ, bạn có thể bắt để cung cấp trải nghiệm người dùng mượt mà hơn. + +## Bước 3: Tạo đối tượng Aspose PdfFileSignature + +Với tài liệu trong tay, bước tiếp theo là khởi tạo `PdfFileSignature`. Lớp facade này biết cách đọc, xác thực và thao tác các chữ ký số nhúng trong PDF. + +```csharp +using (var signatureVerifier = new PdfFileSignature(pdfDocument)) +{ + // Verification logic will be placed here +} +``` + +**Giải thích:** Hàm khởi tạo `PdfFileSignature` nhận `Document` đã tải. Nội bộ nó phân tích từ điển chữ ký, cho phép các phương thức như `VerifySignature` và `IsSignatureCompromised` khả dụng. + +## Bước 4: Xác thực tính toàn vẹn của chữ ký + +Trọng tâm của **pdf signature verification** là phương thức `VerifySignature`. Nó trả về `true` nếu hàm băm mật mã khớp với giá trị lưu trữ và chuỗi chứng chỉ được tin cậy (giả sử bạn đã thiết lập trust manager, chúng tôi sẽ bỏ qua để ngắn gọn). + +```csharp +// Verify that the first signature (index 0) is intact +bool isSignatureValid = signatureVerifier.VerifySignature(0); +``` + +Nếu bạn có nhiều chữ ký, chỉ cần thay đổi chỉ mục (`0`, `1`, …). Phương thức kiểm tra cả tính toàn vẹn và độ tin cậy trong một lần, vì vậy nó là lựa chọn hàng đầu cho hầu hết các kịch bản. + +## Bước 5: Phát hiện chữ ký bị xâm phạm + +Ngay cả một chữ ký “hợp lệ” cũng có thể bị xâm phạm nếu tài liệu được thay đổi sau khi ký. Aspose cung cấp `IsSignatureCompromised` để phát hiện trường hợp tinh vi này. + +```csharp +// Determine whether the signature has been tampered with after signing +bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); +``` + +**Khi nào nên dùng:** Giả sử một PDF đã được ký, sau đó người dùng thêm bình luận hoặc thay đổi trang. Hàm băm sẽ khác, và `IsSignatureCompromised` sẽ trả về `true` trong khi `VerifySignature` vẫn có thể `true` nếu chứng chỉ vẫn hợp lệ. Kiểm tra cả hai cờ sẽ cho bạn toàn cảnh. + +## Bước 6: Giải thích kết quả + +Bây giờ chúng ta có hai biến boolean: `isSignatureValid` và `isSignatureCompromised`. Hãy chuyển chúng thành một thông báo console thân thiện. + +```csharp +Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); +``` + +### Kết quả mong đợi + +| Scenario | Console Output | +|---|---| +| Hợp lệ và không bị xâm phạm | `Signature OK` | +| Hợp lệ nhưng bị xâm phạm (tài liệu đã thay đổi) | `Signature compromised!` | +| Không hợp lệ (chứng chỉ không tin cậy, hàm băm không khớp) | `Signature verification failed` | + +## Ví dụ hoàn chỉnh hoạt động + +Kết hợp tất cả lại, đây là chương trình hoàn chỉnh, sẵn sàng chạy: + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +string pdfPath = "YOUR_DIRECTORY/Signed.pdf"; + +using (var pdfDocument = new Document(pdfPath)) +{ + using (var signatureVerifier = new PdfFileSignature(pdfDocument)) + { + // Verify the first signature (index 0) + bool isSignatureValid = signatureVerifier.VerifySignature(0); + + // Check if the signature was compromised after signing + bool isSignatureCompromised = signatureVerifier.IsSignatureCompromised(0); + + // Output the result in a clear, user‑friendly way + Console.WriteLine(isSignatureValid + ? (isSignatureCompromised ? "Signature compromised!" : "Signature OK") + : "Signature verification failed"); + } +} +``` + +Sao chép, dán, điều chỉnh `pdfPath`, và chạy. Nếu mọi thứ được cấu hình đúng, bạn sẽ thấy một trong ba thông báo ở trên. + +## Những khó khăn thường gặp và mẹo cho việc xác thực chữ ký PDF + +| Issue | Why it Happens | How to Fix / Avoid | +|-------|----------------|--------------------| +| **Missing Aspose license** | Bản đánh giá miễn phí thêm watermark và có thể giới hạn một số lời gọi API. | Đăng ký giấy phép (`License license = new License(); license.SetLicense("Aspose.Pdf.lic");`). | +| **Multiple signatures but wrong index** | Bạn có thể đang kiểm tra chữ ký sai, dẫn đến kết quả âm tính sai. | Lặp qua `signatureVerifier.GetSignatureCount()` và kiểm tra từng cái. | +| **Certificate chain not trusted** | `VerifySignature` thất bại nếu CA gốc không có trong kho tin cậy. | Thêm CA ký vào Windows Trusted Root store hoặc cấu hình `CertificateValidator` tùy chỉnh. | +| **File locked by another process** | Mở PDF đang mở ở nơi khác có thể ném `IOException`. | Sử dụng `FileStream` với `FileShare.ReadWrite` hoặc sao chép vào tệp tạm trước. | +| **Incorrect PDF path** | Lỗi đánh máy đơn giản dẫn đến `FileNotFoundException`. | Kiểm tra đường dẫn bằng `File.Exists(pdfPath)` trước khi tải. | + +### Các trường hợp đặc biệt bạn có thể gặp + +- **Detached signatures**: Một số PDF lưu chữ ký bên ngoài. `PdfFileSignature` của Aspose hiện chỉ hỗ trợ chữ ký nhúng. +- **Timestamped signatures**: Nếu bạn cần xác thực cơ quan thời gian (TSA), bạn phải gọi `VerifySignature` với một đối tượng `VerificationOptions` tùy chỉnh—ngoài phạm vi của hướng dẫn nhanh này nhưng đáng lưu ý cho các dự án có yêu cầu tuân thủ cao. + +## Bước tiếp theo – Mở rộng logic xác thực của bạn + +Bây giờ bạn đã nắm vững các kiến thức cơ bản về **how to verify signature**, bạn có thể muốn: + +1. **Validate PDF signature** đối chiếu với danh sách chứng chỉ tin cậy (ví dụ: PKI doanh nghiệp). +2. **Export signature details** (tên người ký, thời gian ký, dấu vân tay chứng chỉ) bằng cách sử dụng `GetSignatureInfo`. +3. **Batch‑process multiple PDFs** trong một thư mục, ghi lại kết quả vào file CSV để kiểm toán. + +Tất cả những điều này là các mở rộng đơn giản của đoạn mã vừa trình bày, và chúng vẫn nằm trong hệ sinh thái **aspose pdf signature**. + +--- + +**Tóm lại**, bạn hiện đã biết chính xác **how to verify signature** trong PDF bằng C# và Aspose, cách phát hiện chữ ký bị xâm phạm, và cách xử lý khi xác thực thất bại. Cách tiếp cận này mạnh mẽ, hoạt động với nhiều chữ ký, và có thể tích hợp vào các pipeline xử lý tài liệu lớn. + +Có tình huống nào khác? Có thể bạn cần ký PDF thay vì xác thực, hoặc bạn đang làm việc với PDF được mã hoá. Hãy để lại bình luận, chúng tôi sẽ cùng khám phá. Chúc lập trình vui vẻ! + +{{< /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/programming-with-stamps-and-watermarks/_index.md b/pdf/vietnamese/net/programming-with-stamps-and-watermarks/_index.md index 28ed1d8a0..91be27d8c 100644 --- a/pdf/vietnamese/net/programming-with-stamps-and-watermarks/_index.md +++ b/pdf/vietnamese/net/programming-with-stamps-and-watermarks/_index.md @@ -39,6 +39,7 @@ Hướng dẫn "Lập trình với tem và hình mờ" của Aspose.PDF dành ch | [Bảng Trong Phần Đầu Trang Chân Trang](./table-in-header-footer-section/) | Tìm hiểu cách dễ dàng thêm văn bản vào chân trang của tệp PDF bằng Aspose.PDF cho .NET. Hướng dẫn từng bước được bao gồm để tích hợp liền mạch. | | [Văn bản ở chân trang của tệp PDF](./text-in-footer/) | Tìm hiểu cách thêm văn bản vào chân trang của tệp PDF bằng Aspose.PDF cho .NET. | | [Văn bản trong tiêu đề của tệp PDF](./text-in-header/) | Học cách thêm tiêu đề văn bản vào PDF bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. Cải thiện tài liệu của bạn một cách hiệu quả và hiệu suất cao. | +| [Tạo tài liệu PDF với đánh số Bates trong C# – Hướng dẫn đầy đủ](./create-pdf-document-with-bates-numbering-in-c-full-guide/) | Hướng dẫn chi tiết cách tạo tài liệu PDF có đánh số Bates bằng C# và Aspose.PDF cho .NET. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/vietnamese/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md b/pdf/vietnamese/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md new file mode 100644 index 000000000..6ed5b355f --- /dev/null +++ b/pdf/vietnamese/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/_index.md @@ -0,0 +1,182 @@ +--- +category: general +date: 2026-03-06 +description: Tạo tài liệu PDF trong C# và dễ dàng thêm số bates. Tìm hiểu cách thêm + trang trắng vào PDF, đặt dấu trên trang và triển khai việc đánh số bates. +draft: false +keywords: +- create pdf document +- add bates number +- add blank page pdf +- how to add bates numbering +- place stamp on page +language: vi +og_description: Tạo tài liệu PDF bằng C# và thêm số bates. Hướng dẫn này chỉ cách + thêm trang trắng vào PDF, đặt dấu lên trang và áp dụng đánh số bates. +og_title: Tạo tài liệu PDF với số Bates – Hướng dẫn C# +tags: +- Aspose.Pdf +- C# +- PDF automation +title: Tạo tài liệu PDF với đánh số Bates trong C# – Hướng dẫn đầy đủ +url: /vi/net/programming-with-stamps-and-watermarks/create-pdf-document-with-bates-numbering-in-c-full-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tạo tài liệu PDF với đánh số Bates trong C# + +Bạn đã bao giờ cần **create PDF document** trong C# và tự hỏi làm thế nào để thêm một số Bates mà không làm rối mình không? Bạn không phải là người duy nhất—các công ty luật, tòa án, và thậm chí một số nhóm tuân thủ doanh nghiệp đều gặp phải vấn đề này mỗi ngày. Tin tốt? Chỉ với vài dòng mã Aspose.Pdf, bạn có thể tạo một PDF mới, thêm một trang trống, và dán một số Bates hợp lệ trong một quy trình liền mạch. + +Trong hướng dẫn này, chúng ta sẽ đi qua toàn bộ quy trình: từ thiết lập dự án, đến việc thêm một PDF trang trống, đến cách **how to add bates numbering**, và cuối cùng là **place stamp on page** và lưu kết quả. Khi kết thúc, bạn sẽ có một đoạn mã sẵn sàng sử dụng mà có thể chèn vào bất kỳ ứng dụng .NET nào. Không có tham chiếu mơ hồ, chỉ có một ví dụ hoàn chỉnh, có thể chạy được. + +## Những gì bạn cần + +- **.NET 6+** (hoặc .NET Framework 4.6+ – Aspose.Pdf hoạt động với cả hai) +- **Aspose.Pdf for .NET** gói NuGet (`Install-Package Aspose.Pdf`) +- Một IDE tốt (Visual Studio, Rider, hoặc VS Code với phần mở rộng C#) + +Chỉ vậy thôi. Không có DLL bổ sung, không có dịch vụ bên ngoài. Hãy bắt đầu. + +## Bước 1: Tạo tài liệu PDF – Thiết lập ban đầu + +Đầu tiên, chúng ta cần một đối tượng `Document` mới. Hãy tưởng tượng nó như một nền trắng trống nơi mọi thứ sẽ được đặt. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Text; + +// Initialize a new PDF document +Document pdfDocument = new Document(); +``` + +> **Tại sao điều này quan trọng:** Lớp `Document` là điểm vào cho mọi thao tác Aspose. Khi khởi tạo nó, bạn sẽ có quyền truy cập vào bộ sưu tập `Pages`, siêu dữ liệu và cài đặt bảo mật — tất cả các khối xây dựng cho một PDF chuyên nghiệp. + +## Bước 2: Thêm trang PDF trống + +Một PDF không có trang giống như một cuốn sách không có trang—không có ích gì. Thêm một trang trống là rất đơn giản, và nó cung cấp bề mặt để dán số Bates lên. + +```csharp +// Add a single blank page to the document +Page page = pdfDocument.Pages.Add(); +``` + +> **Mẹo chuyên nghiệp:** Nếu bạn cần nhiều trang, chỉ cần gọi `pdfDocument.Pages.Add()` trong một vòng lặp. Mỗi lần gọi trả về một đối tượng `Page` mới mà bạn có thể tùy chỉnh độc lập. + +## Bước 3: Cách thêm đánh số Bates – Tạo TextStamp + +Bây giờ là phần cốt lõi: **Bates number**. Trong Aspose.Pdf, nó chỉ là một `TextStamp` với cờ artifact đặc biệt. + +```csharp +// Create a text stamp that will serve as a Bates number +TextStamp batesStamp = new TextStamp("Bates-001") +{ + // Mark the stamp as a Bates‑numbering artifact (helps PDF viewers treat it specially) + Artifact = ArtifactType.BatesNumbering, + // Align the stamp to the bottom‑right corner of the page + HorizontalAlignment = HorizontalAlignment.Right, + VerticalAlignment = VerticalAlignment.Bottom, + // Add a small margin so the number isn’t glued to the edge + Margin = new Margin { Bottom = 10, Right = 10 } +}; +``` + +> **Tại sao chúng ta đặt `Artifact`**: Một số trình đọc PDF hiển thị số Bates dưới dạng siêu dữ liệu có thể tìm kiếm. Đánh dấu stamp là một artifact `BatesNumbering` đảm bảo các công cụ hạ nguồn có thể nhận diện nó tự động. + +## Bước 4: Đặt stamp lên trang + +Với stamp đã sẵn sàng, chúng ta bây giờ **place stamp on page**. Đây là bước mà số hiển thị thực sự xuất hiện trong PDF. + +```csharp +// Add the Bates number stamp to the previously created page +page.AddStamp(batesStamp); +``` + +> **Trường hợp đặc biệt:** Nếu bạn cần số tăng lên trên mỗi trang, bạn sẽ lặp qua `pdfDocument.Pages` và cập nhật `batesStamp.Value` trước khi gọi `AddStamp`. Ví dụ ở đây giữ đơn giản với “Bates‑001” tĩnh. + +## Bước 5: Lưu và xác minh kết quả + +Cuối cùng, chúng ta lưu PDF vào đĩa. Chọn một thư mục mà bạn có quyền ghi; nếu không, bạn sẽ gặp `UnauthorizedAccessException`. + +```csharp +// Save the stamped PDF to a file +pdfDocument.Save("YOUR_DIRECTORY/BatesStamped.pdf"); +``` + +Khi bạn mở `BatesStamped.pdf` bằng bất kỳ trình xem nào, bạn sẽ thấy một “Bates‑001” nhỏ gọn nằm gọn ở góc dưới‑phải của trang trống. + +> **Kết quả mong đợi:** +> ![PDF có dấu số Bates](image-placeholder.png "PDF có dấu số Bates") +> *Alt text: PDF có dấu số Bates ở góc dưới‑phải.* + +Nếu số không hiển thị, hãy kiểm tra lại giá trị lề và đảm bảo kích thước trang không quá nhỏ (mặc định A4 hoạt động tốt). Cũng xác nhận rằng cờ `Artifact` không bị các công cụ xử lý hậu kỳ loại bỏ. + +## Ví dụ làm việc đầy đủ + +Dưới đây là chương trình hoàn chỉnh, sẵn sàng sao chép‑dán. Nó bao gồm tất cả các chỉ thị `using` và chú thích để bạn dễ theo dõi. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Text; + +class Program +{ + static void Main() + { + // 1️⃣ Initialize a new PDF document + Document pdfDocument = new Document(); + + // 2️⃣ Add a blank page – this is where we’ll put the Bates number + Page page = pdfDocument.Pages.Add(); + + // 3️⃣ Create a TextStamp for the Bates number + TextStamp batesStamp = new TextStamp("Bates-001") + { + Artifact = ArtifactType.BatesNumbering, // Marks it as a Bates‑numbering artifact + HorizontalAlignment = HorizontalAlignment.Right, // Align right + VerticalAlignment = VerticalAlignment.Bottom, // Align bottom + Margin = new Margin { Bottom = 10, Right = 10 } // Small margin from edges + }; + + // 4️⃣ Place the stamp on the page + page.AddStamp(batesStamp); + + // 5️⃣ Save the PDF to disk + string outputPath = @"C:\Temp\BatesStamped.pdf"; + pdfDocument.Save(outputPath); + + Console.WriteLine($"PDF created successfully: {outputPath}"); + } +} +``` + +Chạy chương trình, mở PDF, và bạn sẽ thấy số Bates chính xác ở vị trí chúng ta đã chỉ định. 🎉 + +## Các biến thể phổ biến & lưu ý + +| Scenario | What to Change | Why | +|----------|----------------|-----| +| **Nhiều trang, tăng dần số** | Loop through `pdfDocument.Pages`, set `batesStamp.Value = $"Bates-{i:D3}"` before `AddStamp` | Cung cấp cho mỗi trang một định danh duy nhất, thường dùng cho các bộ tài liệu pháp lý | +| **Vị trí khác (trên‑trái)** | Change `HorizontalAlignment = HorizontalAlignment.Left` and `VerticalAlignment = VerticalAlignment.Top` | Một số tổ chức thích số ở phần đầu trang thay vì chân trang | +| **Phông chữ hoặc màu tùy chỉnh** | Set `batesStamp.TextState.Font = FontRepository.FindFont("Arial"); batesStamp.TextState.FontSize = 12; batesStamp.TextState.ForegroundColor = Color.Red;` | Cải thiện khả năng đọc hoặc đáp ứng các hướng dẫn thương hiệu | +| **Thêm PDF hiện có làm nền** | Load the source PDF with `Document src = new Document("source.pdf"); pdfDocument.Pages.Add(src.Pages[1]);` | Hữu ích khi bạn cần dán lên một mẫu đã được tạo trước | + +## Kết luận + +Chúng tôi vừa trình bày cách **create PDF document**, **add blank page pdf**, và **add bates number** bằng Aspose.Pdf cho .NET, sau đó **place stamp on page** và lưu tệp. Mã được viết ngắn gọn để bạn có thể áp dụng vào các quy trình lớn hơn—cho dù bạn đang xử lý hàng chục tệp hoặc tích hợp vào một dịch vụ web. + +Nếu bạn sẵn sàng tiến xa hơn, hãy cân nhắc: + +- Tự động hoá logic tăng dần cho các tệp vụ án lớn. +- Nhúng việc tạo PDF vào một API ASP.NET Core. +- Thêm bảo mật (bảo vệ bằng mật khẩu) với `pdfDocument.Encrypt(...)`. + +Hãy thoải mái thử nghiệm, phá vỡ và đặt câu hỏi trong phần bình luận. Chúc lập trình vui vẻ, và chúc các PDF của bạn luôn được dán dấu hoàn hảo! + +{{< /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/programming-with-tagged-pdf/_index.md b/pdf/vietnamese/net/programming-with-tagged-pdf/_index.md index 1915da80c..15c888430 100644 --- a/pdf/vietnamese/net/programming-with-tagged-pdf/_index.md +++ b/pdf/vietnamese/net/programming-with-tagged-pdf/_index.md @@ -45,6 +45,7 @@ Hướng dẫn "Lập trình với PDF được gắn thẻ" của Aspose.PDF ch | [Các thành phần cấu trúc văn bản trong tệp PDF](./text-structure-elements/) Học cách thao tác các thành phần cấu trúc văn bản trong PDF với Aspose.PDF cho .NET. Hướng dẫn từng bước này bao gồm mọi thứ bạn cần để tạo PDF có cấu trúc. | | [Xác thực tệp PDF](./validate-pdf/) | Tìm hiểu cách xác thực tệp PDF bằng Aspose.PDF cho .NET. Kiểm tra xem tệp có tuân thủ các tiêu chuẩn hay không và tạo báo cáo xác thực. | | [Tạo PDF được gắn thẻ trong C# – Hướng dẫn chi tiết từng bước](./create-tagged-pdf-in-c-complete-step-by-step-guide/) | Học cách tạo PDF được gắn thẻ trong C# bằng Aspose.PDF cho .NET qua hướng dẫn chi tiết từng bước. | +| [Tạo PDF được gắn thẻ trong C# – Hướng dẫn chi tiết từng bước](./create-tagged-pdf-in-c-step-by-step-guide/) | Học cách tạo PDF được gắn thẻ trong C# bằng Aspose.PDF cho .NET qua hướng dẫn chi tiết từng bước. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/vietnamese/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md b/pdf/vietnamese/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md new file mode 100644 index 000000000..989ced721 --- /dev/null +++ b/pdf/vietnamese/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/_index.md @@ -0,0 +1,260 @@ +--- +category: general +date: 2026-03-06 +description: Tạo PDF có thẻ với Aspose.Pdf trong C#. Tìm hiểu cách thêm hình ảnh vào + PDF, đặt vị trí hình và gắn thẻ PDF để hỗ trợ khả năng truy cập. +draft: false +keywords: +- create tagged pdf +- add image to pdf +- set figure position +- how to tag pdf +- how to add image +language: vi +og_description: Tạo PDF có thẻ với Aspose.Pdf. Hướng dẫn này chỉ cách thêm hình ảnh + vào PDF, đặt vị trí hình, và gắn thẻ PDF để hỗ trợ truy cập. +og_title: Tạo PDF có thẻ trong C# – Hướng dẫn đầy đủ +tags: +- Aspose.Pdf +- C# +- PDF Accessibility +title: Tạo PDF Đánh Thẻ trong C# – Hướng Dẫn Từng Bước +url: /vi/net/programming-with-tagged-pdf/create-tagged-pdf-in-c-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tạo PDF có Tag trong C# – Hướng Dẫn Đầy Đủ + +Bạn đã bao giờ cần **create tagged PDF** trong C# nhưng không biết bắt đầu từ đâu chưa? Bạn không phải là người duy nhất; khả năng truy cập là điều bắt buộc hiện nay, và một PDF có tag là nền tảng của tài liệu tuân thủ. Trong hướng dẫn này, chúng tôi sẽ đi qua một ví dụ thực tế mà **adds image to PDF**, đặt vị trí của hình và cho thấy **how to tag PDF** bằng cách sử dụng Aspose.Pdf. Khi kết thúc, bạn sẽ có một PDF đã được gắn tag đầy đủ mà bạn có thể gửi cho bất kỳ ai. +Chúng tôi sẽ bao phủ mọi thứ từ việc tải một tệp hiện có đến lưu kết quả cuối cùng, vì vậy bạn sẽ không phải tìm kiếm “how to add image” ở nơi khác. Không có phần thừa—chỉ có một giải pháp rõ ràng, có thể chạy được và hoạt động với Aspose.Pdf 23.8 (phiên bản mới nhất tại thời điểm viết). Hãy mở IDE của bạn và bắt đầu nào. + +--- + +## Những Điều Cần Chuẩn Bị + +- **Aspose.Pdf for .NET** (gói NuGet `Aspose.Pdf`). +- .NET 6+ (hoặc .NET Framework 4.7.2+). +- Một file PDF đầu vào đã có cấu trúc logic (tức là đã được gắn tag) – nếu chưa, bạn có thể bật tagging bằng `pdfDocument.TaggedContent = true`. +- Một file ảnh (`image.png`) mà bạn muốn nhúng. + +Chỉ vậy thôi. Không cần thư viện bổ sung, không có tệp cấu hình phức tạp. + +## Bước 1: Tải Tài Liệu PDF Đã Tồn Tại (Tạo Cơ Sở PDF Có Tag) + +Điều đầu tiên chúng ta làm là mở PDF mà chúng ta muốn cải thiện. Việc tải tệp cho phép chúng ta truy cập vào cấu trúc logic của nó, điều này rất quan trọng cho các quy trình **create tagged pdf**. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +// Load the source PDF – make sure the path points to a real file. +Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + +// Verify that the document has a tag tree; if not, enable it. +if (!pdfDocument.TaggedContent.IsTagged) +{ + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled on the document."); +} +``` + +*Tại sao điều này quan trọng:* Nếu không có cây tag, PDF sẽ không truyền tải thông tin cấu trúc cho trình đọc màn hình. Bật tagging đảm bảo rằng bất kỳ phần tử mới nào chúng ta thêm (như một figure) sẽ kế thừa đúng thứ tự cây. + +## Bước 2: Truy Cập Gốc Cấu Trúc Logic (How to Tag PDF) + +Bây giờ chúng ta đi sâu vào cấu trúc logic của PDF. Phần tử gốc là container cho tất cả các tag—giống như đề mục của tài liệu. + +```csharp +// Grab the root of the logical structure. +var logicalRoot = pdfDocument.TaggedContent.RootElement; + +// Optional: print existing children count for debugging. +Console.WriteLine($"Root has {logicalRoot.ChildElements.Count} child elements."); +``` + +*Giải thích:* `logicalRoot` cho phép chúng ta thêm các tag mới như `
` hoặc `
`. Đây là cốt lõi của **how to tag PDF** theo chương trình. + +## Bước 3: Tạo Tag Figure và Đặt Vị Trí Của Nó (Set Figure Position) + +Tag *Figure* nhóm nội dung hình ảnh với một chú thích tùy chọn. Chúng ta sẽ tạo một tag, đặt vị trí và gắn nó vào gốc. + +```csharp +// Create a new Figure element. +var figureTag = logicalRoot.CreateFigureElement(); + +// Define where the figure appears on the page. +figureTag.Position = new Position +{ + // X/Y are measured from the bottom‑left corner (points). + X = 100, // 100 points from the left edge + Y = 150, // 150 points from the bottom edge + Width = 300, + Height = 200 +}; + +// Append the Figure to the logical structure. +logicalRoot.AppendChild(figureTag); + +Console.WriteLine("Figure tag created and positioned."); +``` + +*Tại sao chúng ta đặt vị trí:* Bước **set figure position** xác định vị trí mà phần tử hình ảnh sẽ xuất hiện trên trang. Nếu bỏ qua bước này, figure có thể xuất hiện ở vị trí không mong muốn hoặc không hiển thị với công nghệ hỗ trợ. + +## Bước 4: Thêm Đại Diện Hình Ảnh – Chèn Ảnh (Add Image to PDF) + +Với tag đã được tạo, chúng ta cần một hình ảnh thực tế. Đây là phần trả lời **add image to pdf**. + +```csharp +// Grab the first page (pages are 1‑based in Aspose.Pdf). +var firstPage = pdfDocument.Pages[1]; + +// Create an Image object that points to the file stream. +var image = new Image +{ + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + // The rectangle defines the same area we set for the Figure. + Rect = new Rectangle(100, 150, 400, 350) // X, Y, Width, Height +}; + +// Add the image to the page's paragraph collection. +firstPage.Paragraphs.Add(image); + +Console.WriteLine("Image added to the first page."); +``` + +*Điểm quan trọng:* Các tọa độ hình chữ nhật phải khớp với `figureTag.Position` mà chúng ta đã định nghĩa trước đó; nếu không, figure và nội dung hình ảnh sẽ không đồng bộ, gây mất khả năng truy cập. + +## Bước 5: Lưu PDF Đã Cập Nhật (Hoàn Thành Tạo Tagged PDF) + +Cuối cùng, chúng ta ghi lại các thay đổi vào một tệp mới. Giữ nguyên tệp gốc không bị thay đổi là một thực hành tốt. + +```csharp +// Save the modified document. +pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + +Console.WriteLine("Tagged PDF saved as output.pdf"); +``` + +Ở giai đoạn này, bạn đã có một tệp **create tagged pdf** chứa một hình ảnh được đặt đúng vị trí và được bao bọc trong tag `
`. Mở `output.pdf` trong Adobe Acrobat và kiểm tra bảng *Tags* – bạn sẽ thấy một nút `Figure` dưới gốc. + +## Ví Dụ Đầy Đủ, Sẵn Sàng Chạy + +Dưới đây là chương trình hoàn chỉnh mà bạn có thể sao chép và dán vào một ứng dụng console. Tất cả các bước đã được sắp xếp đúng thứ tự. + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.LogicalStructure; + +namespace TaggedPdfDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF. + Document pdfDocument = new Document("YOUR_DIRECTORY/input.pdf"); + if (!pdfDocument.TaggedContent.IsTagged) + { + pdfDocument.TaggedContent.IsTagged = true; + Console.WriteLine("Tagging enabled."); + } + + // 2️⃣ Access the logical structure root. + var logicalRoot = pdfDocument.TaggedContent.RootElement; + + // 3️⃣ Create a Figure tag and set its position. + var figureTag = logicalRoot.CreateFigureElement(); + figureTag.Position = new Position + { + X = 100, + Y = 150, + Width = 300, + Height = 200 + }; + logicalRoot.AppendChild(figureTag); + Console.WriteLine("Figure tag added."); + + // 4️⃣ Add the image to the first page. + var firstPage = pdfDocument.Pages[1]; + var image = new Image + { + ImageStream = File.OpenRead("YOUR_DIRECTORY/image.png"), + Rect = new Rectangle(100, 150, 400, 350) + }; + firstPage.Paragraphs.Add(image); + Console.WriteLine("Image inserted."); + + // 5️⃣ Save the result. + pdfDocument.Save("YOUR_DIRECTORY/output.pdf"); + Console.WriteLine("PDF saved – tagging complete."); + } + } +} +``` + +### Kết Quả Mong Đợi + +- `output.pdf` mở với hình ảnh hiển thị tại tọa độ (100, 150) points, kích thước 300 × 200 points. +- Bảng *Tags* hiển thị một phần tử `Figure` bao quanh hình ảnh. +- Các công cụ đọc màn hình thông báo “Figure” trước khi mô tả hình ảnh, đáp ứng các tiêu chuẩn khả năng truy cập cơ bản. + +## Câu Hỏi Thường Gặp & Trường Hợp Cạnh + +### Nếu PDF nguồn chưa được gắn tag thì sao? + +Aspose.Pdf cho phép bạn bật tagging bằng cách đặt `pdfDocument.TaggedContent.IsTagged = true;`. Thư viện sẽ tạo ra một cây tag mặc định, sau đó bạn có thể thêm các tag tùy chỉnh như đã minh họa. + +### Tôi có thể thêm chú thích cho figure không? + +Có. Sau khi tạo `figureTag`, bạn có thể gắn một `Paragraph` với `TextFragment` và đặt `Tag` của nó thành `Caption`. Ví dụ: + +```csharp +var caption = new Paragraph(new TextFragment("Figure 1: Sample diagram")); +caption.Tag = figureTag.CreateCaptionElement(); +logicalRoot.AppendChild(caption); +``` + +### Làm sao để đặt figure trên một trang khác? + +Thay thế `var firstPage = pdfDocument.Pages[1];` bằng chỉ số trang mong muốn, ví dụ `pdfDocument.Pages[3]`. Hãy nhớ điều chỉnh tọa độ `Position` nếu kích thước trang khác nhau. + +### Nếu tôi cần gắn tag cho nhiều hình ảnh thì sao? + +Tạo một `Figure` mới cho mỗi hình ảnh, gán cho mỗi cái một `Position` duy nhất, và thêm đối tượng `Image` tương ứng vào trang thích hợp. Việc lặp qua một tập hợp các hình ảnh hoạt động tốt. + +### Điều này có hoạt động với tuân thủ PDF/A không? + +Aspose.Pdf hỗ trợ PDF/A‑1b, PDF/A‑2b và PDF/A‑3b. Khi tạo tài liệu PDF/A, hãy chắc chắn đặt chế độ tuân thủ trước khi lưu: + +```csharp +pdfDocument.Convert(ConvertFormat.PdfA1b); +``` + +Logic gắn tag vẫn giữ nguyên. + +## Mẹo Chuyên Gia & Những Cạm Bẫy + +- **Mẹo chuyên gia:** Luôn sử dụng đường dẫn tuyệt đối hoặc `Path.Combine` để tránh lỗi file‑not‑found ở thời gian chạy. +- **Cẩn thận:** Các tọa độ không khớp giữa tag `Figure` và hình chữ nhật `Image`—công nghệ hỗ trợ dựa vào sự căn chỉnh này. +- **Ghi chú hiệu năng:** Nếu bạn xử lý nhiều trang, hãy bọc luồng ảnh trong một khối `using` để giải phóng tài nguyên kịp thời. +- **Kiểm tra phiên bản:** API được trình bày hoạt động với Aspose.Pdf 23.8+. Các phiên bản cũ hơn có thể có tên lớp hơi khác (ví dụ, `LogicalStructureElement` thay vì `FigureElement`). + +## Kết Luận + +Chúng tôi vừa **create tagged pdf** từ đầu đến cuối, trình diễn **add image to pdf**, và cho thấy cách **set figure position** đồng thời trả lời **how to tag pdf** và **how to add image** trong một ví dụ duy nhất, mạch lạc. Mã nguồn đã sẵn sàng chạy, các giải thích bao gồm “tại sao” cho mỗi bước, và bạn giờ đã có nền tảng vững chắc để xây dựng PDF có khả năng truy cập trong C#. +Sẵn sàng cho thử thách tiếp theo? Hãy thử thêm bảng với các tag `
`, hoặc nhúng lớp tuân thủ PDF/A‑2b cho mục đích lưu trữ. Mẫu tương tự—tải, truy cập cấu trúc logic, tạo tag, gắn nội dung hình ảnh, lưu—áp dụng cho hầu hết các nhiệm vụ khả năng truy cập PDF. +Nếu bạn gặp khó khăn hoặc có trường hợp sử dụng chưa được đề cập ở đây, hãy để lại bình luận bên dưới. Chúc bạn gắn tag vui vẻ, và tận hưởng việc xây dựng PDF mà mọi người đều có thể đọc! + +![Sơ đồ cho thấy PDF với tag Figure và hình ảnh – minh họa cách tạo tagged pdf](placeholder-image.png "ví dụ tạo tagged pdf") + +{{< /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