diff --git a/pdf/arabic/net/conversion-export/_index.md b/pdf/arabic/net/conversion-export/_index.md index 3a917f992..a01353160 100644 --- a/pdf/arabic/net/conversion-export/_index.md +++ b/pdf/arabic/net/conversion-export/_index.md @@ -80,8 +80,21 @@ ### [تحويل PDF إلى HTML باستخدام عناوين URL للصور المخصصة باستخدام Aspose.PDF .NET: دليل شامل](./convert-pdf-html-custom-image-urls-aspose-pdf-net/) تعرف على كيفية تحويل مستندات PDF إلى تنسيق HTML باستخدام Aspose.PDF لـ .NET، بما في ذلك تخصيص عناوين URL للصور وتنفيذ استراتيجية مخصصة لتوفير الموارد. -### [تحويل PDF إلى PNG باستخدام Aspose.PDF .NET: تحسين تلميحات الخطوط لعرض نص واضح](./convert-pdf-png-aspose-net-font-hinting/) -تعرف على كيفية تحويل مستندات PDF إلى صور PNG عالية الجودة باستخدام Aspose.PDF .NET، مما يضمن عرض نص حاد من خلال تلميحات الخط. +### [تحويل PDF إلى HTML باستخدام Aspose.PDF .NET: حفظ الصور بتنسيق PNG خارجي](./pdf-to-html-conversion-external-png-aspose-pdf-net/) +تعرّف على كيفية تحويل مستندات PDF إلى HTML مع صور PNG خارجية باستخدام Aspose.PDF لـ .NET. يضمن هذا الدليل الحفاظ على التنسيق وتحسين أداء الويب. + +### [تحويل PDF إلى HTML باستخدام Aspose.PDF .NET: دليل شامل](./aspose-pdf-net-pdf-to-html-conversion/) +أتقن تحويل PDF إلى HTML باستخدام Aspose.PDF لـ .NET. حسّن إمكانية الوصول إلى المستندات وتفاعلها مع المستخدمين من خلال خيارات قابلة للتخصيص. + +### [حفظ PDF كـ HTML باستخدام Aspose – دليل كامل C#](./save-pdf-as-html-with-aspose-complete-c-guide/) + +### [حفظ PDF كـ HTML باستخدام C# – دليل شامل خطوة بخطوة](./save-pdf-as-html-with-c-complete-step-by-step-guide/) + +### [تحويل PDF إلى HTML باستخدام Aspose.PDF .NET](./pdf-to-html-conversion-aspose-dot-net/) +برنامج تعليمي لبرمجة Aspose.PDF Net + +### [تحويل PDF إلى HTML باستخدام Aspose.PDF .NET: حفظ الصور بتنسيق PNG خارجي](./pdf-to-html-conversion-external-png-aspose-pdf-net/) +برنامج تعليمي لبرمجة Aspose.PDF Net ### [تحويل PDF إلى PPTX باستخدام Aspose.PDF لـ .NET: دليل خطوة بخطوة](./convert-pdf-to-pptx-aspose-dotnet-guide/) تعرّف على كيفية تحويل مستندات PDF بكفاءة إلى عروض تقديمية بتنسيق PowerPoint باستخدام Aspose.PDF لـ .NET. يغطي هذا الدليل خطوة بخطوة أساسيات التحويل، وميزات متقدمة مثل شرائح الصور، وتتبع التقدم. @@ -90,7 +103,7 @@ تعرّف على كيفية تحويل ملفات PDF إلى SVG باستخدام Aspose.PDF لـ .NET. يغطي هذا الدليل الشامل الإعداد وخطوات التحويل ونصائح التحسين. ### [تحويل PDF إلى TIFF باستخدام Aspose.PDF .NET: دليل شامل](./convert-pdf-page-to-tiff-aspose-net/) -تعرف على كيفية تحويل صفحات PDF إلى صور TIFF عالية الجودة باستخدام Aspose.PDF لـ .NET من خلال هذا البرنامج التعليمي خطوة بخطوة. +تعرف على كيفية تحويل صفحات PDF إلى صور TIFF عالية الجودة باستخدام Aspose.PDF .NET من خلال هذا البرنامج التعليمي خطوة بخطوة. ### [تحويل PDF إلى TeX باستخدام Aspose.PDF لـ .NET: دليل شامل](./convert-pdf-to-tex-aspose-dotnet/) تعرّف على كيفية تحويل مستندات PDF المعقدة إلى صيغة TeX قابلة للتحرير باستخدام Aspose.PDF لـ .NET. يغطي هذا الدليل خطوات التثبيت والتحويل وتحسين الأداء. @@ -186,25 +199,25 @@ تعرّف على كيفية تحويل ملفات PDF إلى صيغة EPUB باستخدام Aspose.PDF لـ .NET. اتبع هذا الدليل خطوة بخطوة لتحسين النشر الرقمي وإمكانية الوصول إلى المحتوى. ### [كيفية تحويل ملف PDF إلى ملف TIFF متعدد الصفحات باستخدام Aspose.PDF .NET - دليل خطوة بخطوة](./convert-pdf-to-multi-page-tiff-aspose-dotnet/) -تعرّف على كيفية تحويل ملفات PDF إلى صور TIFF متعددة الصفحات وعالية الجودة باستخدام Aspose.PDF لـ .NET. اتبع هذا الدليل خطوة بخطوة لسهولة التنفيذ باستخدام C#. +تعرّف على كيفية تحويل ملفات PDF إلى صور TIFF متعددة الصفحات وعالية الجودة باستخدام Aspose.PDF .NET. اتبع هذا الدليل خطوة بخطوة لسهولة التنفيذ باستخدام C#. ### [كيفية تحويل PDF إلى PostScript في C# باستخدام Aspose.PDF: دليل شامل](./convert-pdf-to-postscript-aspose-csharp/) تعرّف على كيفية تحويل ملفات PDF إلى صيغة PostScript باستخدام Aspose.PDF لـ .NET من خلال هذا الدليل المفصل. مثالي للطباعة عالية الجودة. ### [كيفية تحويل PDF إلى TIFF باستخدام Aspose.PDF لـ .NET: دليل خطوة بخطوة](./convert-pdf-to-tiff-aspose-net/) -تعرّف على كيفية تحويل ملفات PDF إلى صور TIFF عالية الجودة باستخدام Aspose.PDF لـ .NET. اتبع دليلنا المفصل مع أمثلة برمجية ونصائح للتكوين. +تعرّف على كيفية تحويل ملفات PDF إلى صور TIFF عالية الجودة باستخدام Aspose.PDF .NET. اتبع دليلنا المفصل مع أمثلة برمجية ونصائح للتكوين. ### [كيفية تحويل PDF إلى XML باستخدام Aspose.PDF لـ .NET: دليل خطوة بخطوة](./pdf-to-xml-conversion-aspose-pdf-net/) أتقن تحويل مستندات PDF إلى XML باستخدام Aspose.PDF لـ .NET. اتبع هذا الدليل الشامل وحسّن إدارة مستنداتك. -### [كيفية تحويل PDF إلى XPS باستخدام Aspose.PDF لـ .NET: دليل المطور](./convert-pdf-to-xps-aspose-dotnet-guide/) -تعرّف على كيفية تحويل ملفات PDF إلى تنسيق XPS باستخدام Aspose.PDF لـ .NET. اتبع دليلنا المفصل، بما في ذلك نصائح الإعداد والتحسين. +### [كيفية تحويل PDF إلى XPS باستخدام Aspose.PDF .NET: دليل المطور](./convert-pdf-to-xps-aspose-dotnet-guide/) +تعرّف على كيفية تحويل ملفات PDF إلى تنسيق XPS باستخدام Aspose.PDF .NET. اتبع دليلنا المفصل، بما في ذلك نصائح الإعداد والتحسين. ### [كيفية تحويل صفحات الويب إلى PDF باستخدام Aspose.PDF .NET: دليل شامل](./convert-web-pages-to-pdf-aspose-pdf-net/) -تعلّم كيفية تحويل صفحات الويب إلى ملفات PDF باستخدام Aspose.PDF لـ .NET من خلال هذا البرنامج التعليمي خطوة بخطوة. مثالي لإدارة المستندات والوصول إليها دون اتصال بالإنترنت. +تعلّم كيفية تحويل صفحات الويب إلى ملفات PDF باستخدام Aspose.PDF .NET من خلال هذا البرنامج التعليمي خطوة بخطوة. مثالي لإدارة المستندات والوصول إليها دون اتصال بالإنترنت. ### [كيفية تتبع تقدم تحويل ملفات PDF باستخدام Aspose.PDF لـ .NET: دليل خطوة بخطوة](./track-pdf-conversion-progress-aspose-dotnet/) -تعرّف على كيفية متابعة عملية تحويل ملفات PDF بكفاءة باستخدام Aspose.PDF لـ .NET. اتبع هذا الدليل المفصل لتحسين سير عمل المستندات وتحسين ملاحظات المستخدمين. +تعرّف على كيفية متابعة عملية تحويل ملفات PDF بكفاءة باستخدام Aspose.PDF .NET. اتبع هذا الدليل المفصل لتحسين سير عمل المستندات وتحسين ملاحظات المستخدمين. ### [إتقان Aspose.PDF .NET: تحويل PDF إلى HTML باستخدام CSS مخصص](./aspose-pdf-net-license-html-conversion-custom-css/) تعرّف على كيفية تطبيق ترخيص Aspose.PDF وتحويل ملفات PDF إلى HTML باستخدام CSS مُخصّص باستخدام C#. استفد من كامل إمكانيات معالجة المستندات اليوم. @@ -216,16 +229,19 @@ تعرف على كيفية تحسين تحويل PDF إلى HTML باستخدام Aspose.PDF لـ .NET، مع التركيز على التعامل الفعال مع موارد الخطوط والتكامل السلس. ### [تحويل PDF إلى HTML باستخدام Aspose.PDF .NET: حفظ الصور بتنسيق PNG خارجي](./pdf-to-html-conversion-external-png-aspose-pdf-net/) -تعرّف على كيفية تحويل مستندات PDF إلى HTML مع صور PNG خارجية باستخدام Aspose.PDF لـ .NET. يضمن هذا الدليل الحفاظ على التنسيق وتحسين أداء الويب. +تعرّف على كيفية تحويل مستندات PDF إلى HTML مع صور PNG خارجية باستخدام Aspose.PDF .NET. يضمن هذا الدليل الحفاظ على التنسيق وتحسين أداء الويب. ### [تحويل PDF إلى HTML باستخدام Aspose.PDF .NET: دليل شامل](./aspose-pdf-net-pdf-to-html-conversion/) -أتقن تحويل PDF إلى HTML باستخدام Aspose.PDF لـ .NET. حسّن إمكانية الوصول إلى المستندات وتفاعلها مع المستخدمين من خلال خيارات قابلة للتخصيص. +أتقن تحويل PDF إلى HTML باستخدام Aspose.PDF .NET. حسّن إمكانية الوصول إلى المستندات وتفاعلها مع المستخدمين من خلال خيارات قابلة للتخصيص. -### [تحويل PDF إلى HTML باستخدام Aspose.PDF لـ .NET](./pdf-to-html-conversion-aspose-dot-net/) +### [تحويل PDF إلى HTML باستخدام Aspose.PDF .NET](./pdf-to-html-conversion-aspose-dot-net/) برنامج تعليمي لبرمجة Aspose.PDF Net ### [تحويل PDF إلى TIFF في .NET باستخدام Aspose.PDF: دليل خطوة بخطوة](./pdf-to-tiff-conversion-aspose-pdf-net/) -تعلّم كيفية تحويل مستندات PDF إلى صور TIFF باستخدام Aspose.PDF لـ .NET. أتقن أعماق الألوان المخصصة وتقنيات معالجة الصور المتقدمة. +تعلّم كيفية تحويل مستندات PDF إلى صور TIFF باستخدام Aspose.PDF .NET. أتقن أعماق الألوان المخصصة وتقنيات معالجة الصور المتقدمة. + +### [تحويل PDF إلى PDF/X-1A، تصدير صفحة PNG وإضافة ختم نصي](./convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/) +تعلم تحويل PDF إلى معيار PDF/X-1A، استخراج صفحة PNG وإضافة ختم نصي باستخدام Aspose.PDF .NET ## موارد إضافية diff --git a/pdf/arabic/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/arabic/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..e8cdc424f --- /dev/null +++ b/pdf/arabic/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-03-29 +description: تحويل PDF إلى PDF/X‑1a وتصدير صفحة PDF كصورة PNG في عملية واحدة – كما + يمكنك تعلم كيفية إضافة ختم نصي إلى PDF باستخدام Aspose.Pdf (C#). +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: ar +og_description: تحويل PDF إلى PDF/X-1a وتصدير صفحة PDF كصورة PNG مع إضافة ختم نصي + PDF – دليل كامل بلغة C# باستخدام Aspose.Pdf. +og_title: تحويل PDF إلى PDF/X-1A، تصدير الصفحة بصيغة PNG وإضافة ختم نصي +tags: +- Aspose.Pdf +- C# +- PDF processing +title: تحويل PDF إلى PDF/X-1A، تصدير الصفحة كـ PNG وإضافة ختم نصي +url: /ar/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# تحويل pdf إلى pdf/x-1a، تصدير صفحة png وإضافة ختم نصي – دليل C# الكامل + +هل احتجت إلى **convert pdf to pdf/x-1a** ولكنك أيضًا أردت معاينة سريعة بصيغة PNG للصفحة الأولى وختم نصي مخصص على نفس المستند؟ لست وحدك. في العديد من خطوط الإنتاج—فكر في الفحص المسبق للملفات الجاهزة للطباعة أو توليد التقارير الآلية—غالبًا ما تواجه هذا الجمع المحدد من المتطلبات. + +في هذا البرنامج التعليمي سنستعرض سير عمل موحد واحد يقوم بثلاثة أشياء متتالية: **convert pdf to pdf/x-1a**، **export pdf page png**، و **add text stamp pdf**. يستخدم الكود مكتبة Aspose.Pdf لـ .NET، لذا ستحصل على حل احترافي دون الحاجة إلى التعامل مع تفاصيل PDF منخفضة المستوى. في النهاية ستحصل على برنامج C# قابل للتنفيذ يمكنك إدراجه في أي تطبيق كونسول، Azure Function، أو خطوة CI. + +> **ما ستحصل عليه** – ملف مصدر كامل، شروحات خطوة بخطوة، نصائح لتجنب الأخطاء الشائعة، وطريقة سريعة للتحقق من النتيجة. + +## المتطلبات المسبقة + +- .NET 6.0 أو أحدث (تعمل الواجهة البرمجية مع .NET Framework 4.x أيضًا). +- حزمة NuGet Aspose.Pdf لـ .NET (`Aspose.Pdf`) – الإصدار 23.10 هو الحالي وقت الكتابة. +- ملف PDF إدخال (`input.pdf`) وملف ملف تعريف ICC (`Coated_Fogra39L_VIGC_300.icc`) موجودان في مجلد تتحكم فيه. +- إلمام أساسي بـ C# و Visual Studio (أو بيئتك المفضلة IDE). + +إذا كان أي من ذلك غير مألوف لك، فقط قم بتثبيت حزمة NuGet باستخدام: + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +الآن لنبدأ. + +## الخطوة 1: تحميل مستند PDF المصدر + +أول شيء نقوم به هو فتح ملف PDF الذي نريد العمل عليه. تمثل فئة `Document` في Aspose.Pdf الملف بأكمله، وتقوم بتحميل المحتوى بشكل كسول، لذا لا تدفع تكلفة أداء حتى تتعامل فعليًا مع الصفحات. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*لماذا هذا مهم*: تحميل المستند مبكرًا يمنحنا كائنًا واحدًا يمكن تمريره للتحويل، والتصوير، والختم. إذا تخطيت عملية التحميل الصريحة وحاولت العمل على ملف غير موجود، ستحصل على استثناء `FileNotFoundException` غامض لاحقًا. + +## الخطوة 2: تحويل المستند إلى PDF/X‑1a باستخدام ملف تعريف ICC مخصص + +PDF/X‑1a هو المعيار الفعلي للملفات الجاهزة للطباعة. خطوة التحويل تسمح لك أيضًا بدمج **Output Intent** (ملف تعريف ICC) حتى تعرف محركات RIP اللاحقة بالضبط كيف يجب تفسير الألوان. + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*نصيحة احترافية*: إذا كنت بحاجة إلى معالجة أخطاء أكثر صرامة، استبدل `ConvertErrorAction.Delete` بـ `ConvertErrorAction.Throw`. بهذه الطريقة سيتوقف التحويل عند أول مشكلة توافق، وهو مفيد لخطوط أنابيب QA الآلية. + +## الخطوة 3: تصدير الصفحة الأولى كـ PNG مع تحليل الخطوط + +غالبًا ما تكون معاينة PNG مطلوبة لفحص بصري سريع أو لإنشاء صور مصغرة. من خلال تمكين `AnalyzeFonts`، يضمن Aspose أن أي خطوط مدمجة يتم تحويلها إلى نقطية بشكل صحيح، متجنبًا مفاجآت الحروف المفقودة. + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +بعد تشغيل هذا ستجد `page1.png` بجوار ملفات المصدر. افتحه بأي عارض صور لتأكيد أن التحويل يبدو صحيحًا. + +## الخطوة 4: إضافة ختم نصي يضبط حجم الخط تلقائيًا + +**text stamp** هو طريقة مفيدة لإضافة علامة مائية أو تعليقات توضيحية إلى PDF دون تعديل تدفقات المحتوى الأساسية. ضبط `AutoAdjustFontSizeToFitStampRectangle` يعني أن المكتبة ستصغر أو تكبر النص بحيث لا يتجاوز أبدًا المستطيل الذي تحدده. + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*لماذا الحجم التلقائي؟* إذا غيرت لاحقًا نص الختم إلى شيء أطول (مثل طابع زمني ديناميكي)، لن تحتاج إلى حساب أحجام الخط يدويًا—الختم يتكيف تلقائيًا. + +## الخطوة 5: حفظ مستند PDF المحدث + +أخيرًا، احفظ كل شيء مرة أخرى على القرص. يمكنك إما استبدال الملف الأصلي أو إنشاء ملف جديد تمامًا؛ المثال أدناه ينشئ `output.pdf`. + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +عند اكتمال الحفظ، ستحصل على: + +1. ملف متوافق مع **PDF/X‑1a** (`output.pdf`). +2. معاينة **PNG** للصفحة الأولى (`page1.png`). +3. **text stamp** يتناسب تمامًا داخل مستطيله. + +### قائمة التحقق السريعة + +| ✅ الفحص | طريقة التحقق | +|--------|---------------| +| توافق PDF/X‑1a | افتح `output.pdf` في Adobe Acrobat → *Print Production* → *Preflight* واختر “PDF/X‑1a:2001”. | +| مظهر PNG صحيح | افتح `page1.png` في Windows Photo Viewer أو أي محرر صور. | +| ظهور الختم | مرّر عبر `output.pdf` – يجب أن يكون النص “Auto‑size” مركزيًا في الصفحة 1. | + +![معاينة تحويل pdf إلى pdf/x-1a](image.png "معاينة تحويل pdf إلى pdf/x-1a تظهر الصفحة المختومة") + +*نص بديل للصورة*: **معاينة تحويل pdf إلى pdf/x-1a مع ختم نصي بحجم تلقائي** – يوضح الـ PDF النهائي بعد جميع الخطوات. + +## الاختلافات الشائعة وحالات الحافة + +- **Multiple pages** – إذا كنت بحاجة إلى ختم كل صفحة، قم بالتكرار على `pdfDoc.Pages` واستدعِ `AddStamp` داخل الحلقة. +- **Different output format** – غيّر `PdfFormat.PDF_X_1A` إلى `PdfFormat.PDF_A_1B` للحصول على PDFs أرشيفية. +- **Higher‑resolution PNG** – اضبط `Resolution = 600` في `RenderingOptions` للحصول على صور مصغرة بجودة طباعة. +- **Custom font for the stamp** – عيّن `autoSizeStamp.Font = FontRepository.FindFont("Arial")` قبل إضافة الختم. +- **Error handling** – غلف كل خطوة رئيسية بـ `try/catch` وسجّل `ConversionException` أو `FileNotFoundException` لتسهيل عملية التصحيح. + +## مثال كامل يعمل (جاهز للنسخ واللصق) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Setup paths + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Load the source document + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Convert to PDF/X‑1a (print‑ready) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Export first page as PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Add auto‑sizing text stamp (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/arabic/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..7337bb438 --- /dev/null +++ b/pdf/arabic/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,268 @@ +--- +category: general +date: 2026-03-29 +description: احفظ ملف PDF كملف HTML باستخدام Aspose.PDF في C#. تعلّم كيفية تحويل PDF + إلى HTML، حذف الصور، والتحقق من توقيع PDF في دليل واحد. +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: ar +og_description: احفظ ملف PDF كـ HTML باستخدام Aspose.PDF في C#. يوضح لك هذا الدليل + كيفية تحويل PDF إلى HTML، وتجاوز الصور، والتحقق من صحة التوقيع الرقمي للـ PDF. +og_title: حفظ PDF كـ HTML باستخدام Aspose – دليل C# الكامل +tags: +- Aspose.PDF +- C# +- PDF processing +title: حفظ ملف PDF كـ HTML باستخدام Aspose – دليل C# الكامل +url: /ar/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# حفظ PDF كـ HTML باستخدام Aspose – دليل C# الكامل + +هل تساءلت يومًا كيف **تحفظ PDF كـ HTML** دون سحب كل صورة مدمجة؟ ربما تقوم بإنشاء معاينة ويب خفيفة الوزن وتؤثر حزمة الصور الإضافية سلبًا على سرعة صفحتك. الخبر السار هو أنك لست بحاجة إلى كتابة محلل مخصص—Aspose.PDF تقوم بالعمل الشاق نيابةً عنك. في هذا الدرس سنقوم **بتحويل PDF إلى HTML**، وإزالة الصور، ثم **التحقق من توقيع PDF** للتأكد من أن المستند لم يتم العبث به. + +سنستعرض كل سطر من الشيفرة، ونشرح *لماذا* كل إعداد مهم، وحتى نتطرق إلى الحالات الخاصة مثل ملفات PDF الكبيرة أو التواقيع المفقودة. بحلول النهاية ستحصل على تطبيق C# Console جاهز للتشغيل ينتج ملف HTML نظيف ويعطيك نتيجة صواب/خطأ واضحة للتوقيع الرقمي. + +## ما ستتعلمه + +- تحميل ملف PDF باستخدام Aspose.PDF. +- استخدام `HtmlSaveOptions` **لتحويل PDF إلى HTML** مع حذف الصور. +- حفظ ملف HTML الناتج على القرص. +- إعداد كائن `PdfFileSignature` **للتحقق من توقيع PDF**. +- تفسير النتيجة المنطقية ومعالجة المشكلات الشائعة. +- نصائح إضافية للأداء وحل المشكلات. + +### المتطلبات المسبقة + +- .NET 6.0 أو أحدث (الشيفرة تعمل أيضًا على .NET Framework 4.7+). +- حزمة NuGet Aspose.PDF لـ .NET (الإصدار 23.12 أو أحدث). +- ملف PDF موقع (`input.pdf`) يحتوي على توقيع باسم “Sig1”. +- إلمام أساسي بـ C# وتطبيقات الكونسول. + +> **نصيحة احترافية:** إذا لم تقم بتثبيت حزمة Aspose.PDF بعد، شغّل `dotnet add package Aspose.PDF` من مجلد المشروع الخاص بك. + +--- + +## الخطوة 1: تحميل مستند PDF المصدر + +قبل أن نتمكن من القيام بأي شيء، نحتاج إلى تمثيل PDF في الذاكرة. تقوم فئة `Document` في Aspose.PDF بقراءة الملف وبناء شجرة من الصفحات والموارد والتعليقات. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**لماذا هذا مهم:** تحميل المستند مرة واحدة يحافظ على استهلاك الذاكرة بشكل متوقع. إذا كنت تخطط لمعالجة العديد من ملفات PDF في حلقة، فكر في إعادة استخدام نفس كائن `Document` بعد استدعاء `pdfDocument.Dispose()`. + +--- + +## الخطوة 2: تكوين خيارات حفظ HTML – تخطي الصور + +نريد **حفظ PDF كـ HTML** ولكن دون بيانات الصور الضخمة. توفر لنا `HtmlSaveOptions` تحكمًا دقيقًا، وعلم `SkipImages` يخبر Aspose بتجاهل وسوم `` تمامًا. + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**لماذا قد ترغب في تخطي الصور:** في بوابات المعاينة أو التصاميم الموجهة للهواتف المحمولة، كل كيلوبايت مهم. إزالة الصور تتجنب أيضًا مشكلات الترخيص إذا كان PDF المصدر يحتوي على رسومات محمية بحقوق الطبع والنشر. + +--- + +## الخطوة 3: تصدير PDF كملف HTML دون صور + +الآن نكتب ملف HTML فعليًا. طريقة `Save` تحترم الخيارات التي ضبطناها أعلاه. + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**النتيجة التي ستراها:** ملف `.html` يحتوي على المحتوى النصي والجداول والرسومات المتجهية (إن وجدت)، ولكن بدون وسوم ``. افتحه في متصفح وسترى عرضًا نظيفًا وخاليًا من الصور للـ PDF الأصلي. + +--- + +## الخطوة 4: إعداد مُتحقق التوقيع لنفس المستند + +تتيح لنا فئة `PdfFileSignature` في Aspose.PDF فحص التواقيع الرقمية المدمجة في PDF. سننشئ كائنًا يشير إلى نفس الـ `Document` الذي قمنا بتحميله مسبقًا. + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**ملاحظة حول إدارة الموارد:** يضمن بيان `using` أن المُتحقق يحرر أي مقبض أصلي بمجرد الانتهاء، مما يمنع مشاكل قفل الملفات على نظام Windows. + +--- + +## الخطوة 5: التحقق من التوقيع المسمى “Sig1” باستخدام SHA‑3‑256 + +معظم ملفات PDF تستخدم SHA‑256 أو SHA‑1، لكن Aspose يدعم أيضًا عائلة SHA‑3 الأحدث. هنا نطلب صراحةً `Sha3_256`. إذا كان التوقيع مفقودًا أو كان الخوارزمية غير متطابقة، تُعيد الطريقة `false`. + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**ما قد يعنيه “false”:** + +1. **التوقيع غير موجود** – ربما يستخدم PDF اسمًا مختلفًا؛ يمكنك سرد التواقيع باستخدام `signatureVerifier.GetSignatureNames()`. +2. **عدم تطابق الخوارزمية** – ربما تم توقيع PDF باستخدام SHA‑256؛ جرّب `DigestHashAlgorithm.Sha256`. +3. **تعديل المستند** – أي تغيير بعد التوقيع يبطل التجزئة، مما ينتج `false`. + +--- + +## معالجة الحالات الخاصة الشائعة + +### ملفات PDF الكبيرة + +إذا تجاوز PDF المصدر بضع مئات من الميجابايت، فكر في تمكين **وضع توفير الذاكرة**: + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +هذا يبث الصفحات عند الطلب، مما يقلل من ضغط الذاكرة (RAM). + +### التوقيع المفقود + +عندما لا تكون متأكدًا من اسم التوقيع، قم بإدراجها: + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +اختر الاسم الصحيح من القائمة قبل استدعاء `VerifySignature`. + +### توافق المتصفح + +بعض المتصفحات تواجه صعوبة مع HTML الذي يحتوي على CSS الافتراضي من Aspose. ضبط `htmlSaveOptions.EmbedCss = true` (كما هو موضح سابقًا) يدمج الأنماط داخل الملف، مما يجعله أكثر قابلية للنقل. + +--- + +## مثال كامل يعمل + +فيما يلي البرنامج الكامل الجاهز للنسخ واللصق والذي يتضمن جميع الخطوات، ومعالجة الأخطاء، والتشخيصات الاختيارية. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**مخرجات الكونسول المتوقعة** (المسارات قد تختلف): + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +إذا كان التوقيع غير صالح، ستظهر السطر الأخير كـ `Signature valid: False`. + +--- + +## الأسئلة المتكررة + +**س: هل يمكنني تحويل PDF إلى HTML *مع* الصور؟** +ج: بالتأكيد. فقط اضبط `SkipImages = false` (أو احذف الخاصية). سيقوم Aspose بدمج كل صورة كملف منفصل في مجلد فرعي بجوار ملف HTML. + +**س: هل يعمل هذا على Linux؟** +ج: نعم. Aspose.PDF متعدد المنصات؛ فقط تأكد من أن مسارات `YOUR_DIRECTORY` تستخدم الشرطات المائلة للأمام أو `Path.Combine`. + +**س: ماذا لو احتجت للتحقق من توقيع PDF الرقمي باستخدام شهادة مخصصة؟** +ج: استخدم نسخة `PdfFileSignature.ValidateSignature` التي تقبل كائن `X509Certificate2`. ستعيد هذه الطريقة أيضًا كائن `SignatureInfo` مفصل يمكنك فحصه. + +**س: هل `aspose convert pdf` مقصورة على C#؟** +ج: لا. نفس الـ API موجود للـ Java وPython ولغات .NET الأخرى. المفاهيم—التحميل، ضبط الخيارات، الحفظ، التحقق—تبقى هي نفسها. + +--- + +## الخلاصة + +أنت الآن تعرف بالضبط كيفية **حفظ PDF كـ HTML** باستخدام Aspose.PDF، وإزالة الصور غير الضرورية، و**التحقق من توقيع PDF** في برنامج C# موحد ومبسط. العملية بسيطة: تحميل، ضبط، تصدير، والتحقق. مع تغطية التشخيصات الاختيارية ومعالجة الحالات الخاصة، يمكنك تكييف هذا النمط للوظائف الدفعية، خدمات الويب، أو الأدوات المكتبية. + +هل أنت مستعد للخطوة التالية؟ جرّب **تحويل PDF إلى HTML** مع الحفاظ على الصور، أو جرب خوارزميات تجزئة مختلفة لـ **التحقق من توقيع PDF الرقمي** مقابل بنية المفاتيح العامة الخاصة بك. يمكنك أيضًا استكشاف تحويل Aspose من PDF إلى DOCX أو دمج عدة ملفات PDF قبل التصدير—كل ذلك امتداد طبيعي لسير العمل الذي بنيناه. + +برمجة سعيدة، ولتظل معاينات HTML خفيفة الوزن وتبقى توقيعاتك موثوقة! + +![save pdf as html example](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/arabic/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..2d4e4cdeb --- /dev/null +++ b/pdf/arabic/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-03-29 +description: احفظ ملف PDF كـ HTML باستخدام C# و Aspose.PDF. تعلم كيفية إدراج صفحة + في PDF، إضافة صفحة PDF فارغة، وإنشاء توقيع PKCS7 منفصل في تدفق واحد. +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: ar +og_description: احفظ ملف PDF كـ HTML في C# باستخدام Aspose.PDF. يوضح هذا الدليل كيفية + تحميل PDF، إدراج صفحة، إضافة صفحة فارغة، التوقيع باستخدام PKCS7، وتصدير إلى HTML. +og_title: حفظ PDF كـ HTML باستخدام C# – دليل برمجة كامل +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: حفظ ملف PDF كـ HTML باستخدام C# – دليل شامل خطوة بخطوة +url: /ar/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# حفظ PDF كـ HTML باستخدام C# – دليل خطوة بخطوة كامل + +هل احتجت يوماً إلى **حفظ PDF كـ HTML** لكنك لم تكن متأكدًا من كيفية الحفاظ على التخطيط مع تعديل المستند الأصلي؟ لست وحدك—المطورون غالبًا ما يتعاملون مع إصلاحات الترقيم، الصفحات الفارغة، والتوقيعات الرقمية قبل التحويل. في هذا الدرس سنستعرض سير عمل موحد يحقق ذلك، وسنضيف أيضًا كيفية **إدراج صفحة في PDF**، **إضافة صفحة PDF فارغة**، و**إنشاء توقيع PKCS7 منفصل** على طول الطريق. + +بنهاية هذا الدليل ستحصل على برنامج C# جاهز للتنفيذ يقوم بتحميل PDF موجود، إعادة تشكيل صفحاته، توقيع الصفحة الأولى، وأخيرًا تصدير كل ذلك إلى HTML مع أولوية Unicode CMap. لا مراجع معلقة، مجرد حل مستقل يمكنك إدراجه في أي مشروع .NET. + +## ما الذي ستحتاجه + +- **Aspose.PDF for .NET** (أحدث نسخة، 23.x وقت كتابة هذا الدليل). +- **.NET 6.0** أو أحدث – الكود يُجمّع أيضًا مع .NET Framework 4.7، لكن .NET 6 يمنحك أفضل أداء. +- ملف **شهادة** (`.pfx`) وكلمة المرور الخاصة به لتوقيع PKCS7. +- ملف PDF إدخال (`input.pdf`) تريد معالجته. + +إذا كان لديك هذه المتطلبات، يمكننا الانتقال مباشرة إلى الكود. وإلا، احصل على نسخة تجريبية مجانية لمدة 30 يومًا من موقع Aspose الرسمي؛ الـ API هو نفسه النسخة المدفوعة. + +--- + +## الخطوة 1 – تحميل مستند PDF في C# (الإجراء الأساسي) + +أول خطوة هي جلب الـ PDF إلى الذاكرة. فئة `Document` في Aspose تقوم بكل العمل الشاق. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*لماذا هذا مهم:* تحميل الملف يمنحك نموذج كائن قابل للتعديل. من هنا يمكنك **إدراج صفحة في PDF**، إضافة صفحات فارغة، أو تطبيق توقيعات دون لمس الملف الأصلي على القرص. + +--- + +## الخطوة 2 – إدراج صفحة وإضافة صفحة PDF فارغة + +أحيانًا يحتوي PDF المصدر على عيوب في الترقيم—ربما صفحة مفقودة أو مكررة. في المثال أدناه نقوم بنسخ الصفحة 2 مباشرةً بعد الصفحة 1، ثم نضيف صفحة فارغة تمامًا في النهاية. + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*نصيحة محترف:* `UpdatePagination()` يعيد حساب أرقام الصفحات التي تظهر في التذييلات أو الرؤوس التي يولدها Aspose. تخطي هذه الخطوة قد يترك أرقامًا قديمة في الـ HTML النهائي. + +--- + +## الخطوة 3 – إنشاء توقيع PKCS7 منفصل (SHA‑512) + +التوقيع المنفصل PKCS7 يثبت سلامة المستند دون دمج بيانات التوقيع مباشرةً في تدفق محتوى PDF. سنستخدم شهادة مخزنة في ملف PFX. + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*لماذا SHA‑512؟* يقدم تجزئة أقوى من SHA‑256 مع الحفاظ على دعم واسع. إذا كنت تحتاج إلى توافق مع معايير أقدم، استبدل `Sha512` بـ `Sha256`. + +--- + +## الخطوة 4 – تطبيق التوقيع الرقمي على الصفحة 1 مع مستطيل مرئي + +سنضع حقل توقيع مرئي على الصفحة الأولى. يحدد المستطيل المكان الذي تظهر فيه صورة التوقيع (أو العنصر النائب). + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*حالة خاصة:* إذا كانت الصفحة المستهدفة تحتوي بالفعل على حقل نموذج بنفس الاسم، سيُطلق الـ API استثناء. تأكد من استخدام أسماء حقول فريدة أو مسح الحقول الموجودة قبل التوقيع. + +--- + +## الخطوة 5 – ضبط خيارات حفظ HTML لإعطاء أولوية لـ Unicode CMap + +عند التحويل إلى HTML، يمكن لـ Aspose تضمين الخطوط كـ base‑64، أو استخدام أجزاء فرعية، أو الاعتماد على Unicode CMaps. إعطاء أولوية لـ Unicode يقلل حجم الملف ويحسن قابلية البحث في النص. + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*ماذا يفعل هذا؟* يخبر المحول بتفضيل Unicode CMaps على تضمين الخطوط المخصص كلما كان ذلك ممكنًا، وهو مثالي للـ PDFs متعددة اللغات. + +--- + +## الخطوة 6 – حفظ المستند الموقّع كـ HTML + +أخيرًا، اكتب الـ PDF المعالج إلى مجلد HTML (Aspose ينشئ دليلًا يحتوي على ملفات داعمة مثل CSS والصور). + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +إذا فتحت `cmap.html` في المتصفح، سترى تخطيط الـ PDF الأصلي مُعرضًا كـ HTML، مع صورة التوقيع المرئية على الصفحة 1. + +--- + +## مثال كامل يعمل (جميع الخطوات مجمعة) + +فيما يلي البرنامج الكامل الذي يمكنك نسخه‑لصقه في تطبيق Console. يتضمن جميع توجيهات `using` الضرورية ومعالجة الأخطاء. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**النتيجة المتوقعة:** +- `cmap.html` (ملف HTML الرئيسي) +- مجلد `cmap_files` يحتوي على CSS، صور، وموارد الخطوط. +- الصفحة الأولى تعرض صندوق توقيع مرئي عند الإحداثيات التي حددتها. + +--- + +## الأسئلة المتكررة والحالات الخاصة + +| السؤال | الجواب | +|----------|--------| +| *هل يمكنني استخدام شهادة موقعة ذاتيًا؟* | نعم، Aspose.PDF يقبل أي ملف PFX صالح. فقط تذكر أن المتصفحات قد تُظهر التوقيع كغير موثوق. | +| *ماذا لو احتجت لتوقيع عدة صفحات؟* | أنشئ استدعاءات منفصلة لـ `PdfFileSignature` لكل صفحة، أو استخدم حلقة تُحدّث `pageNumber`. | +| *هل هناك طريقة لتضمين صورة التوقيع بدلاً من المستطيل؟* | زوّد كائن `SignatureAppearance` مع تدفق صورة إلى `PdfFileSignature.Sign`. | +| *ملف PDF الخاص بي مشفر—هل يمكنني التحويل؟* | فك تشفيره أولاً باستخدام `pdfDoc.Decrypt("ownerPassword")`، ثم نفّذ الخطوات. | +| *هل سيحافظ HTML على الروابط التشعبية من PDF الأصلي؟* | Aspose يحافظ على تعليقات الروابط بشكل افتراضي. إذا لاحظت روابط مفقودة، اضبط `htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;` | + +--- + +## الخاتمة + +لقد استعرضنا كيفية **حفظ PDF كـ HTML** مع **إدراج صفحة في PDF**، **إضافة صفحة PDF فارغة**، و**إنشاء توقيع PKCS7 منفصل**—كل ذلك باستخدام C#. سير العمل خطي، سهل التصحيح، وقابل للتخصيص بالكامل للمشاريع الأكبر. + +الخطوات التالية التي قد ترغب في استكشافها: + +- **المعالجة الدفعية** – حلقة تمر على مجلد PDFs وتحوّل كل واحد منها. +- **CSS مخصص** – عدّل `HtmlSaveOptions.CustomCss` ليتناسب مع تصميم موقعك. +- **توقيعات متقدمة** – استخدم خوادم الطوابع الزمنية أو LTV (التحقق طويل الأمد) لتوقيع بمستوى الامتثال. + +جرّب ذلك وستحصل على خط أنابيب PDF‑to‑HTML قوي، صديق لتحسين محركات البحث، ومناسب للاقتباس من قبل المساعدين الذكائيين. Happy coding! + +--- + +![Diagram showing PDF loaded, pages inserted, signature applied, then HTML output](/images/save-pdf-as-html-workflow.png "save pdf as html workflow") + +*نص بديل للصورة:* **مخطط سير عمل حفظ PDF كـ HTML** + +{{< /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/digital-signatures/_index.md b/pdf/arabic/net/digital-signatures/_index.md index 49e8b487d..8fdfb230c 100644 --- a/pdf/arabic/net/digital-signatures/_index.md +++ b/pdf/arabic/net/digital-signatures/_index.md @@ -59,6 +59,9 @@ ### [التحقق من توقيع PDF باستخدام Aspose – تحويل PDF إلى HTML](./validate-pdf-signature-with-aspose-convert-pdf-to-html/) تعرّف على كيفية التحقق من توقيع PDF وتحويله إلى HTML باستخدام Aspose. +### [كيفية توقيع ملف PDF وإضافة صور – دليل C# كامل](./how-to-sign-pdf-and-add-images-complete-c-guide/) +دليل شامل يوضح كيفية توقيع ملفات PDF وإدراج صور باستخدام C# ومكتبة Aspose.PDF. + ## موارد إضافية - [توثيق Aspose.PDF للشبكة](https://docs.aspose.com/pdf/net/) diff --git a/pdf/arabic/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/arabic/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..bee0400e0 --- /dev/null +++ b/pdf/arabic/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,240 @@ +--- +category: general +date: 2026-03-29 +description: كيفية توقيع ملف PDF بتوقيع رقمي وإضافة صورة مقصوصة في C#. تعلم كيفية + إضافة توقيع رقمي إلى PDF، قص الصورة للـ PDF، وإضافة صورة إلى PDF بسهولة. +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: ar +og_description: كيفية توقيع ملف PDF باستخدام توقيع رقمي وإدراج صورة مقصوصة باستخدام + Aspose.Pdf في C#. اتبع هذا الدليل للحصول على حل كامل. +og_title: كيفية توقيع ملفات PDF وإضافة الصور – دليل C# خطوة بخطوة +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: كيفية توقيع ملفات PDF وإضافة الصور – دليل C# الكامل +url: /ar/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية توقيع ملفات PDF وإضافة الصور – دليل C# كامل + +هل تساءلت يومًا **كيفية توقيع ملفات PDF** برمجيًا مع إدراج صورة مخصصة؟ ربما تقوم ببناء سير عمل للموافقة وتحتاج إلى توقيع قانونيًا ملزم *و* صورة مصغرة لصورة الموقع على نفس الصفحة. باختصار، تريد **إضافة توقيع رقمي pdf**، قص تلك الصورة، ثم **إضافة صورة إلى pdf** دون عناء. + +هذا الدليل يشرح لك كل خطوة — من تحميل شهادة ECDSA PKCS#7 إلى قص صورة JPEG ووضعها على الصفحة الموقعة. في النهاية ستحصل على ملف C# واحد قابل للتنفيذ يوقع الصفحة 1، يقص صورة إلى 400 × 400 بكسل، ويضعها في موقع دقيق. لا سكريبتات خارجية، لا سحر، فقط كود واضح وتفسيرات. + +## المتطلبات المسبقة + +- .NET 6.0 أو أحدث (الكود يعمل أيضًا مع .NET Framework 4.7+) +- **Aspose.Pdf for .NET** حزمة NuGet (الإصدار 23.9 أو أحدث) +- شهادة ECDSA P‑256 بصيغة PKCS#7 (`.pfx`) وكلمة المرور الخاصة بها +- صورة JPEG تريد تضمينها (مثال: `photo.jpg`) + +> **نصيحة احترافية:** احتفظ بملف الشهادة خارج نظام التحكم في المصدر واحمِ كلمة المرور باستخدام مدير أسرار. + +--- + +## الخطوة 1: إعداد المشروع والاستيرادات + +أولاً، أنشئ تطبيقًا سطريًا (أو دمجه في أي خدمة موجودة). أضف مرجع Aspose.Pdf: + +```bash +dotnet add package Aspose.Pdf +``` + +ثم قم بتضمين المساحات الاسمية المطلوبة: + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +تمنحك هذه التعليمات `using` إمكانية الوصول إلى الفئات `Document` و `Signature` و `Rectangle` التي سنحتاجها لاحقًا. + +## الخطوة 2: تحميل ملف PDF وتحضير التوقيع + +سنفتح ملف PDF موجود (`source.pdf`) وننشئ كائن **digital signature pdf** يستخدم توقيع PKCS#7 منفصل. الشهادة هي مفتاح ECDSA P‑256، وهو مقبول على نطاق واسع للامتثال. + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**لماذا هذا مهم:** استخدام توقيع PKCS#7 منفصل يحافظ على محتوى PDF الأصلي دون تعديل بينما يدمج تجزئة تشفيرية. هذا هو النهج القياسي في الصناعة للملفات PDF القانونية. + +## الخطوة 3: تطبيق التوقيع الرقمي على صفحة محددة + +الآن سنضع حقل التوقيع المرئي على **page 1**. المستطيل يحدد مكان ظهور صندوق التوقيع (الإحداثيات بوحدات النقاط، حيث 1 inch = 72 points). + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +إذا لم تحتاج إلى صندوق مرئي، اضبط `isVisible` إلى `false`. يمكن تعديل `signatureRect` ليتناسب مع تخطيط المستند الخاص بك. + +## الخطوة 4: فتح تدفق الصورة وتحديد مناطق القص + +سنقرأ ملف JPEG إلى تدفق ونحدد **source rectangle** يختار الجزء العلوي‑الأيسر 400 × 400 بكسل. هذه هي عملية **crop image for pdf**. + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **حالة حافة:** إذا كانت صورتك أصغر من 400 × 400، سيقوم القص تلقائيًا بالتحجيم إلى أبعاد الصورة الفعلية — لا يُرمى استثناء. + +## الخطوة 5: تحديد مكان ظهور الصورة المقصوصة + +بعد ذلك، عيّن **destination rectangle** على صفحة PDF. في هذا المثال نضع الصورة عند (50, 50) بحجم 200 × 200 points (≈2.78 بوصة مربع). + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +لا تتردد في التجربة: غيّر إحداثيات X/Y لتحريك الصورة، أو عدّل العرض/الارتفاع للتكبير أو التصغير. + +## الخطوة 6: إدراج الصورة المقصوصة على الصفحة الموقعة + +أخيرًا، نضيف الصورة إلى **page 1** (نفس الصفحة التي تحمل الآن التوقيع). التحميل الزائد `AddImage` الذي نستخدمه يقبل المستطيلات المصدر والوجهة، مما يؤدي إلى تنفيذ القص والموضع في نداء واحد. + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +خلف الكواليس، تقوم Aspose.Pdf باستخراج المنطقة 400 × 400 بكسل، وتعيد تحجيمها إلى 200 × 200 points، وتكتبها في تدفق محتوى PDF. + +## الخطوة 7: حفظ ملف PDF الموقّع والمُعزز بالصورة + +بعد جميع التعديلات، احفظ المستند. يمكنك استبدال الملف الأصلي أو الكتابة إلى ملف جديد. + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +عند فتح `output_signed.pdf` في Adobe Acrobat أو أي عارض PDF، ستلاحظ: + +- حقل توقيع مرئي عند الإحداثيات التي حددتها. +- الصورة المقصوصة موضوعة عند (50, 50) على الصفحة 1. +- التوقيع الرقمي مُتحقق (بشرط أن يثق العارض بشهادتك). + +## الأسئلة المتكررة (FAQ) + +| السؤال | الجواب | +|----------|--------| +| **هل يمكنني توقيع صفحة مختلفة؟** | غيّر قيمة `pageNumber` في `signature.Sign` إلى أي فهرس صفحة صالح (مبني على 1). | +| **ماذا لو احتجت إلى توقيعات متعددة؟** | أنشئ كائن `Signature` جديد لكل صفحة أو موقع، مع إعادة استخدام `pkcsSignature` إذا كانت الشهادة نفسها مطبقة. | +| **هل يقتصر قص الصورة على المستطيلات فقط؟** | نعم، `AddImage` في Aspose.Pdf يعمل مع مناطق مستطيلة. للأشكال المعقدة تحتاج إلى معالجة مسبقة للصورة (مثلاً باستخدام System.Drawing) قبل الإدراج. | +| **كيف أجعل التوقيع غير مرئي؟** | اضبط `isVisible` إلى `false` وتجاهل `signatureRect`. سيظل التوقيع صالحًا تشفيريًا. | +| **ما الصيغ التي يمكنني تضمينها غير JPEG؟** | تدعم PNG, BMP, GIF, و TIFF. فقط غيّر مسار الملف وتأكد من أن التدفق يقرأ البايتات الصحيحة. | + +## مثال كامل يعمل + +فيما يلي البرنامج الكامل المتكامل. انسخه إلى `Program.cs`، عدّل المسارات، ثم شغّله. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**النتيجة المتوقعة:** فتح `output_signed.pdf` يُظهر حقل توقيع (100 × 100 → 300 × 300 points) وصورة بحجم 200 × 200 point مأخوذة من الزاوية العلوية‑اليسرى لـ `photo.jpg`. التوقيع يُتحقق مقابل شهادة ECDSA المقدمة. + +## الخاتمة + +لقد غطينا **كيفية توقيع ملفات PDF**، وكيفية **إضافة توقيع رقمي pdf** إلى صفحة محددة، وكيفية **قص صورة للـ pdf**، وأخيرًا **إضافة صورة إلى pdf** باستخدام Aspose.Pdf في C#. تدفق العمل الكامل — من تحميل الشهادة إلى حفظ المستند النهائي — يتضمن ملف مصدر واحد سهل القراءة. + +إذا كنت مستعدًا للتحدي التالي، فكر في: + +- إضافة **توقيعات متعددة** على صفحات مختلفة (استخدم مفهوم “digital signature pdf page”). +- تضمين **رموز QR** ترتبط بخدمات التحقق. +- أتمتة العملية في API ASP.NET Core لإنشاء 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-security-and-signatures/_index.md b/pdf/arabic/net/programming-with-security-and-signatures/_index.md index 61121955c..96ea55f6e 100644 --- a/pdf/arabic/net/programming-with-security-and-signatures/_index.md +++ b/pdf/arabic/net/programming-with-security-and-signatures/_index.md @@ -34,7 +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.Pdf](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | تعلم كيفية إصلاح ملفات PDF المتضررة باستخدام Aspose.PDF لـ .NET في دليل شامل خطوة بخطوة بلغة C#. | +| [كيفية إصلاح ملفات PDF – دليل C# كامل باستخدام Aspose.Pdf](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | تعلم كيفية إصلاح ملفات PDF المتضررة باستخدام Aspose.PDF لـ .NET في دليل شامل خطوة بخطوة بلغة C#. | +| [التحقق من صحة توقيع PDF الرقمي – دليل C# كامل](./validate-pdf-digital-signature-complete-c-guide/) | تعرّف على كيفية التحقق من صحة التوقيعات الرقمية لملفات PDF باستخدام C# و Aspose.PDF في دليل شامل خطوة بخطوة. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/arabic/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/arabic/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..b77eae93b --- /dev/null +++ b/pdf/arabic/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,262 @@ +--- +category: general +date: 2026-03-29 +description: تحقق من صحة التوقيع الرقمي لملف PDF بسرعة. تعلم كيفية التحقق من توقيع + PDF، وفحص حالة توقيع PDF، واكتشاف ملفات PDF التي تم التلاعب بها باستخدام Aspose.Pdf + في C#. +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: ar +og_description: تحقق من صحة التوقيع الرقمي لملف PDF باستخدام C#. يوضح هذا الدرس كيفية + التحقق من توقيع PDF، وفحص سلامة توقيع PDF، واكتشاف ملفات PDF التي تم تعديلها باستخدام + Aspose.Pdf. +og_title: التحقق من التوقيع الرقمي لملف PDF – دليل C# الكامل +tags: +- C# +- Aspose.Pdf +- PDF Security +title: تحقق من صحة التوقيع الرقمي لملف PDF – دليل C# الكامل +url: /ar/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# التحقق من التوقيع الرقمي لملف PDF – دليل C# كامل + +هل تساءلت يومًا **كيف تتحقق من توقيع PDF** دون أن تفقد أعصابك؟ ربما استلمت عقدًا، فتحته، وتحتاج إلى أن تكون متأكدًا بنسبة 100 % أنه لم يتم تعديل محتواه. الخبر السار هو أنك لا تحتاج إلى مختبر جنائي—مجرد بضع أسطر من C# و Aspose.Pdf يمكنها **التحقق من التوقيع الرقمي لملف PDF** في لحظات. + +في هذا الدرس سنستعرض كل ما تحتاج معرفته: من تثبيت المكتبة إلى تفسير النتيجة، وحتى التعامل مع الحالات الخاصة مثل وجود توقيعات متعددة أو ملف تالف. بنهاية الدرس، ستتمكن من **فحص حالة توقيع PDF** برمجيًا و**اكتشاف ملفات PDF المعدلة** قبل أن تسبب مشاكل. + +## ما الذي ستحتاجه + +- **.NET 6.0 أو أحدث** (الكود يعمل أيضًا على .NET Framework، لكن .NET 6 هو الخيار المثالي). +- **Aspose.Pdf for .NET** – يمكنك الحصول عليها من NuGet (`Install-Package Aspose.Pdf`). +- ملف **PDF موقع** تريد اختباره. إذا لم يكن لديك واحد، أنشئ مستندًا موقعًا بسيطًا باستخدام Adobe Acrobat أو أي برنامج توقيع PDF. + +> نصيحة احترافية: احتفظ بملفات PDF خارج مجلد جذر المشروع؛ مسار نسبي مثل `./Samples/signed.pdf` يعمل جيدًا ويتجنب الالتزام غير المقصود بملفات سرية. + +## التنفيذ خطوة بخطوة + +نقسم الحل إلى أجزاء منطقية. كل جزء يحصل على عنوان H2 خاص به—أحدها يحتوي على الكلمة المفتاحية الأساسية، لتلبية قاعدة SEO. + +### ## الخطوة 1 – تثبيت وإضافة مرجع Aspose.Pdf + +أولًا، أضف حزمة NuGet إلى مشروعك: + +```powershell +dotnet add package Aspose.Pdf +``` + +أو، إذا كنت تستخدم Package Manager Console: + +```powershell +Install-Package Aspose.Pdf +``` + +بعد تثبيت الحزمة، سيضيف Visual Studio تلقائيًا مساحة الاسم `using Aspose.Pdf;`. لا حاجة لتعامل إضافي مع ملفات DLL. + +### ## الخطوة 2 – تحميل مستند PDF الموقع + +الآن نفتح الملف فعليًا. يضمن بيان `using` التخلص الصحيح من المستند، وهو أمر مهم خاصةً للملفات الكبيرة. + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +> **لماذا هذا مهم:** تحميل المستند يمنحنا الوصول إلى كائن `DigitalSignatureInfo`، وهو نقطة الدخول لجميع الاستعلامات المتعلقة بالتوقيع. + +### ## الخطوة 3 – استرجاع معلومات التوقيع الرقمي + +Aspose.Pdf يلف تفاصيل PKI منخفضة المستوى في واجهة برمجة تطبيقات سهلة. احصل على الخاصية `DigitalSignatureInfo` وستحصل على كل ما تحتاجه لـ **فحص صحة توقيع PDF**. + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +إذا كان PDF يحتوي على توقيعات متعددة، فإن `signatureInfo` يجمعها، مكشفًا عن خصائص مثل `Count` و `Certificates` و `IsCompromised`. بالنسبة لملف يحتوي على توقيع واحد، ستكون تلك المجموعات تحتوي على عنصر واحد فقط. + +### ## الخطوة 4 – تحديد ما إذا كان التوقيع مخترقًا + +علامة `IsCompromised` تخبرك إذا ما تم تعديل المستند **بعد** توقيعه. قيمة `true` تعني أن PDF تم العبث به—وهذا بالضبط ما نريد **اكتشاف PDF معدل**. + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +إذا كنت بحاجة إلى **التحقق من توقيع PDF** بشكل أعمق (مثل التحقق من سلسلة الشهادات)، يمكنك أيضًا فحص `signatureInfo.Certificates` واستدعاء `Validate()` على كلٍ منها. بالنسبة لمعظم الاستخدامات، `IsCompromised` يكفي. + +### ## الخطوة 5 – إخراج النتيجة إلى وحدة التحكم + +أخيرًا، أخبر المستخدم بما حدث. سنطبع رسالة ودية ونُعيد رمز خروج مناسب لسكربتات الأتمتة. + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### النتيجة المتوقعة + +``` +Signature compromised: False +``` + +إذا قمت بتعديل PDF عمدًا (مثلاً بإضافة حرف عشوائي)، ستتغير النتيجة إلى `True`. هذه هي اللحظة التي تعرف فيها أن سلامة المستند قد انكسرت. + +### ## التعامل مع الحالات الخاصة والمشكلات الشائعة + +#### 1. توقيعات متعددة + +عندما يحتوي PDF على أكثر من موقع، يعكس `IsCompromised` الحالة *الكلية*—إذا كان **أي** توقيع مكسور، تصبح العلامة `true`. لتحديد أي موقع هو المسبب: + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. توقيع مفقود + +إذا لم يكن PDF موقعًا أصلاً، فإن `signatureInfo.Count` سيكون `0`. يجب الحذر من الشعور بالأمان الزائف: + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. ملف PDF تالف + +ملف تالف يرمي استثناء `PdfException`. غلف منطق التحميل بكتلة try‑catch لتقديم رسالة خطأ واضحة: + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. التحقق من الشهادة (متقدم) + +إذا كنت بحاجة إلى التأكد من أن شهادة التوقيع لا تزال صالحة (غير مُسحبّة، ضمن فترة صلاحيتها)، يمكنك استدعاء: + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +هذه الخطوة تنقلك من مجرد **فحص توقيع PDF** إلى سير عمل كامل لـ **كيفية التحقق من توقيع PDF**. + +### ## مثال كامل يعمل + +بدمج كل ما سبق، إليك البرنامج الكامل الجاهز للتنفيذ: + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +شغّل البرنامج من سطر الأوامر: + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +ستظهر لك تقرير واضح يوضح ما إذا كان PDF سليمًا، ومن هو (الموقعون) المشاركون، وما إذا كانت شهاداتهم لا تزال موثوقة. + +## نظرة بصرية عامة + +فيما يلي مخطط سريع يوضح التدفق من **تحميل PDF** إلى **إخراج نتيجة التحقق**. إنه مرجع مفيد عندما تقوم بتصميم بنية خط أنابيب معالجة مستندات أكبر. + +![validate pdf digital signature workflow diagram](image.png "Diagram showing PDF load → DigitalSignatureInfo → IsCompromised check") + +*نص بديل: مخطط سير عمل التحقق من التوقيع الرقمي لملف PDF* + +## الخلاصة + +لقد غطينا الآن **حلًا كاملاً من البداية إلى النهاية للتحقق من التوقيع الرقمي لملف PDF** باستخدام Aspose.Pdf في C#. النقاط الرئيسية: + +- تحميل PDF باستخدام `Document`. +- استخراج `DigitalSignatureInfo` وفحص `IsCompromised` لـ **اكتشاف PDF معدل**. +- التعامل مع توقيعات متعددة، توقيعات مفقودة، وملفات تالفة بشكل مرن. +- اختيارياً، التحقق من شهادة التوقيع للحصول على قائمة كاملة لـ **كيفية التحقق من توقيع PDF**. + +من هنا يمكنك توسيع المنطق—تخزين نتائج التحقق في قاعدة بيانات، رفض تحميلات غير موقعة في واجهة ويب API، أو دمجه مع نظام إدارة مستندات. إذا كنت مهتمًا بميزات أمان PDF أخرى، استكشف **فحص طوابع توقيع PDF**، **إضافة توقيع جديد**، أو **تشفير ملفات PDF**. + +هل لديك أسئلة حول الحالات الخاصة، أو تريد معرفة كيفية **التحقق من توقيع PDF** باستخدام مكتبة أخرى مثل iText 7؟ اترك تعليقًا أدناه، ولنستمر في النقاش. برمجة سعيدة! + +{{< /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/conversion-export/_index.md b/pdf/chinese/net/conversion-export/_index.md index 74a842956..b30d9cabf 100644 --- a/pdf/chinese/net/conversion-export/_index.md +++ b/pdf/chinese/net/conversion-export/_index.md @@ -45,10 +45,10 @@ 了解如何使用 Aspose.PDF for .NET 将 Markdown 文件转换为 PDF。按照本分步指南,将文档转换无缝集成到您的应用程序中。 ### [使用 .NET 中的 Aspose.PDF 将 PDF 页面转换为图像](./convert-pdf-pages-to-images-aspose-dotnet/) -Aspose.PDF Net 代码教程 +Aspose-PDF Net 代码教程 ### [使用 C# 中的 Aspose.PDF 将 PDF 页面转换为图像](./convert-pdf-pages-to-images-aspose-net-csharp/) -Aspose.PDF Net 代码教程 +Aspose-PDF Net 代码教程 ### [使用 Aspose.PDF .NET 将 PDF 页面转换为 PNG:综合指南](./convert-pdf-pages-to-png-aspose-net/) 了解如何使用 Aspose.PDF for .NET 将 PDF 页面转换为高质量的 PNG 图像。按照本分步指南,高效地自动化转换过程。 @@ -60,7 +60,7 @@ Aspose.PDF Net 代码教程 了解如何使用 Aspose.PDF for .NET 将 PDF 页面转换为 EMF 格式。本指南涵盖设置、分步说明和最佳实践。 ### [使用 Aspose.PDF for .NET 将 PDF 转换为 EMF](./convert-pdf-to-emf-aspose-dotnet/) -Aspose.PDF Net 代码教程 +Aspose-PDF Net 代码教程 ### [使用 Aspose.PDF for .NET 将 PDF 转换为 HTML:流输出指南](./convert-pdf-html-aspose-dotnet-guide/) 了解如何使用 Aspose.PDF for .NET 通过流输出将 PDF 文件转换为 HTML。增强您的 Web 集成和可访问性。 @@ -75,7 +75,7 @@ Aspose.PDF Net 代码教程 了解如何使用 Aspose.PDF for .NET 将 PDF 转换为 HTML,同时保留 TrueType (TTF) 和 Web 开放字体格式 (WOFF)。分步指南,包含代码示例。 ### [使用 Aspose.PDF 将 PDF 转换为具有自定义尺寸的 HTML](./convert-pdf-html-custom-dimensions-asposepdf-net/) -Aspose.PDF Net 代码教程 +Aspose-PDF Net 代码教程 ### [使用 Aspose.PDF .NET 将 PDF 转换为带有自定义图像 URL 的 HTML:综合指南](./convert-pdf-html-custom-image-urls-aspose-pdf-net/) 了解如何使用 Aspose.PDF for .NET 将 PDF 文档转换为 HTML 格式,包括自定义图像 URL 和实施定制的资源节省策略。 @@ -98,6 +98,9 @@ Aspose.PDF Net 代码教程 ### [使用 Aspose.PDF .NET 将 PDF 转换为 Word:综合指南](./convert-pdf-word-aspose-net/) 学习如何使用 Aspose.PDF for .NET 将 PDF 文件无缝转换为 DOC 和 DOCX 格式。通过我们的分步指南掌握高级转换技巧。 +### [将 PDF 转换为 PDF/X-1a,导出页面 PNG 并添加文字水印](./convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/) +学习使用 Aspose.PDF for .NET 将 PDF 转换为 PDF/X-1a 标准,导出页面为 PNG 并添加文本水印的完整步骤。 + ### [使用 Aspose.PDF for .NET 将 PDF 转换为 XML:分步指南](./convert-pdf-to-xml-aspose-pdf-net/) 了解如何使用 Aspose.PDF for .NET 将 PDF 文件转换为 XML 格式。增强数据集成和处理能力。 @@ -222,11 +225,17 @@ Aspose.PDF Net 代码教程 使用 Aspose.PDF for .NET 掌握 PDF 到 HTML 的转换。通过可自定义的选项增强文档的可访问性和参与度。 ### [使用 Aspose.PDF for .NET 将 PDF 转换为 HTML](./pdf-to-html-conversion-aspose-dot-net/) -Aspose.PDF Net 代码教程 +Aspose-PDF Net 代码教程 ### [使用 Aspose.PDF 在 .NET 中将 PDF 转换为 TIFF:分步指南](./pdf-to-tiff-conversion-aspose-pdf-net/) 学习如何使用 Aspose.PDF for .NET 将 PDF 文档转换为 TIFF 图像。掌握自定义色深和高级图像处理技术。 +### [使用 Aspose.PDF .NET 将 PDF 保存为 HTML – 完整 C# 指南](./save-pdf-as-html-with-aspose-complete-c-guide/) +了解如何使用 Aspose.PDF for .NET 在 C# 中将 PDF 保存为 HTML,保持布局和样式的完整性。 + +### [使用 C# 将 PDF 保存为 HTML – 完整分步指南](./save-pdf-as-html-with-c-complete-step-by-step-guide/) +学习如何使用 C# 将 PDF 文档转换并保存为 HTML,保持布局、样式和交互性,提供完整代码示例和最佳实践。 + ## 其他资源 - [Aspose.PDF 用于网络文档](https://docs.aspose.com/pdf/net/) diff --git a/pdf/chinese/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/chinese/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..dcce563ca --- /dev/null +++ b/pdf/chinese/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-03-29 +description: 将 PDF 转换为 PDF/X-1a 并在同一流程中导出 PDF 页面为 PNG —— 还学习如何使用 Aspose.Pdf(C#)为 PDF + 添加文字水印。 +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: zh +og_description: 将 PDF 转换为 PDF/X-1a 并在添加文本水印的同时导出 PDF 页面为 PNG – 使用 Aspose.Pdf 的完整 C# + 指南。 +og_title: 将 PDF 转换为 PDF/X-1a,导出页面 PNG 并添加文字水印 +tags: +- Aspose.Pdf +- C# +- PDF processing +title: 将 PDF 转换为 PDF/X-1a,导出页面 PNG 并添加文字水印 +url: /zh/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 将 PDF 转换为 PDF/X‑1a、导出页面 PNG 并添加文字水印 – 完整 C# 指南 + +是否曾需要 **将 PDF 转换为 PDF/X‑1a**,同时想快速获得首页的 PNG 预览并在同一文档上添加自定义文字水印?你并不孤单。在许多生产流水线——比如打印就绪的预检或自动化报告生成——中,你经常会碰到这种组合需求。 + +在本教程中,我们将一步步演示一个完整的工作流,连续完成三件事:**将 PDF 转换为 PDF/X‑1a**、**导出 PDF 页面为 PNG**,以及**在 PDF 中添加文字水印**。代码使用 Aspose.Pdf for .NET 库,提供专业级解决方案,无需深入底层 PDF 细节。完成后,你将拥有一个可直接运行的 C# 程序,可放入任意控制台应用、Azure Function 或 CI 步骤中。 + +> **你将获得** — 完整源码文件、逐步解释、常见坑点提示,以及快速验证输出的方法。 + +## 前置条件 + +- .NET 6.0 或更高(该 API 也兼容 .NET Framework 4.x)。 +- Aspose.Pdf for .NET NuGet 包(`Aspose.Pdf`)——撰写本文时的最新版本为 23.10。 +- 一个输入 PDF(`input.pdf`)和一个 ICC 配置文件(`Coated_Fogra39L_VIGC_300.icc`),放在你可控的文件夹中。 +- 对 C# 和 Visual Studio(或你喜欢的 IDE)有基本了解。 + +如果上述内容对你来说陌生,只需使用以下命令安装 NuGet 包: + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +现在,让我们开始吧。 + +## 步骤 1:加载源 PDF 文档 + +首先打开我们要处理的 PDF。Aspose.Pdf 的 `Document` 类代表整个文件,并采用惰性加载方式,只有在真正访问页面时才会消耗性能。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*为什么重要*:提前加载文档可以得到一个统一的对象,用于后续的转换、渲染和加水印。如果跳过显式加载直接操作不存在的文件,稍后会抛出难以理解的 `FileNotFoundException`。 + +## 步骤 2:使用自定义 ICC 配置文件将文档转换为 PDF/X‑1a + +PDF/X‑1a 是打印就绪 PDF 的事实标准。转换步骤还能嵌入 **输出意图**(ICC 配置文件),让下游 RIP 精确知道颜色应如何解释。 + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*专业提示*:如果需要更严格的错误处理,可将 `ConvertErrorAction.Delete` 替换为 `ConvertErrorAction.Throw`。这样在首次出现合规性问题时即中止转换,适用于自动化 QA 流水线。 + +## 步骤 3:在分析字体的同时导出首页为 PNG + +PNG 预览常用于快速目视检查或生成缩略图。启用 `AnalyzeFonts` 后,Aspose 会确保所有嵌入字体正确栅格化,避免出现缺字的情况。 + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +运行完毕后,你会在源文件旁看到 `page1.png`。用任意图像查看器打开,确认转换效果是否符合预期。 + +## 步骤 4:添加自动调整字体大小的文字水印 + +**文字水印** 是在不修改底层内容流的情况下给 PDF 加水印或注释的便捷方式。设置 `AutoAdjustFontSizeToFitStampRectangle` 后,库会根据你定义的矩形自动缩放文字,防止溢出。 + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*为何使用自动大小*?如果以后将水印文字改为更长的内容(例如动态时间戳),无需手动重新计算字体大小——水印会自动适配。 + +## 步骤 5:保存更新后的 PDF 文档 + +最后,将所有更改写回磁盘。你可以覆盖原文件,也可以生成全新文件;下面的示例会创建 `output.pdf`。 + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +保存完成后,你将拥有: + +1. 一个符合 **PDF/X‑1a** 标准的文件(`output.pdf`)。 +2. 首页的 **PNG 预览**(`page1.png`)。 +3. 完美适配矩形的 **文字水印**。 + +### 快速验证清单 + +| ✅ 检查项 | 验证方法 | +|--------|---------------| +| PDF/X‑1a 合规性 | 在 Adobe Acrobat 中打开 `output.pdf` → *Print Production* → *Preflight*,选择 “PDF/X‑1a:2001”。 | +| PNG 正常 | 用 Windows 照片查看器或任意图像编辑器打开 `page1.png`。 | +| 水印出现 | 浏览 `output.pdf`——第 1 页应居中显示文字 “Auto‑size”。 | + +![convert pdf to pdf/x-1a preview](image.png "convert pdf to pdf/x-1a preview showing stamped page") + +*图片 alt 文本*:**convert pdf to pdf/x-1a preview with auto‑size text stamp** – 展示所有步骤完成后的最终 PDF。 + +## 常见变体与边缘情况 + +- **多页处理** – 若需在每页加水印,可遍历 `pdfDoc.Pages` 并在循环中调用 `AddStamp`。 +- **不同输出格式** – 将 `PdfFormat.PDF_X_1A` 改为 `PdfFormat.PDF_A_1B` 可生成归档用 PDF。 +- **更高分辨率的 PNG** – 在 `RenderingOptions` 中将 `Resolution = 600`,即可得到打印质量的缩略图。 +- **自定义水印字体** – 在添加水印前设置 `autoSizeStamp.Font = FontRepository.FindFont("Arial")`。 +- **错误处理** – 将每个关键步骤包装在 `try/catch` 中,并记录 `ConversionException` 或 `FileNotFoundException`,便于调试。 + +## 完整可运行示例(复制粘贴即用) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Setup paths + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Load the source document + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Convert to PDF/X‑1a (print‑ready) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Export first page as PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Add auto‑sizing text stamp (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/chinese/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..150f3eb3b --- /dev/null +++ b/pdf/chinese/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,268 @@ +--- +category: general +date: 2026-03-29 +description: 使用 Aspose.PDF 在 C# 中将 PDF 保存为 HTML。学习如何将 PDF 转换为 HTML、省略图像以及在同一教程中验证 + PDF 签名。 +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: zh +og_description: 使用 Aspose.PDF 在 C# 中将 PDF 保存为 HTML。本指南展示了如何将 PDF 转换为 HTML、跳过图像以及验证 + PDF 数字签名。 +og_title: 使用 Aspose 将 PDF 保存为 HTML – 完整 C# 指南 +tags: +- Aspose.PDF +- C# +- PDF processing +title: 使用 Aspose 将 PDF 保存为 HTML – 完整的 C# 指南 +url: /zh/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 使用 Aspose 将 PDF 保存为 HTML – 完整 C# 指南 + +是否曾想过在 **将 PDF 保存为 HTML** 时不把每张嵌入的图片都拉进来?也许你正在构建一个轻量级的网页预览,而额外的图片负载正拖慢页面速度。好消息是,你不需要自己写解析器——Aspose.PDF 已经帮你完成了繁重的工作。在本教程中,我们将 **将 PDF 转换为 HTML**,去除图片,然后 **验证 PDF 签名**,确保文档未被篡改。 + +我们会逐行讲解代码,说明 *为什么* 每个设置很重要,并且会涉及大文件或缺失签名等边缘情况。完成后,你将拥有一个可直接运行的 C# 控制台应用,生成干净的 HTML 文件,并给出数字签名的 true/false 结果。 + +## 你将学到 + +- 使用 Aspose.PDF 加载 PDF 文件。 +- 使用 `HtmlSaveOptions` **将 PDF 转换为 HTML** 并省略图片。 +- 将生成的 HTML 保存到磁盘。 +- 创建 `PdfFileSignature` 对象 **验证 PDF 签名**。 +- 解释布尔结果并处理常见陷阱。 +- 性能优化与故障排查的额外技巧。 + +### 前置条件 + +- .NET 6.0 或更高(代码同样适用于 .NET Framework 4.7+)。 +- Aspose.PDF for .NET NuGet 包(版本 23.12 或更新)。 +- 一个已签名的 PDF(`input.pdf`),其中包含名为 “Sig1” 的签名。 +- 对 C# 和控制台应用有基本了解。 + +> **专业提示:** 如果尚未安装 Aspose.PDF 包,请在项目文件夹中运行 `dotnet add package Aspose.PDF`。 + +--- + +## 第 1 步:加载源 PDF 文档 + +在进行任何操作之前,需要先在内存中获取 PDF 的表示。Aspose.PDF 的 `Document` 类读取文件并构建页面、资源和注释的树。 + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**为什么这很重要:** 只加载一次文档可以让内存使用保持可预测。如果你计划在循环中处理大量 PDF,考虑在调用 `pdfDocument.Dispose()` 后复用同一个 `Document` 实例。 + +--- + +## 第 2 步:配置 HTML 保存选项 – 跳过图片 + +我们希望 **将 PDF 保存为 HTML**,但不包含沉重的图片数据。`HtmlSaveOptions` 提供细粒度控制,`SkipImages` 标志会让 Aspose 完全省略 `` 标签。 + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**为何要跳过图片:** 对于预览门户或移动优先的设计,每一个千字节都很关键。去除图片还能规避如果源 PDF 包含受版权保护的图形时的授权问题。 + +--- + +## 第 3 步:导出不含图片的 HTML 文件 + +现在真正写入 HTML 文件。`Save` 方法会遵循前面设置的选项。 + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**你将看到的结果:** 一个 `.html` 文件,包含文本内容、表格以及矢量图形(如果有),但没有 `` 标签。用浏览器打开即可看到原 PDF 的干净、无图像渲染。 + +--- + +## 第 4 步:为同一文档准备签名验证器 + +Aspose.PDF 的 `PdfFileSignature` 类让我们检查 PDF 中嵌入的数字签名。我们将创建一个实例,指向已经加载的同一个 `Document`。 + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**资源处理说明:** `using` 语句确保验证器在使用完毕后释放所有本机句柄,防止 Windows 上出现文件锁定问题。 + +--- + +## 第 5 步:使用 SHA‑3‑256 验证名为 “Sig1” 的签名 + +大多数 PDF 使用 SHA‑256 或 SHA‑1,但 Aspose 也支持更新的 SHA‑3 系列。这里我们显式请求 `Sha3_256`。如果签名缺失或算法不匹配,方法会返回 `false`。 + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**“false” 可能的含义:** + +1. **未找到签名** – 也许 PDF 使用了不同的名称;可使用 `signatureVerifier.GetSignatureNames()` 列出所有签名。 +2. **算法不匹配** – PDF 可能是用 SHA‑256 签名的;尝试 `DigestHashAlgorithm.Sha256`。 +3. **文档被篡改** – 签名后任何更改都会使哈希失效,返回 `false`。 + +--- + +## 处理常见边缘情况 + +### 大文件 PDF + +如果源 PDF 超过几百兆,考虑启用 **节省内存模式**: + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +该模式按需流式读取页面,降低 RAM 压力。 + +### 缺失签名 + +当不确定签名名称时,可枚举所有签名: + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +在调用 `VerifySignature` 前,从列表中挑选正确的名称。 + +### 浏览器兼容性 + +某些浏览器对 Aspose 默认的 CSS 支持不佳。将 `htmlSaveOptions.EmbedCss = true`(如前所示)设为内联样式,可提升文件的可移植性。 + +--- + +## 完整工作示例 + +下面是完整的、可直接复制粘贴的程序,包含所有步骤、错误处理以及可选诊断。 + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**预期的控制台输出**(路径会有所不同): + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +如果签名无效,最后一行会显示 `Signature valid: False`。 + +--- + +## 常见问答 + +**问:我可以在转换为 HTML 时保留图片吗?** +答:当然可以。只需将 `SkipImages = false`(或省略该属性),Aspose 会在 HTML 同级的子文件夹中为每张图片生成单独的文件。 + +**问:这在 Linux 上能运行吗?** +答:可以。Aspose.PDF 是跨平台的,只需确保 `YOUR_DIRECTORY` 路径使用正斜杠或 `Path.Combine`。 + +**问:如果需要使用自定义证书验证 PDF 数字签名怎么办?** +答:使用接受 `X509Certificate2` 对象的 `PdfFileSignature.ValidateSignature` 重载。该方法还会返回详细的 `SignatureInfo`,供你进一步检查。 + +**问:`aspose convert pdf` 只能用于 C# 吗?** +答:不是。相同的 API 也提供给 Java、Python 以及其他 .NET 语言。加载、设置选项、保存、验证的概念保持一致。 + +--- + +## 结论 + +现在,你已经掌握了使用 Aspose.PDF **将 PDF 保存为 HTML**、去除不必要图片,并在同一个简洁的 C# 程序中 **验证 PDF 签名** 的完整流程。步骤清晰:加载、配置、导出、验证。通过可选的诊断和边缘情况处理,你可以将此模式扩展到批处理任务、Web 服务或桌面工具。 + +准备好下一步了吗?尝试 **在保留图片的情况下转换 PDF 为 HTML**,或使用不同的哈希算法 **验证 PDF 数字签名**,以匹配你自己的 PKI。你也可以探索 Aspose 的 PDF 转 DOCX 功能,或在导出前合并多个 PDF——这些都是本工作流的自然延伸。 + +祝编码愉快,愿你的 HTML 预览保持轻量,签名保持可信! + +![保存 PDF 为 HTML 示例](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/chinese/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..f98a2602a --- /dev/null +++ b/pdf/chinese/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-03-29 +description: 使用 C# 和 Aspose.PDF 将 PDF 保存为 HTML。学习如何在 PDF 中插入页面、添加空白 PDF 页面,以及在一个流程中创建 + PKCS7 分离签名。 +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: zh +og_description: 使用 Aspose.PDF 在 C# 中将 PDF 保存为 HTML。本指南展示了如何加载 PDF、插入页面、添加空白页、使用 PKCS7 + 签名以及导出为 HTML。 +og_title: 使用 C# 将 PDF 保存为 HTML – 完整编程教程 +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: 使用 C# 将 PDF 保存为 HTML – 完整的逐步指南 +url: /zh/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 使用 C# 将 PDF 保存为 HTML – 完整分步指南 + +是否曾需要 **save PDF as HTML**,但不确定如何在保持布局完整的同时对源文档进行微调?你并非唯一面临此问题的开发者——在转换之前,大家经常要处理分页修正、空白页和数字签名等问题。在本教程中,我们将演示一个完整且统一的工作流,并顺带介绍如何 **insert page into PDF**、**add blank PDF page** 和 **create PKCS7 detached signature**。 + +阅读完本指南后,你将拥有一个可直接运行的 C# 程序,能够加载已有的 PDF,重新排版页面,对首页进行签名,最后以 Unicode CMap 为优先导出为 HTML。没有悬挂的引用,只有一个可直接嵌入任何 .NET 项目的自包含解决方案。 + +## 您需要的内容 + +- **Aspose.PDF for .NET**(最新版本,本文撰写时为 23.x)。 +- **.NET 6.0** 或更高版本——代码同样可以在 .NET Framework 4.7 上编译,但 .NET 6 提供最佳性能。 +- 一个 **certificate file**(`.pfx`)及其用于 PKCS7 签名的密码。 +- 需要处理的输入 PDF(`input.pdf`)。 + +如果你已经准备好这些,就可以直接进入代码部分。否则,请从官方站点获取免费 30 天的 Aspose 试用版;API 与付费版完全一致。 + +--- + +## 第 1 步 – 在 C# 中加载 PDF 文档(主要操作) + +首先要把 PDF 加载到内存中。Aspose 的 `Document` 类负责所有繁重的工作。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*Why this matters:* 加载文件后会得到一个可变的对象模型。从这里你可以 **insert page into PDF**、添加空白页,或在不触及磁盘上原始文件的情况下应用签名。 + +--- + +## 第 2 步 – 插入页面并添加空白 PDF 页面 + +有时源 PDF 会出现分页异常——可能缺页或出现重复页。下面的代码将在第 1 页后复制第 2 页,然后在文档末尾追加一个完全空白的页面。 + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*Pro tip:* `UpdatePagination()` 会重新计算由 Aspose 在页脚或页眉中生成的页码。跳过此步骤可能导致最终 HTML 中出现过时的页码。 + +--- + +## 第 3 步 – 创建 PKCS7 分离签名(SHA‑512) + +分离的 PKCS7 签名能够在不将签名数据直接嵌入 PDF 内容流的情况下验证文档完整性。我们将使用存放在 PFX 文件中的证书。 + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*Why SHA‑512?* 它提供比 SHA‑256 更强的哈希,同时仍被广泛支持。如果需要兼容旧标准,可将 `Sha512` 替换为 `Sha256`。 + +--- + +## 第 4 步 – 使用可见矩形将数字签名应用于第 1 页 + +我们将在首页放置一个可见的签名字段。矩形定义了签名图像(或占位符)出现的位置。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*Edge case:* 如果目标页已经包含同名的表单字段,API 会抛出异常。请确保字段名称唯一,或在签名前清除已有字段。 + +--- + +## 第 5 步 – 配置 HTML 保存选项以优先使用 Unicode CMap + +在转换为 HTML 时,Aspose 可以将字体嵌入为 base‑64、使用子集,或依赖 Unicode CMap。优先使用 Unicode 可减小文件体积并提升文本可搜索性。 + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*What does this do?* 它指示转换器在可能的情况下优先使用 Unicode CMap 而非自定义字体嵌入,这对多语言 PDF 来说尤为理想。 + +--- + +## 第 6 步 – 将已签名文档保存为 HTML + +最后,将处理后的 PDF 导出为 HTML 文件夹(Aspose 会创建一个包含 CSS、图片等支持文件的目录)。 + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +如果在浏览器中打开 `cmap.html`,你将看到原始 PDF 布局以 HTML 形式呈现,并在第 1 页显示可见的签名图像。 + +--- + +## 完整工作示例(所有步骤合并) + +下面是可以直接复制粘贴到控制台应用中的完整程序。它包含所有必要的 `using` 指令以及错误处理。 + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**Expected result:** +- `cmap.html`(主 HTML 文件) +- `cmap_files` 文件夹,内含 CSS、图片和字体资源。 +- 首页在你设置的坐标处显示一个可见的签名框。 + +--- + +## 常见问题与边缘情况 + +| 问题 | 回答 | +|----------|--------| +| *我可以使用自签名证书吗?* | 是的,Aspose.PDF 接受任何有效的 PFX。只需记住浏览器可能会将签名标记为不受信任。 | +| *如果我需要签署多个页面怎么办?* | 为每个页面创建单独的 `PdfFileSignature` 调用,或使用循环更新 `pageNumber`。 | +| *有没有办法嵌入签名图像而不是矩形?* | 向 `PdfFileSignature.Sign` 提供带有图像流的 `SignatureAppearance` 对象。 | +| *我的 PDF 有加密内容——还能转换吗?* | 先使用 `pdfDoc.Decrypt("ownerPassword")` 解密,然后执行步骤。 | +| *HTML 会保留原始 PDF 中的超链接吗?* | Aspose 默认保留链接注释。如果发现链接缺失,请设置 `htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;` | + +--- + +## 总结 + +我们已经演示了如何 **save PDF as HTML**,同时实现 **insert page into PDF**、**add blank PDF page** 与 **create PKCS7 detached signature**——全部使用 C# 完成。该工作流线性、易于调试,并且可完全自定义以适配更大型的项目。 + +接下来,你可能想探索: + +- **Batch processing** – 循环遍历文件夹中的 PDF 并逐个转换。 +- **Custom CSS** – 调整 `HtmlSaveOptions.CustomCss` 以匹配站点的样式。 +- **Advanced signatures** – 使用时间戳服务器或 LTV(长期验证)实现合规级别的签名。 + +尝试这些方案,你将拥有一个既 SEO 友好又适合 AI 助手引用的强大 PDF‑to‑HTML 流程。祝编码愉快! + +--- + +![显示 PDF 已加载、页面已插入、签名已应用,然后输出 HTML 的示意图](/images/save-pdf-as-html-workflow.png "保存 PDF 为 HTML 工作流") + +*图片替代文字:* **保存 PDF 为 HTML 工作流图示** + +{{< /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 40a1290a4..02b83b715 100644 --- a/pdf/chinese/net/digital-signatures/_index.md +++ b/pdf/chinese/net/digital-signatures/_index.md @@ -58,12 +58,16 @@ Aspose.PDF Net 代码教程 ### [在 C# 中验证 PDF 签名 – 验证数字签名 PDF 的完整指南](./verify-pdf-signature-in-c-complete-guide-to-validate-digital/) 提供在 C# 环境下使用 Aspose.PDF 验证 PDF 数字签名的完整步骤和代码示例。 + ### [加载 PDF 文档 C# – 转换为 PDF/X‑4 并列出签名](./load-pdf-document-c-convert-to-pdf-x-4-list-signatures/) 演示如何使用 Aspose.PDF for .NET 加载 PDF 文档,转换为 PDF/X‑4 并列出其中的数字签名。 ### [使用 Aspose 验证 PDF 签名并将 PDF 转换为 HTML](./validate-pdf-signature-with-aspose-convert-pdf-to-html/) 了解如何使用 Aspose 验证 PDF 签名并将 PDF 转换为 HTML,以实现文档的安全展示。 +### [如何对 PDF 进行签名并添加图像 – 完整 C# 指南](./how-to-sign-pdf-and-add-images-complete-c-guide/) +提供在 C# 中使用 Aspose.PDF 对 PDF 进行签名并嵌入图像的完整步骤和代码示例。 + ## 其他资源 - [Aspose.PDF 用于网络文档](https://docs.aspose.com/pdf/net/) diff --git a/pdf/chinese/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/chinese/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..bee6280d4 --- /dev/null +++ b/pdf/chinese/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-03-29 +description: 如何在 C# 中使用数字签名为 PDF 加签并添加裁剪后的图像。学习轻松实现 PDF 添加数字签名、裁剪图像以及插入图像。 +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: zh +og_description: 如何使用 Aspose.Pdf 在 C# 中对 PDF 进行数字签名并嵌入裁剪后的图像。请遵循本指南获取完整解决方案。 +og_title: 如何对PDF签名并添加图片 – 步骤详解 C# 教程 +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: 如何对PDF签名并添加图片 – 完整的C#指南 +url: /zh/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何签署 PDF 并添加图像 – 完整 C# 指南 + +是否曾想过以编程方式 **how to sign PDF** 文件,同时插入自定义图片?也许你正在构建审批工作流,需要一个具有法律约束力的签名 *以及* 同一页上签署人照片的缩略图。简而言之,你想要 **add digital signature pdf** 内容,裁剪该图片,然后 **add image to pdf**,轻松完成。 + +本教程将手把手带你完成每一步——从加载 ECDSA PKCS#7 证书到裁剪 JPEG 并将其盖章到已签名的页面。结束时,你将拥有一个可直接运行的 C# 文件,它会在第 1 页签名、将照片裁剪至 400 × 400 px,并精确放置。无需外部脚本、无需魔法,只有清晰的代码和说明。 + +## Prerequisites + +- .NET 6.0 或更高版本(代码同样适用于 .NET Framework 4.7+) +- **Aspose.Pdf for .NET** NuGet 包(版本 23.9 或更新) +- 一个 PKCS#7(`.pfx`)格式的 ECDSA P‑256 证书及其密码 +- 你想嵌入的 JPEG 图像(例如 `photo.jpg`) + +> **Pro tip:** 将证书文件置于源码控制之外,并使用密钥管理器保护密码。 + +--- + +## Step 1: Set Up the Project and Imports + +首先,创建一个控制台应用(或将其集成到已有服务中)。添加 Aspose.Pdf 引用: + +```bash +dotnet add package Aspose.Pdf +``` + +然后引入所需的命名空间: + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +这些 `using` 语句让你能够访问后续需要的 `Document`、`Signature` 和 `Rectangle` 类。 + +## Step 2: Load the PDF and Prepare the Signature + +我们将打开已有的 PDF(`source.pdf`),并创建一个使用 PKCS#7 分离签名的 **digital signature pdf** 对象。证书采用 ECDSA P‑256 密钥,广泛符合合规要求。 + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**Why this matters:** 使用分离的 PKCS#7 签名可以在保持原始 PDF 内容不变的同时嵌入加密哈希。这是实现具法律效力的 PDF 的行业标准做法。 + +## Step 3: Apply the Digital Signature to a Specific Page + +接下来,我们将在 **第 1 页** 放置可见的签名字段。矩形定义了签名框出现的位置(坐标单位为点,1 英寸 = 72 点)。 + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +如果不需要可见框,将 `isVisible` 设置为 `false`。`signatureRect` 可根据文档布局自行调整。 + +## Step 4: Open the Image Stream and Define Crop Areas + +我们将 JPEG 文件读取为流,并指定一个 **source rectangle**,选取左上角的 400 × 400 像素区域。这就是 **crop image for pdf** 操作。 + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **Edge case:** 如果你的图像小于 400 × 400,裁剪会自动限制在图像的实际尺寸——不会抛出异常。 + +## Step 5: Define Where the Cropped Image Should Appear + +接着,设置 PDF 页面上的 **destination rectangle**。本例中我们将图像放在 (50, 50) 位置,大小为 200 × 200 点(约 2.78 英寸正方形)。 + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +随意实验:修改 X/Y 坐标可移动图片,调整宽高可实现缩放。 + +## Step 6: Insert the Cropped Image onto the Signed Page + +最后,我们将图像添加到 **第 1 页**(即已签名的页面)。使用的 `AddImage` 重载接受源矩形和目标矩形,一次性完成裁剪与放置。 + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +在内部,Aspose.Pdf 会提取 400 × 400 像素区域,将其重新缩放至 200 × 200 点,并写入 PDF 内容流。 + +## Step 7: Save the Signed and Image‑Enhanced PDF + +完成所有修改后,持久化文档。你可以覆盖原文件,也可以写入新文件。 + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +当你在 Adobe Acrobat 或任意 PDF 查看器中打开 `output_signed.pdf` 时,会看到: + +- 在你指定坐标处的可见签名字段。 +- 裁剪后的照片位于第 1 页的 (50, 50) 位置。 +- 若查看器信任你的证书,数字签名将被验证通过。 + +## Frequently Asked Questions (FAQ) + +| Question | Answer | +|----------|--------| +| **Can I sign a different page?** | 将 `signature.Sign` 中的 `pageNumber` 参数改为任意有效的页码(从 1 开始)。 | +| **What if I need multiple signatures?** | 为每个页面或位置创建新的 `Signature` 实例,若使用相同证书可复用同一个 `pkcsSignature`。 | +| **Is the image cropping limited to rectangles?** | 是的,Aspose.Pdf 的 `AddImage` 只能处理矩形区域。若需复杂形状,需在嵌入前使用如 System.Drawing 等方式预处理图像。 | +| **How do I make the signature invisible?** | 将 `isVisible` 设置为 `false` 并省略 `signatureRect`。签名仍然在加密层面有效。 | +| **What formats can I embed besides JPEG?** | PNG、BMP、GIF、TIFF 均受支持。只需更改文件路径并确保流读取到正确的字节即可。 | + +## Full Working Example + +下面是完整的、可自行运行的程序。复制粘贴到 `Program.cs`,修改路径后运行。 + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**Expected result:** 打开 `output_signed.pdf` 时,会看到一个位于 (100 × 100 → 300 × 300 点) 的签名字段,以及一个来源于 `photo.jpg` 左上角、尺寸为 200 × 200 点的图片。签名会根据提供的 ECDSA 证书进行验证。 + +## Wrapping Up + +我们已经完整演示了 **how to sign PDF** 文件、如何在特定页面 **add digital signature pdf**、如何 **crop image for pdf**,以及最终如何使用 Aspose.Pdf 在 C# 中 **add image to pdf**。从加载证书到保存最终文档的整个流程,都浓缩在一个易读的源文件中。 + +如果你已经准备好迎接下一个挑战,可以考虑: + +- 在不同页面添加 **multiple signatures**(使用 “digital signature pdf page” 概念)。 +- 嵌入指向验证服务的 **QR 码**。 +- 在 ASP.NET Core API 中自动化此流程,实现即时 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-security-and-signatures/_index.md b/pdf/chinese/net/programming-with-security-and-signatures/_index.md index 1000db813..4cc2c5a3c 100644 --- a/pdf/chinese/net/programming-with-security-and-signatures/_index.md +++ b/pdf/chinese/net/programming-with-security-and-signatures/_index.md @@ -35,6 +35,7 @@ | [使用签名字段通过智能卡签名](./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 文件 – 使用 Aspose.Pdf 的完整 C# 指南](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) 了解如何使用 Aspose.Pdf for .NET 在 C# 中修复受损的 PDF 文件,分步指南帮助您恢复文档完整性。| +| [验证 PDF 数字签名 – 完整 C# 指南](./validate-pdf-digital-signature-complete-c-guide/) 了解如何使用 Aspose.PDF for .NET 在 C# 中验证 PDF 数字签名并检查其完整性。分步指南帮助您确保文档安全。| {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/chinese/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/chinese/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..f35068e81 --- /dev/null +++ b/pdf/chinese/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-03-29 +description: 快速验证 PDF 数字签名。了解如何在 C# 中使用 Aspose.Pdf 验证 PDF 签名、检查 PDF 签名状态以及检测被篡改的 PDF。 +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: zh +og_description: 在 C# 中验证 PDF 数字签名。本教程展示如何使用 Aspose.Pdf 验证 PDF 签名、检查签名完整性以及检测被篡改的 PDF。 +og_title: 验证 PDF 数字签名 – 完整 C# 指南 +tags: +- C# +- Aspose.Pdf +- PDF Security +title: 验证 PDF 数字签名 – 完整 C# 指南 +url: /zh/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-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 签名** 状态,并在出现问题之前 **检测被篡改的 PDF** 文件。 + +## 您需要的环境 + +- **.NET 6.0 或更高版本**(代码同样适用于 .NET Framework,但 .NET 6 是最佳选择)。 +- **Aspose.Pdf for .NET** – 可从 NuGet 获取 (`Install-Package Aspose.Pdf`)。 +- 一个你想要测试的 **已签名 PDF**。如果没有,可使用 Adobe Acrobat 或任意 PDF 签名工具创建一个简单的签名文档。 + +> 小贴士:将 PDF 文件放在项目根目录之外;使用相对路径如 `./Samples/signed.pdf` 即可,避免不小心提交机密文件。 + +## 步骤实现 + +### ## 第一步 – 安装并引用 Aspose.Pdf + +首先,将 NuGet 包添加到项目中: + +```powershell +dotnet add package Aspose.Pdf +``` + +或者,如果你使用的是 Package Manager 控制台: + +```powershell +Install-Package Aspose.Pdf +``` + +包安装完成后,Visual Studio 会自动添加 `using Aspose.Pdf;` 命名空间。无需额外的 DLL 操作。 + +### ## 第二步 – 加载已签名的 PDF 文档 + +现在我们真正打开文件。`using` 语句确保文档能够正确释放,这在处理大 PDF 时尤为重要。 + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +> **为什么这很重要:** 加载文档后我们即可访问 `DigitalSignatureInfo` 对象,这是所有签名相关查询的入口。 + +### ## 第三步 – 获取数字签名信息 + +Aspose.Pdf 将底层 PKI 细节封装在友好的 API 中。获取 `DigitalSignatureInfo` 属性,你就拥有了检查 **PDF 签名** 健康状况所需的一切。 + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +如果 PDF 包含多个签名,`signatureInfo` 会将它们聚合,提供 `Count`、`Certificates`、`IsCompromised` 等属性。单签名文件则只会有一个条目。 + +### ## 第四步 – 判断签名是否受损 + +`IsCompromised` 标志告诉你文档在签名后是否被修改。`true` 表示 PDF 已被篡改——正是我们想要 **检测被篡改的 PDF** 的情况。 + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +如果需要更彻底地 **验证 PDF 签名**(例如证书链验证),也可以检查 `signatureInfo.Certificates` 并对每个证书调用 `Validate()`。对于大多数场景,`IsCompromised` 已足够。 + +### ## 第五步 – 将结果输出到控制台 + +最后,让用户了解检测结果。我们会打印友好的信息,并返回适当的退出码,以便自动化脚本使用。 + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### 预期输出 + +``` +Signature compromised: False +``` + +如果你刻意篡改 PDF(例如添加一个多余字符),输出会变为 `True`。这时就表明文档完整性已被破坏。 + +### ## 处理边缘情况和常见陷阱 + +#### 1. 多重签名 + +当 PDF 有多个签署人时,`IsCompromised` 反映的是*整体*状态——只要 **任意** 一个签名失效,标志就会变为 `true`。若要定位具体是哪位签署人出现问题: + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. 缺少签名 + +如果 PDF 根本没有签名,`signatureInfo.Count` 将为 `0`。你需要防止产生虚假的安全感: + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. 损坏的 PDF 文件 + +损坏的文件会抛出 `PdfException`。请将加载逻辑放在 try‑catch 中,以提供清晰的错误信息: + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. 证书验证(高级) + +如果需要确保签名证书仍然有效(未被吊销且在有效期内),可以调用: + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +此步骤将你从简单的 **检查 PDF 签名** 推进到完整的 **如何验证 PDF 签名** 工作流。 + +### ## 完整工作示例 + +将所有内容组合在一起,下面是完整的、可直接运行的程序: + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +在命令行运行该程序: + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +你将看到一份清晰的报告,说明 PDF 是否完整、涉及哪些签署人,以及它们的证书是否仍然可信。 + +## 可视化概览 + +下面是一张快速示意图,展示了从 **加载 PDF** 到 **输出验证结果** 的流程。对于构建更大文档处理管道的架构设计,这是一份实用的参考。 + +![validate pdf digital signature workflow diagram](image.png "Diagram showing PDF load → DigitalSignatureInfo → IsCompromised check") + +*Alt text: validate pdf digital signature workflow diagram* + +## 结论 + +我们刚刚使用 Aspose.Pdf 在 C# 中实现了一个 **完整的、端到端的 PDF 数字签名验证** 方案。关键要点: + +- 使用 `Document` 加载 PDF。 +- 获取 `DigitalSignatureInfo` 并检查 `IsCompromised` 以 **检测被篡改的 PDF**。 +- 优雅地处理多重签名、缺少签名以及文件损坏等情况。 +- 可选地验证签名证书,以完成 **如何验证 PDF 签名** 的完整检查清单。 + +从这里你可以进一步扩展逻辑——将验证结果存入数据库、在 Web API 中拒绝未签名的上传,或与文档管理系统集成。如果你对其他 PDF 安全功能感兴趣,可研究 **检查 PDF 签名时间戳**、**添加新签名** 或 **加密 PDF**。 + +对边缘情况有疑问,或想了解如何使用 iText 7 等其他库 **验证 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/conversion-export/_index.md b/pdf/czech/net/conversion-export/_index.md index de6240eeb..5cddc60c1 100644 --- a/pdf/czech/net/conversion-export/_index.md +++ b/pdf/czech/net/conversion-export/_index.md @@ -53,6 +53,9 @@ Výukový program pro kódování Aspose.PDF Net ### [Převod PDF stránek do PNG pomocí Aspose.PDF .NET: Komplexní průvodce](./convert-pdf-pages-to-png-aspose-net/) Naučte se, jak převést stránky PDF do vysoce kvalitních obrázků PNG pomocí Aspose.PDF pro .NET. Postupujte podle tohoto podrobného návodu a efektivně automatizujte proces převodu. +### [Převod PDF na PDF/X-1a, export stránky PNG a přidání textové razítka](./convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/) +Naučte se převést PDF do formátu PDF/X-1a, exportovat stránky jako PNG a přidat textové razítko pomocí Aspose.PDF pro .NET. + ### [Převod PDF do BMP pomocí Aspose.PDF pro .NET: Podrobný návod](./convert-pdf-to-bmp-aspose-pdf-net/) Naučte se, jak převést stránky PDF do vysoce kvalitních obrázků BMP pomocí Aspose.PDF pro .NET s tímto komplexním průvodcem. @@ -108,7 +111,7 @@ Naučte se, jak bez problémů převádět dokumenty PDF/A do standardních PDF Naučte se, jak pomocí Aspose.PDF .NET transformovat PDF dokumenty do interaktivních, webových formátů HTML, včetně vlastních CSS stylů. ### [Převod PS do PDF v C# pomocí Aspose.PDF .NET: Podrobný návod](./convert-ps-to-pdf-aspose-dotnet-csharp/) -Naučte se, jak efektivně převádět soubory PostScript do PDF ve vašich .NET aplikacích pomocí Aspose.PDF. Postupujte podle tohoto komplexního průvodce s příklady kódu. +Naučte se, jak efektivně převádět soubory PostScript do PDF ve svých .NET aplikacích pomocí Aspose.PDF. Postupujte podle tohoto komplexního průvodce s příklady kódu. ### [Převod PDF souborů RGB do stupňů šedi pomocí Aspose.PDF pro .NET | Komplexní průvodce](./convert-rgb-pdfs-to-grayscale-aspose-pdf-net/) Naučte se, jak efektivně převádět PDF soubory ve formátu RGB do stupňů šedi pomocí nástroje Aspose.PDF pro .NET. Tento podrobný návod zajišťuje konzistenci návrhu a zmenšení velikosti souboru. @@ -227,6 +230,12 @@ Výukový program pro kódování Aspose.PDF Net ### [Konverze PDF do TIFF v .NET pomocí Aspose.PDF: Podrobný návod](./pdf-to-tiff-conversion-aspose-pdf-net/) Naučte se, jak převádět dokumenty PDF do obrázků TIFF pomocí Aspose.PDF pro .NET. Osvojte si vlastní barevné hloubky a pokročilé techniky zpracování obrazu. +### [Uložení PDF jako HTML pomocí Aspose – Kompletní průvodce C#](./save-pdf-as-html-with-aspose-complete-c-guide/) +Naučte se, jak pomocí Aspose.PDF v C# převést PDF soubor na HTML s kompletním krok za krokem návodem. + +### [Uložení PDF jako HTML v C# – Kompletní průvodce krok za krokem](./save-pdf-as-html-with-c-complete-step-by-step-guide/) +Naučte se, jak pomocí C# a Aspose.PDF převést PDF soubor na HTML s podrobným krok za krokem návodem. + ## Další zdroje - [Aspose.PDF pro síťovou dokumentaci](https://docs.aspose.com/pdf/net/) diff --git a/pdf/czech/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/czech/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..92a4f845b --- /dev/null +++ b/pdf/czech/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-03-29 +description: převést PDF na PDF/X‑1a a exportovat stránku PDF jako PNG v jednom toku + – také se naučte, jak přidat textové razítko do PDF pomocí Aspose.Pdf (C#). +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: cs +og_description: převod PDF na PDF/X‑1a a export stránky PDF do PNG při přidání textové + razítka PDF – kompletní průvodce C# s Aspose.Pdf. +og_title: převést PDF na PDF/X-1a, exportovat stránku jako PNG a přidat textové razítko +tags: +- Aspose.Pdf +- C# +- PDF processing +title: převést PDF na PDF/X‑1a, exportovat stránku jako PNG a přidat textové razítko +url: /cs/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# převod pdf na pdf/x-1a, export stránky png a přidání textového razítka – Kompletní C# průvodce + +Už jste někdy potřebovali **convert pdf to pdf/x-1a**, ale také chtěli rychlý PNG náhled první stránky a vlastní textové razítko ve stejném dokumentu? Nejste v tom sami. V mnoha výrobních řetězcích—například při předkontrole tiskových souborů nebo automatickém generování reportů—často narazíte na tuto přesnou kombinaci požadavků. + +V tomto tutoriálu projdeme jedním souvislým pracovním postupem, který provádí tři věci po sobě: **convert pdf to pdf/x-1a**, **export pdf page png** a **add text stamp pdf**. Kód používá knihovnu Aspose.Pdf pro .NET, takže získáte profesionální řešení, aniž byste se museli zabývat nízkoúrovňovými interními částmi PDF. Na konci budete mít spustitelný program v C#, který můžete vložit do libovolné konzolové aplikace, Azure Function nebo CI kroku. + +> **Co získáte** – kompletní zdrojový soubor, podrobné vysvětlení krok za krokem, tipy na běžné úskalí a rychlý způsob, jak ověřit výstup. + +## Požadavky + +- .NET 6.0 nebo novější (API funguje také s .NET Framework 4.x). +- NuGet balíček Aspose.Pdf pro .NET (`Aspose.Pdf`) – verze 23.10 je aktuální v době psaní. +- Vstupní PDF (`input.pdf`) a soubor ICC profilu (`Coated_Fogra39L_VIGC_300.icc`) umístěné ve složce, kterou ovládáte. +- Základní znalost C# a Visual Studio (nebo vašeho oblíbeného IDE). + +Pokud vám některý z těchto pojmů není známý, jednoduše nainstalujte NuGet balíček pomocí: + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +Pojďme se ponořit dál. + +## Krok 1: Načtení zdrojového PDF dokumentu + +První věc, kterou uděláme, je otevřít PDF, na kterém chceme pracovat. Třída `Document` z Aspose.Pdf představuje celý soubor a načítá obsah líně, takže neplatíte výkonový trest, dokud se skutečně nedotknete stránek. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*Proč je to důležité*: Včasné načtení dokumentu nám poskytuje jediný objekt, který můžeme předávat pro konverzi, renderování a razítkování. Pokud přeskočíte explicitní načtení a pokusíte se pracovat s neexistujícím souborem, později obdržíte nejasnou výjimku `FileNotFoundException`. + +## Krok 2: Převod dokumentu na PDF/X‑1a pomocí vlastního ICC profilu + +PDF/X‑1a je de‑facto standard pro tiskové PDF. Krok konverze vám také umožňuje vložit **Output Intent** (ICC profil), aby downstream RIPy přesně věděly, jak mají být barvy interpretovány. + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*Tip*: Pokud potřebujete přísnější zpracování chyb, nahraďte `ConvertErrorAction.Delete` za `ConvertErrorAction.Throw`. Tím se konverze přeruší při první nekompatibilitě, což je užitečné pro automatizované QA pipeline. + +## Krok 3: Export první stránky jako PNG při analýze fontů + +PNG náhled je často vyžadován pro rychlé vizuální kontroly nebo generování miniatur. Povolením `AnalyzeFonts` zajistí Aspose, že všechny vložené fonty jsou správně rasterizovány, čímž se vyhnete překvapením s chybějícími glyfy. + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +Po spuštění najdete `page1.png` vedle vašich zdrojových souborů. Otevřete jej v libovolném prohlížeči obrázků a ověřte, že konverze vypadá správně. + +## Krok 4: Přidání textového razítka, které automaticky upravuje velikost písma + +**Textové razítko** je praktický způsob, jak vodoznakovat nebo anotovat PDF, aniž byste měnili podkladové content streamy. Nastavením `AutoAdjustFontSizeToFitStampRectangle` zajistíte, že knihovna zmenší nebo zvětší text tak, aby nikdy nepřetekl definovaný obdélník. + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*Proč automatická velikost?* Pokud později změníte text razítka na delší (např. dynamický časový údaj), nebudete muset ručně přepočítávat velikosti písma – razítko se přizpůsobí za běhu. + +## Krok 5: Uložení aktualizovaného PDF dokumentu + +Nakonec vše zapíšete zpět na disk. Můžete buď přepsat původní soubor, nebo vytvořit zcela nový; níže uvedený příklad vytváří `output.pdf`. + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +Když se uložení dokončí, máte: + +1. Soubor **PDF/X‑1a** kompatibilní (`output.pdf`). +2. PNG **náhled** první stránky (`page1.png`). +3. **Textové razítko**, které přesně zapadá do svého obdélníku. + +### Rychlý kontrolní seznam ověření + +| ✅ Kontrola | Jak ověřit | +|------------|------------| +| Soulad s PDF/X‑1a | Otevřete `output.pdf` v Adobe Acrobat → *Print Production* → *Preflight* a vyberte “PDF/X‑1a:2001”. | +| PNG vypadá správně | Otevřete `page1.png` ve Windows Photo Viewer nebo v libovolném editoru obrázků. | +| Razítko se zobrazuje | Projděte `output.pdf` – text “Auto‑size” by měl být vycentrován na stránce 1. | + +![náhled převodu pdf na pdf/x-1a s automaticky velikostním textovým razítkem](image.png "náhled převodu pdf na pdf/x-1a zobrazující razítko") + +*Alt text obrázku*: **náhled převodu pdf na pdf/x-1a s automaticky velikostním textovým razítkem** – ukazuje finální PDF po všech krocích. + +## Běžné varianty a okrajové případy + +- **Více stránek** – Pokud potřebujete razítkovat každou stránku, projděte `pdfDoc.Pages` v cyklu a zavolejte `AddStamp` uvnitř smyčky. +- **Jiný výstupní formát** – Změňte `PdfFormat.PDF_X_1A` na `PdfFormat.PDF_A_1B` pro archivní PDF. +- **Vyšší rozlišení PNG** – Nastavte `Resolution = 600` v `RenderingOptions` pro miniatury v tiskové kvalitě. +- **Vlastní font pro razítko** – Přiřaďte `autoSizeStamp.Font = FontRepository.FindFont("Arial")` před přidáním razítka. +- **Zpracování chyb** – Obalte každý hlavní krok do `try/catch` a logujte `ConversionException` nebo `FileNotFoundException` pro snadnější ladění. + +## Kompletní funkční příklad (připravený ke kopírování a vložení) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Setup paths + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Load the source document + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Convert to PDF/X‑1a (print‑ready) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Export first page as PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Add auto‑sizing text stamp (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/czech/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..b1d2f3ed7 --- /dev/null +++ b/pdf/czech/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,268 @@ +--- +category: general +date: 2026-03-29 +description: Uložte PDF jako HTML pomocí Aspose.PDF v C#. Naučte se, jak převést PDF + na HTML, vynechat obrázky a ověřit podpis PDF v jednom tutoriálu. +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: cs +og_description: Uložte PDF jako HTML pomocí Aspose.PDF v C#. Tento průvodce vám ukáže, + jak převést PDF na HTML, vynechat obrázky a ověřit digitální podpis PDF. +og_title: Uložte PDF jako HTML pomocí Aspose – Kompletní průvodce C# +tags: +- Aspose.PDF +- C# +- PDF processing +title: Uložení PDF jako HTML pomocí Aspose – Kompletní průvodce C# +url: /cs/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Uložení PDF jako HTML pomocí Aspose – Kompletní průvodce v C# + +Už jste se někdy zamysleli, jak **uložit PDF jako HTML** bez načítání každého vloženého obrázku? Možná vytváříte lehký webový náhled a nadbytečná data obrázků zpomalují načítání stránky. Dobrou zprávou je, že nemusíte psát vlastní parser – Aspose.PDF za vás udělá těžkou práci. V tomto tutoriálu **převodíme PDF na HTML**, odstraníme obrázky a poté **ověříme podpis PDF**, abychom se ujistili, že dokument nebyl pozměněn. + +Projdeme každý řádek kódu, vysvětlíme *proč* je každé nastavení důležité, a dokonce se dotkneme okrajových případů, jako jsou velké PDF nebo chybějící podpisy. Na konci budete mít připravenou spustitelnou C# konzolovou aplikaci, která vytvoří čistý HTML soubor a poskytne vám jasný výsledek true/false pro digitální podpis. + +## Co se naučíte + +- Načíst PDF soubor pomocí Aspose.PDF. +- Použít `HtmlSaveOptions` k **převodu PDF na HTML** při vynechání obrázků. +- Uložit vzniklé HTML na disk. +- Nastavit objekt `PdfFileSignature` pro **ověření podpisu PDF**. +- Interpretovat boolean výsledek a řešit běžné úskalí. +- Bonusové tipy pro výkon a odstraňování problémů. + +### Požadavky + +- .NET 6.0 nebo novější (kód také funguje na .NET Framework 4.7+). +- NuGet balíček Aspose.PDF pro .NET (verze 23.12 nebo novější). +- Podepsané PDF (`input.pdf`) obsahující podpis s názvem “Sig1”. +- Základní znalost C# a konzolových aplikací. + +> **Tip:** Pokud jste ještě nenainstalovali balíček Aspose.PDF, spusťte `dotnet add package Aspose.PDF` ze složky projektu. + +--- + +## Krok 1: Načtení zdrojového PDF dokumentu + +Než budeme moci cokoli udělat, potřebujeme v‑paměti reprezentaci PDF. Třída `Document` z Aspose.PDF načte soubor a vytvoří strom stránek, zdrojů a anotací. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**Proč je to důležité:** Načtení dokumentu jednou udržuje předvídatelnou spotřebu paměti. Pokud plánujete zpracovávat mnoho PDF ve smyčce, zvažte opětovné použití stejné instance `Document` po zavolání `pdfDocument.Dispose()`. + +--- + +## Krok 2: Nastavení možností uložení HTML – Přeskočit obrázky + +Chceme **uložit PDF jako HTML**, ale bez těžkých dat obrázků. `HtmlSaveOptions` nám poskytuje detailní kontrolu a příznak `SkipImages` říká Aspose, aby úplně vynechal značky ``. + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**Proč můžete chtít vynechat obrázky:** Pro náhledové portály nebo mobilně‑první designy se počítá každý kilobajt. Odstranění obrázků také obchází licenční problémy, pokud zdrojové PDF obsahuje chráněnou grafiku. + +--- + +## Krok 3: Export PDF jako HTML soubor bez obrázků + +Nyní skutečně zapíšeme HTML soubor. Metoda `Save` respektuje výše nastavené možnosti. + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**Výsledek, který uvidíte:** Soubor `.html` obsahující textový obsah, tabulky a vektorovou grafiku (pokud existuje), ale žádné značky ``. Otevřete jej v prohlížeči a měli byste vidět čisté, bezobrázkové vykreslení původního PDF. + +--- + +## Krok 4: Připravte ověřovač podpisu pro stejný dokument + +Třída `PdfFileSignature` z Aspose.PDF nám umožňuje prozkoumat digitální podpisy vložené v PDF. Vytvoříme instanci, která ukazuje na stejný `Document`, který jsme již načetli. + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**Poznámka k zacházení se zdroji:** Příkaz `using` zajišťuje, že ověřovač uvolní všechny nativní handly po dokončení, čímž se předejde problémům se zamčením souboru ve Windows. + +--- + +## Krok 5: Ověření podpisu s názvem “Sig1” pomocí SHA‑3‑256 + +Většina PDF používá SHA‑256 nebo SHA‑1, ale Aspose také podporuje novější rodinu SHA‑3. Zde explicitně požadujeme `Sha3_256`. Pokud podpis chybí nebo se algoritmus neshoduje, metoda vrátí `false`. + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Co může znamenat “false”:** + +1. **Podpis nenalezen** – možná PDF používá jiný název; seznam podpisů získáte pomocí `signatureVerifier.GetSignatureNames()`. +2. **Neshoda algoritmu** – PDF mohl být podepsán pomocí SHA‑256; zkuste `DigestHashAlgorithm.Sha256`. +3. **Dokument byl změněn** – jakákoli změna po podpisu neplatí hash, což vede k `false`. + +--- + +## Řešení běžných okrajových případů + +### Velká PDF + +Pokud váš zdrojový PDF překročí několik stovek megabajtů, zvažte zapnutí **režimu úspory paměti**: + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +Tím se stránky načítají na vyžádání, což snižuje zatížení RAM. + +### Chybějící podpis + +Když si nejste jisti názvem podpisu, vyjmenujte je: + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +Vyberte správný název ze seznamu před voláním `VerifySignature`. + +### Kompatibilita prohlížečů + +Některé prohlížeče mají problémy s HTML, které obsahuje výchozí CSS od Aspose. Nastavení `htmlSaveOptions.EmbedCss = true` (jak bylo ukázáno dříve) vloží styly přímo do souboru, což jej činí přenosnějším. + +--- + +## Kompletní funkční příklad + +Níže je kompletní program připravený ke kopírování a vložení, který zahrnuje všechny kroky, zpracování chyb a volitelnou diagnostiku. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Očekávaný výstup v konzoli** (cesty se budou lišit): + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +Pokud je podpis neplatný, poslední řádek bude obsahovat `Signature valid: False`. + +--- + +## Často kladené otázky + +**Q: Mohu převést PDF na HTML *s* obrázky?** +A: Rozhodně. Stačí nastavit `SkipImages = false` (nebo vlastnost vynechat). Aspose vloží každý obrázek jako samostatný soubor do podsložky vedle HTML. + +**Q: Funguje to na Linuxu?** +A: Ano. Aspose.PDF je multiplatformní; jen se ujistěte, že cesty `YOUR_DIRECTORY` používají lomítka dopředu nebo `Path.Combine`. + +**Q: Co když potřebuji ověřit digitální podpis PDF pomocí vlastního certifikátu?** +A: Použijte přetížení `PdfFileSignature.ValidateSignature`, které přijímá objekt `X509Certificate2`. Tato metoda také vrátí podrobný `SignatureInfo`, který můžete prozkoumat. + +**Q: Je `aspose convert pdf` omezen na C#?** +A: Ne. Stejné API existuje pro Javu, Python a další .NET jazyky. Koncepty – načíst, nastavit možnosti, uložit, ověřit – zůstávají stejné. + +--- + +## Závěr + +Nyní přesně víte, jak **uložit PDF jako HTML** pomocí Aspose.PDF, odstranit zbytečné obrázky a **ověřit podpis PDF** v jedné, zjednodušené C# aplikaci. Proces je přímočarý: načíst, nastavit, exportovat a ověřit. S pokrytými volitelnými diagnostikami a řešením okrajových případů můžete tento vzor přizpůsobit dávkovým úlohám, webovým službám nebo desktopovým nástrojům. + +Jste připraveni na další krok? Vyzkoušejte **převod PDF na HTML** při zachování obrázků, nebo experimentujte s různými hash algoritmy pro **validaci digitálního podpisu PDF** vůči vaší vlastní PKI. Můžete také prozkoumat konverzi PDF na DOCX od Aspose nebo sloučit více PDF před exportem – každá z těchto možností je přirozeným rozšířením workflow, které jsme právě vytvořili. + +Šťastné programování a ať vaše HTML náhledy zůstávají lehké a vaše podpisy důvěryhodné! + +![save pdf as html example](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/czech/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..6dddb0ea1 --- /dev/null +++ b/pdf/czech/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,236 @@ +--- +category: general +date: 2026-03-29 +description: Uložte PDF jako HTML pomocí C# a Aspose.PDF. Naučte se, jak vložit stránku + do PDF, přidat prázdnou stránku PDF a vytvořit oddělený podpis PKCS7 v jednom postupu. +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: cs +og_description: Uložte PDF jako HTML v C# s Aspose.PDF. Tento návod ukazuje, jak načíst + PDF, vložit stránku, přidat prázdnou stránku, podepsat pomocí PKCS7 a exportovat + do HTML. +og_title: Uložte PDF jako HTML pomocí C# – Kompletní programovací tutoriál +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: Uložte PDF jako HTML pomocí C# – Kompletní průvodce krok za krokem +url: /cs/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Uložení PDF jako HTML pomocí C# – Kompletní průvodce krok za krokem + +Už jste někdy potřebovali **save PDF as HTML**, ale nebyli jste si jisti, jak zachovat rozložení a zároveň upravit zdrojový dokument? Nejste v tom sami — vývojáři často řeší opravy stránkování, prázdné stránky a digitální podpisy před konverzí. V tomto tutoriálu projdeme jedním koherentním pracovním postupem, který přesně to dělá, a zároveň ukážeme, jak **insert page into PDF**, **add blank PDF page** a **create PKCS7 detached signature**. + +Na konci tohoto průvodce budete mít připravený spustitelný program v C#, který načte existující PDF, přetvoří jeho stránky, podepíše první stránku a nakonec celý dokument exportuje do HTML s prioritou Unicode CMap. Žádné visící odkazy, jen samostatné řešení, které můžete vložit do libovolného .NET projektu. + +## Co budete potřebovat + +- **Aspose.PDF for .NET** (nejnovější verze, 23.x v době psaní). +- **.NET 6.0** nebo novější — kód se také kompiluje s .NET Framework 4.7, ale .NET 6 poskytuje nejlepší výkon. +- **Soubor certifikátu** (`.pfx`) a jeho heslo pro PKCS7 podpis. +- Vstupní PDF (`input.pdf`), které chcete upravit. + +Pokud je máte, můžeme rovnou přejít k kódu. Jinak si stáhněte bezplatnou 30‑denní zkušební verzi Aspose z oficiální stránky; API je identické s placenou verzí. + +## Krok 1 – Načtení PDF dokumentu v C# (Primární akce) + +Prvním krokem je načíst PDF do paměti. Třída `Document` od Aspose provádí veškerou těžkou práci. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*Proč je to důležité:* Načtení souboru vám poskytne měnitelný objektový model. Odtud můžete **insert page into PDF**, přidávat prázdné stránky nebo aplikovat podpisy, aniž byste se dotkli původního souboru na disku. + +## Krok 2 – Vložení stránky a přidání prázdné PDF stránky + +Někdy má zdrojové PDF artefakty stránkování — například chybějící nebo duplicitní stránku. Níže zkopírujeme stránku 2 hned za stránku 1 a poté na konec přidáme zcela prázdnou stránku. + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*Tip:* `UpdatePagination()` přepočítá čísla stránek, která se objevují v zápatích nebo hlavičkách generovaných Aspose. Vynechání tohoto kroku může zanechat zastaralá čísla ve výsledném HTML. + +## Krok 3 – Vytvoření odděleného PKCS7 podpisu (SHA‑512) + +Oddělený PKCS7 podpis dokazuje integritu dokumentu, aniž by vkládal data podpisu přímo do PDF proudu. Použijeme certifikát uložený v souboru PFX. + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*Proč SHA‑512?* Poskytuje silnější hash než SHA‑256 a přesto je široce podporován. Pokud potřebujete soulad se staršími standardy, zaměňte `Sha512` za `Sha256`. + +## Krok 4 – Aplikace digitálního podpisu na stránku 1 s viditelným obdélníkem + +Umístíme viditelné pole podpisu na první stránku. Obdélník určuje, kde se objeví obrázek podpisu (nebo zástupný znak). + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*Hraniční případ:* Pokud cílová stránka již obsahuje formulářové pole se stejným názvem, API vyhodí výjimku. Zajistěte jedinečné názvy polí nebo před podpisem vymažte existující pole. + +## Krok 5 – Nastavení možností uložení HTML s prioritou Unicode CMap + +Při konverzi do HTML může Aspose vložit písma jako base‑64, použít podmnožiny nebo se spoléhat na Unicode CMapy. Prioritizace Unicode snižuje velikost souboru a zlepšuje prohledatelnost textu. + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*Co to dělá?* Říká konvertoru, aby upřednostňoval Unicode CMapy před vlastním vkládáním písem, kdykoli je to možné, což je ideální pro vícejazyčná PDF. + +## Krok 6 – Uložení podepsaného dokumentu jako HTML + +Nakonec zapíšeme zpracované PDF jako HTML složku (Aspose vytvoří adresář s podpůrnými soubory, jako jsou CSS a obrázky). + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +Pokud otevřete `cmap.html` v prohlížeči, uvidíte původní rozložení PDF vykreslené jako HTML, včetně viditelného obrázku podpisu na stránce 1. + +## Kompletní funkční příklad (všechny kroky dohromady) + +Níže je kompletní program, který můžete zkopírovat a vložit do konzolové aplikace. Obsahuje všechny potřebné `using` direktivy a ošetření chyb. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**Očekávaný výsledek:** +- `cmap.html` (hlavní HTML soubor) +- složka `cmap_files` obsahující CSS, obrázky a zdroje písem. +- První stránka zobrazuje viditelný rámeček podpisu na souřadnicích, které jste nastavili. + +## Často kladené otázky a hraniční případy + +| Question | Answer | +|----------|--------| +| *Mohu použít samopodepsaný certifikát?* | Ano, Aspose.PDF přijímá jakýkoli platný PFX. Jen si pamatujte, že prohlížeče mohou označit podpis jako nedůvěryhodný. | +| *Co když potřebuji podepsat více stránek?* | Vytvořte samostatné volání `PdfFileSignature` pro každou stránku, nebo použijte smyčku, která aktualizuje `pageNumber`. | +| *Existuje způsob, jak vložit obrázek podpisu místo obdélníku?* | Poskytněte objekt `SignatureAppearance` s proudem obrázku metodě `PdfFileSignature.Sign`. | +| *Mám PDF s šifrovaným obsahem — mohu jej stále převést?* | Nejprve jej dešifrujte pomocí `pdfDoc.Decrypt("ownerPassword")`, poté proveďte kroky. | +| *Zachová HTML hypertextové odkazy z původního PDF?* | Aspose ve výchozím nastavení zachovává anotace odkazů. Pokud chybějící odkazy vidíte, nastavte `htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;` | + +## Závěr + +Právě jsme ukázali, jak **save PDF as HTML**, zatímco současně **insert page into PDF**, **add blank PDF page** a **create PKCS7 detached signature** — vše pomocí C#. Pracovní postup je lineární, snadno laditelný a plně přizpůsobitelný pro větší projekty. + +Dále můžete zkusit: +- **Batch processing** — projít složku PDF souborů a převést každý z nich. +- **Custom CSS** — upravit `HtmlSaveOptions.CustomCss`, aby odpovídal stylu vašeho webu. +- **Advanced signatures** — použít časové servery nebo LTV (Long‑Term Validation) pro podpisy splňující požadavky na shodu. + +Vyzkoušejte je a získáte robustní pipeline PDF‑to‑HTML, která je jak SEO‑přátelská, tak i vhodná pro citace v AI asistentech. Šťastné programování! + +![Diagram ukazující načtení PDF, vložené stránky, aplikovaný podpis a výstup HTML](/images/save-pdf-as-html-workflow.png "save pdf as html workflow") + +*Alternativní text obrázku:* **diagram pracovního postupu uložení pdf jako html** + +{{< /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 8b518b22c..b95b99904 100644 --- a/pdf/czech/net/digital-signatures/_index.md +++ b/pdf/czech/net/digital-signatures/_index.md @@ -62,6 +62,9 @@ Naučte se načíst PDF v C#, převést jej na PDF/X‑4 a získat seznam digit ### [Ověření podpisu PDF pomocí Aspose – převod PDF na HTML](./validate-pdf-signature-with-aspose-convert-pdf-to-html/) Naučte se, jak ověřit podpis PDF a převést PDF dokument do HTML pomocí Aspose.PDF pro .NET. +### [Jak podepsat PDF a přidat obrázky – Kompletní průvodce C#](./how-to-sign-pdf-and-add-images-complete-c-guide/) +Naučte se, jak v C# pomocí Aspose.PDF podepsat PDF soubor a vložit do něj obrázky, krok za krokem. + ## Další zdroje - [Aspose.PDF pro síťovou dokumentaci](https://docs.aspose.com/pdf/net/) diff --git a/pdf/czech/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/czech/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..2fdd26553 --- /dev/null +++ b/pdf/czech/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-03-29 +description: Jak podepsat PDF digitálním podpisem a přidat oříznutý obrázek v C#. + Naučte se přidávat digitální podpis do PDF, oříznout obrázek pro PDF a snadno přidat + obrázek do PDF. +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: cs +og_description: Jak podepsat PDF digitálním podpisem a vložit oříznutý obrázek pomocí + Aspose.Pdf v C#. Postupujte podle tohoto návodu pro kompletní řešení. +og_title: Jak podepsat PDF a přidat obrázky – krok za krokem C# tutoriál +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: Jak podepsat PDF a přidat obrázky – kompletní průvodce C# +url: /cs/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak podepsat PDF a přidat obrázky – Kompletní průvodce v C# + +Už jste se někdy zamysleli, **jak podepsat PDF** soubory programově a zároveň vložit vlastní obrázek? Možná budujete schvalovací workflow a potřebujete právně závazný podpis *a* miniaturu fotografie podepisujícího na stejné stránce. Zkrátka, chcete **add digital signature pdf** obsah, oříznout ten obrázek a pak **add image to pdf** bez námahy. + +Tento tutoriál vás provede každým krokem – od načtení certifikátu ECDSA PKCS#7 po oříznutí JPEG a jeho umístění na podepsanou stránku. Na konci budete mít jediný spustitelný soubor C#, který podepíše stránku 1, ořízne fotografii na 400 × 400 px a umístí ji na přesné místo. Žádné externí skripty, žádná magie, jen čistý kód a vysvětlení. + +## Požadavky + +- .NET 6.0 nebo novější (kód také funguje s .NET Framework 4.7+) +- **Aspose.Pdf for .NET** NuGet balíček (verze 23.9 nebo novější) +- Certifikát ECDSA P‑256 v PKCS#7 (`.pfx`) formátu a jeho heslo +- JPEG obrázek, který chcete vložit (např. `photo.jpg`) + +> **Pro tip:** Uchovávejte soubor certifikátu mimo správu verzí a chraňte heslo pomocí správce tajemství. + +--- + +## Krok 1: Nastavení projektu a importů + +Nejprve vytvořte konzolovou aplikaci (nebo ji integrujte do jakékoli existující služby). Přidejte odkaz na Aspose.Pdf: + +```bash +dotnet add package Aspose.Pdf +``` + +Poté zahrňte požadované jmenné prostory: + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +Tyto `using` direktivy vám poskytují přístup ke třídám `Document`, `Signature` a `Rectangle`, které budeme později potřebovat. + +## Krok 2: Načtení PDF a příprava podpisu + +Otevřeme existující PDF (`source.pdf`) a vytvoříme objekt **digital signature pdf**, který používá oddělený PKCS#7 podpis. Certifikát je klíč ECDSA P‑256, který je široce akceptován pro shodu. + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**Proč je to důležité:** Použití odděleného PKCS#7 podpisu zachovává původní obsah PDF beze změny a vkládá kryptografický hash. Toto je průmyslový standard pro právně závazná PDF. + +## Krok 3: Aplikace digitálního podpisu na konkrétní stránku + +Nyní umístíme viditelné pole podpisu na **stránku 1**. Obdélník určuje, kde se pole podpisu zobrazí (souřadnice jsou v bodech, kde 1 palec = 72 bodů). + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +Pokud nepotřebujete viditelné pole, nastavte `isVisible` na `false`. `signatureRect` lze upravit tak, aby odpovídal rozvržení vašeho dokumentu. + +## Krok 4: Otevření proudu obrázku a definování oblastí ořezu + +Přečteme JPEG soubor do proudu a specifikujeme **source rectangle**, který vybere levý horní roh 400 × 400 pixelů. Toto je operace **crop image for pdf**. + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **Edge case:** Pokud je váš obrázek menší než 400 × 400, ořez se automaticky omezí na skutečné rozměry obrázku – nevyvolá se výjimka. + +## Krok 5: Definování místa, kde se oříznutý obrázek zobrazí + +Dále nastavíme **destination rectangle** na stránce PDF. V tomto příkladu umístíme obrázek na (50, 50) s velikostí 200 × 200 bodů (≈2,78 palců čtverečních). + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +Neváhejte experimentovat: změňte souřadnice X/Y pro posunutí obrázku, nebo upravte šířku/výšku pro škálování. + +## Krok 6: Vložení oříznutého obrázku na podepsanou stránku + +Nakonec přidáme obrázek na **stránku 1** (stejnou stránku, která nyní obsahuje podpis). Přetížení `AddImage`, které používáme, přijímá source a destination obdélníky a efektivně provádí ořez a umístění v jednom volání. + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +Za scénou Aspose.Pdf extrahuje oblast 400 × 400 pixelů, přepočítá ji na 200 × 200 bodů a zapíše ji do PDF content streamu. + +## Krok 7: Uložení podepsaného a obrázkem obohaceného PDF + +Po všech úpravách dokument uložte. Můžete přepsat originál nebo zapsat do nového souboru. + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +Když otevřete `output_signed.pdf` v Adobe Acrobat nebo jakémkoli PDF prohlížeči, uvidíte: + +- Viditelné pole podpisu na souřadnicích, které jste zadali. +- Oříznutá fotografie umístěná na (50, 50) na stránce 1. +- Digitální podpis ověřen (pokud prohlížeč důvěřuje vašemu certifikátu). + +## Často kladené otázky (FAQ) + +| Otázka | Odpověď | +|----------|--------| +| **Mohu podepsat jinou stránku?** | Změňte argument `pageNumber` v `signature.Sign` na libovolný platný index stránky (číslování od 1). | +| **Co když potřebuji více podpisů?** | Vytvořte novou instanci `Signature` pro každou stránku nebo místo, přičemž můžete znovu použít stejný `pkcsSignature`, pokud se použije stejný certifikát. | +| **Je ořez obrázku omezen na obdélníky?** | Ano, `AddImage` v Aspose.Pdf funguje s obdélníkovými oblastmi. Pro složitější tvary musíte obrázek předem zpracovat (např. pomocí System.Drawing) před vložením. | +| **Jak udělat podpis neviditelný?** | Nastavte `isVisible` na `false` a vynechte `signatureRect`. Podpis bude i nadále kryptograficky platný. | +| **Jaké formáty mohu vložit kromě JPEG?** | PNG, BMP, GIF a TIFF jsou všechny podporovány. Stačí změnit cestu k souboru a zajistit, aby proud načetl správné bajty. | + +## Úplný funkční příklad + +Níže je kompletní, samostatný program. Zkopírujte jej do `Program.cs`, upravte cesty a spusťte. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**Očekávaný výsledek:** Otevření `output_signed.pdf` zobrazí pole podpisu (100 × 100 → 300 × 300 bodů) a obrázek o velikosti 200 × 200 bodů odvozený z levého horního rohu `photo.jpg`. Podpis je ověřen vůči dodanému ECDSA certifikátu. + +## Závěr + +Probrali jsme **how to sign PDF** soubory, jak **add digital signature pdf** na konkrétní stránku, jak **crop image for pdf**, a nakonec jak **add image to pdf** pomocí Aspose.Pdf v C#. Celý proces – od načtení certifikátu po uložení finálního dokumentu – se vejde do jediného, snadno čitelného zdrojového souboru. + +Pokud jste připraveni na další výzvu, zvažte: + +- Přidání **multiple signatures** na různé stránky (použijte koncept „digital signature pdf page“). +- Vkládání **QR kódů**, které odkazují na ověřovací služby. +- Automatizace procesu v ASP.NET Core API pro generování PDF za běhu. + +Pamatujte, že klíčem k robustní automatizaci PDF je jasné oddělení odpovědností: zpracování podpisu, zpracování obrázku a finální sestavení dokumentu. Hrajte si s koordináty, vyměňte formát obrázku nebo experimentujte s časovým razítkem – váš workflow je nyní plně rozšiřitelný. + +Máte otázky, okrajové scénáře nebo zajímavý případ k sdílení? Zanechte komentář níže a šť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-security-and-signatures/_index.md b/pdf/czech/net/programming-with-security-and-signatures/_index.md index 08079df75..aa605806b 100644 --- a/pdf/czech/net/programming-with-security-and-signatures/_index.md +++ b/pdf/czech/net/programming-with-security-and-signatures/_index.md @@ -35,6 +35,7 @@ Tento tutoriál vám poskytne podrobný přehled metod a technik pro zajištěn | [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 opravit PDF soubory – Kompletní průvodce C# s Aspose.Pdf](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | Naučte se, jak opravit poškozené PDF soubory pomocí Aspose.PDF pro .NET v C#. Kompletní průvodce krok za krokem. | +| [Ověření digitálního podpisu PDF – Kompletní průvodce v C#](./validate-pdf-digital-signature-complete-c-guide/) | Naučte se, jak ověřit digitální podpisy PDF souborů pomocí Aspose.PDF pro .NET v C#. Kompletní podrobný návod. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/czech/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/czech/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..64f2897d6 --- /dev/null +++ b/pdf/czech/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,261 @@ +--- +category: general +date: 2026-03-29 +description: Rychle ověřte digitální podpis PDF. Naučte se, jak ověřit podpis PDF, + zkontrolovat stav podpisu PDF a detekovat poškozené PDF pomocí Aspose.Pdf v C#. +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: cs +og_description: Ověřit digitální podpis PDF v C#. Tento tutoriál ukazuje, jak ověřit + podpis PDF, zkontrolovat integritu podpisu PDF a detekovat poškozený PDF pomocí + Aspose.Pdf. +og_title: Ověření digitálního podpisu PDF – Kompletní průvodce C# +tags: +- C# +- Aspose.Pdf +- PDF Security +title: Ověření digitálního podpisu PDF – Kompletní průvodce C# +url: /cs/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Ověření digitálního podpisu PDF – Kompletní průvodce v C# + +Už jste se někdy zamýšleli **jak ověřit PDF podpis** bez toho, abyste si trhali vlasy? Možná jste obdrželi smlouvu, otevřeli ji a potřebovali být stoprocentně jistí, že nebyla pozměněna. Dobrou zprávou je, že nepotřebujete forenzní laboratoř – stačí jen pár řádků C# a Aspose.Pdf, které **validují digitální podpis PDF** během chvilky. + +V tomto tutoriálu projdeme vše, co potřebujete vědět: od instalace knihovny po interpretaci výsledku a dokonce i ošetření okrajových případů, jako jsou více podpisů nebo poškozený soubor. Na konci budete schopni **zkontrolovat stav PDF podpisu** programově a **detekovat pozměněné PDF** soubory dříve, než způsobí problémy. + +## Co budete potřebovat + +- **.NET 6.0 nebo novější** (kód funguje i na .NET Framework, ale .NET 6 je ideální). +- **Aspose.Pdf for .NET** – můžete jej získat z NuGet (`Install-Package Aspose.Pdf`). +- Podepsaný **PDF**, který chcete otestovat. Pokud ho nemáte, vytvořte jednoduchý podepsaný dokument pomocí Adobe Acrobat nebo libovolného PDF podepisovače. + +> Pro tip: Uchovávejte své PDF soubory mimo kořenový adresář projektu; relativní cesta jako `./Samples/signed.pdf` funguje dobře a zabraňuje nechtěnému commitování důvěrných souborů. + +## Implementace krok za krokem + +Níže rozdělíme řešení do logických částí. Každá část má vlastní nadpis H2 – jedna z nich dokonce obsahuje primární klíčové slovo, čímž splňuje SEO pravidlo. + +### ## Krok 1 – Instalace a reference Aspose.Pdf + +Nejprve přidejte NuGet balíček do svého projektu: + +```powershell +dotnet add package Aspose.Pdf +``` + +Nebo pokud používáte Package Manager Console: + +```powershell +Install-Package Aspose.Pdf +``` + +Po instalaci balíčku Visual Studio automaticky přidá jmenný prostor `using Aspose.Pdf;`. Není potřeba žádné další manipulace s DLL. + +### ## Krok 2 – Načtení podepsaného PDF dokumentu + +Nyní skutečně otevřeme soubor. Příkaz `using` zajišťuje, že dokument bude správně uvolněn, což je obzvláště důležité u velkých PDF. + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +> **Proč je to důležité:** Načtení dokumentu nám poskytuje přístup k objektu `DigitalSignatureInfo`, který je vstupním bodem pro všechny dotazy související s podpisy. + +### ## Krok 3 – Získání informací o digitálním podpisu + +Aspose.Pdf zapouzdřuje nízkoúrovňové PKI detaily do přátelského API. Získejte vlastnost `DigitalSignatureInfo` a budete mít vše, co potřebujete k **kontrole stavu PDF podpisu**. + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +Pokud PDF obsahuje více podpisů, `signatureInfo` je agreguje a zpřístupňuje vlastnosti jako `Count`, `Certificates` a `IsCompromised`. U souboru s jedním podpisem budou tyto kolekce obsahovat jen jeden záznam. + +### ## Krok 4 – Zjištění, zda je podpis kompromitován + +Příznak `IsCompromised` vám říká, zda byl dokument po podpisu **změněn**. Hodnota `true` znamená, že PDF byl pozměněn – přesně to, co chceme **detekovat pozměněné PDF**. + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +Pokud potřebujete **ověřit PDF podpis** podrobněji (např. validaci řetězce certifikátů), můžete také prozkoumat `signatureInfo.Certificates` a zavolat `Validate()` na každém. Pro většinu případů je `IsCompromised` dostačující. + +### ## Krok 5 – Výpis výsledku do konzole + +Nakonec informujte uživatele o výsledku. Vytiskneme přátelskou zprávu a také vrátíme vhodný návratový kód pro automatizační skripty. + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### Očekávaný výstup + +``` +Signature compromised: False +``` + +Pokud úmyslně pozměníte PDF (např. přidáte náhodný znak), výstup se změní na `True`. To je okamžik, kdy víte, že integrita dokumentu je narušena. + +### ## Řešení okrajových případů a běžných úskalí + +#### 1. Více podpisů + +Když PDF má více než jednoho podepisovatele, `IsCompromised` odráží *celkový* stav – pokud je **kterýkoli** podpis poškozen, příznak se nastaví na `true`. Pro určení, který podepisovatel je vinen: + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. Chybějící podpis + +Pokud PDF není vůbec podepsáno, `signatureInfo.Count` bude `0`. Měli byste se chránit před falešným pocitem bezpečí: + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. Poškozený PDF soubor + +Poškozený soubor vyvolá `PdfException`. Zabalte logiku načítání do try‑catch, abyste poskytli čistou chybovou zprávu: + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. Validace certifikátu (pokročilé) + +Pokud potřebujete zajistit, že podepisovací certifikát je stále platný (neodvolaný, v rámci platnosti), můžete zavolat: + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +Tento krok vás posune od jednoduchého **kontrolování PDF podpisu** k úplnému **postupu, jak ověřit PDF podpis**. + +### ## Kompletní funkční příklad + +Spojením všeho dohromady získáte kompletní, připravený k spuštění program: + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +Spusťte program z příkazové řádky: + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +Měli byste vidět přehledný výstup, který vám řekne, zda je PDF neporušené, kteří podepisovatelé jsou zapojeni a zda jsou jejich certifikáty stále důvěryhodné. + +## Vizualizace + +Níže je rychlý diagram ilustrující tok od **načtení PDF** po **výstup validačního výsledku**. Je to užitečná reference při navrhování architektury většího zpracování dokumentů. + +![diagram workflow ověření digitálního podpisu PDF](image.png "Diagram ukazující načtení PDF → DigitalSignatureInfo → kontrolu IsCompromised") + +*Alt text: diagram workflow ověření digitálního podpisu PDF* + +## Závěr + +Právě jsme prošli **kompletní, end‑to‑end řešení pro ověření digitálního podpisu PDF** pomocí Aspose.Pdf v C#. Hlavní body: + +- Načtěte PDF pomocí `Document`. +- Získejte `DigitalSignatureInfo` a zkontrolujte `IsCompromised` pro **detekci pozměněného PDF**. +- Elegantně ošetřete více podpisů, chybějící podpisy a poškozené soubory. +- Volitelně validujte podepisovací certifikát pro kompletní **postup, jak ověřit PDF podpis** kontrolní seznam. + +Odtud můžete logiku rozšířit – uložit výsledky validace do databáze, odmítnout nepodepsané nahrávky ve webovém API nebo integrovat s dokumentovým systémem. Pokud vás zajímají další bezpečnostní funkce PDF, podívejte se na **kontrolu časových razítek PDF podpisu**, **přidání nového podpisu** nebo **šifrování PDF**. + +Máte otázky ohledně okrajových případů, nebo chcete vidět, jak **ověřit PDF podpis** s jinou knihovnou, jako je iText 7? Zanechte komentář níže a pojďme konverzaci udržet. Šť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/dutch/net/conversion-export/_index.md b/pdf/dutch/net/conversion-export/_index.md index d41a94665..21f1a10ed 100644 --- a/pdf/dutch/net/conversion-export/_index.md +++ b/pdf/dutch/net/conversion-export/_index.md @@ -215,18 +215,27 @@ Leer hoe u ontbrekende lettertypen kunt beheren door ze te vervangen en hoe u PD ### [Master PDF naar HTML-conversie met lettertypeverwerking in Aspose.PDF voor .NET](./optimize-pdf-to-html-font-handling-aspose-net/) Ontdek hoe u de conversie van PDF naar HTML kunt optimaliseren met Aspose.PDF voor .NET, met de nadruk op efficiënte verwerking van lettertypebronnen en naadloze integratie. -### [PDF naar HTML-conversie met Aspose.PDF .NET: afbeeldingen opslaan als externe PNG's](./pdf-to-html-conversion-external-png-aspose-pdf-net/) +### [PDF naar HTML converteren met Aspose.PDF .NET: afbeeldingen opslaan als externe PNG's](./pdf-to-html-conversion-external-png-aspose-pdf-net/) Leer hoe u PDF-documenten naar HTML converteert met externe PNG-afbeeldingen met Aspose.PDF voor .NET. Deze handleiding zorgt voor behoud van de lay-out en optimalisatie van de webprestaties. ### [PDF naar HTML-conversie met Aspose.PDF .NET: een uitgebreide handleiding](./aspose-pdf-net-pdf-to-html-conversion/) Beheers PDF-naar-HTML-conversie met Aspose.PDF voor .NET. Verbeter de toegankelijkheid en interactie van uw documenten met aanpasbare opties. -### [PDF naar HTML-conversie met Aspose.PDF voor .NET](./pdf-to-html-conversion-aspose-dot-net/) +### [PDF opslaan als HTML met Aspose – Complete C#-gids](./save-pdf-as-html-with-aspose-complete-c-guide/) +Leer hoe u PDF's opslaat als HTML met Aspose in C#, inclusief stap‑voor‑stap codevoorbeelden. + +### [PDF opslaan als HTML met C# – Complete stapsgewijze gids](./save-pdf-as-html-with-c-complete-step-by-step-guide/) +Leer hoe u PDF's opslaat als HTML met C# en Aspose.PDF, inclusief stap‑voor‑stap codevoorbeelden. + +### [PDF naar HTML-conversie met Aspose.PDF .NET](./pdf-to-html-conversion-aspose-dot-net/) Een codetutorial voor Aspose.PDF Net ### [PDF naar TIFF-conversie in .NET met Aspose.PDF: een stapsgewijze handleiding](./pdf-to-tiff-conversion-aspose-pdf-net/) Leer hoe u PDF-documenten naar TIFF-afbeeldingen converteert met Aspose.PDF voor .NET. Beheers aangepaste kleurdiepten en geavanceerde beeldverwerkingstechnieken. +### [PDF converteren naar PDF/X-1a, pagina exporteren als PNG en tekststempel toevoegen](./convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/) +Leer hoe u een PDF naar PDF/X-1a converteert, een pagina exporteert als PNG en een tekststempel toevoegt met Aspose.PDF voor .NET. + ## Aanvullende bronnen - [Aspose.PDF voor Netdocumentatie](https://docs.aspose.com/pdf/net/) diff --git a/pdf/dutch/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/dutch/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..dcf557c27 --- /dev/null +++ b/pdf/dutch/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-03-29 +description: pdf converteren naar pdf/x-1a en pdf-pagina exporteren als png in één + workflow – leer ook hoe je een tekststempel aan een pdf kunt toevoegen met Aspose.Pdf + (C#). +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: nl +og_description: pdf converteren naar pdf/x-1a en pdf-pagina exporteren als png terwijl + een tekststempel aan pdf wordt toegevoegd – volledige C#-gids met Aspose.Pdf. +og_title: pdf converteren naar pdf/x-1a, pagina exporteren als png & tekststempel + toevoegen +tags: +- Aspose.Pdf +- C# +- PDF processing +title: pdf converteren naar pdf/x-1a, pagina exporteren als png & tekststempel toevoegen +url: /nl/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# pdf converteren naar pdf/x-1a, pagina png exporteren & tekststempel toevoegen – Complete C# gids + +Heb je ooit **pdf naar pdf/x-1a converteren** moeten **converteren** maar ook een snelle PNG-preview van de eerste pagina en een aangepaste tekststempel op hetzelfde document gewild? Je bent niet de enige. In veel productie‑pipelines—denk aan print‑ready pre‑flighting of geautomatiseerde rapportgeneratie—kom je vaak deze exacte combinatie van eisen tegen. + +In deze tutorial lopen we een enkele, samenhangende workflow door die drie dingen achter elkaar doet: **pdf naar pdf/x-1a converteren**, **pdf-pagina png exporteren**, en **tekststempel pdf toevoegen**. De code maakt gebruik van de Aspose.Pdf‑bibliotheek voor .NET, zodat je een professionele oplossing krijgt zonder te worstelen met low‑level PDF‑internals. Aan het einde heb je een uitvoerbaar C#‑programma dat je in elke console‑app, Azure Function of CI‑stap kunt plaatsen. + +> **Wat je krijgt** – een volledig bronbestand, stap‑voor‑stap uitleg, tips voor veelvoorkomende valkuilen, en een snelle manier om de output te verifiëren. + +## Vereisten + +- .NET 6.0 of later (de API werkt met .NET Framework 4.x alsook). +- Aspose.Pdf for .NET NuGet‑pakket (`Aspose.Pdf`) – versie 23.10 is actueel op het moment van schrijven. +- Een invoer‑PDF (`input.pdf`) en een ICC‑profielbestand (`Coated_Fogra39L_VIGC_300.icc`) geplaatst in een map die jij beheert. +- Basiskennis van C# en Visual Studio (of je favoriete IDE). + +Als een van deze onbekend klinkt, installeer dan gewoon het NuGet‑pakket met: + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +## Stap 1: Laad het bron‑PDF‑document + +Het eerste wat we doen is de PDF openen waaraan we willen werken. De `Document`‑klasse van Aspose.Pdf vertegenwoordigt het volledige bestand, en laadt de inhoud lui, zodat je geen prestatie‑penalty betaalt totdat je daadwerkelijk de pagina's aanraakt. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*Waarom dit belangrijk is*: Het vroeg laden van het document geeft ons één object om rond te geven voor conversie, rendering en stempeling. Als je de expliciete load overslaat en probeert te werken met een niet‑bestaand bestand, krijg je later een cryptische `FileNotFoundException`. + +## Stap 2: Converteer het document naar PDF/X‑1a met een aangepast ICC‑profiel + +PDF/X‑1a is de de‑facto standaard voor print‑ready PDF's. De conversiestap laat je ook een **Output Intent** (het ICC‑profiel) insluiten zodat downstream RIP's precies weten hoe kleuren geïnterpreteerd moeten worden. + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*Pro tip*: Als je strengere foutafhandeling nodig hebt, vervang `ConvertErrorAction.Delete` door `ConvertErrorAction.Throw`. Op die manier stopt de conversie bij het eerste conformiteitsprobleem, wat handig is voor geautomatiseerde QA‑pipelines. + +## Stap 3: Exporteer de eerste pagina als PNG terwijl je lettertypen analyseert + +Een PNG‑preview is vaak nodig voor snelle visuele controles of thumbnail‑generatie. Door `AnalyzeFonts` in te schakelen, zorgt Aspose ervoor dat ingesloten lettertypen correct gerasterd worden, waardoor ontbrekende‑glyph verrassingen worden voorkomen. + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +Na het uitvoeren vind je `page1.png` naast je bronbestanden. Open het in een willekeurige beeldviewer om te bevestigen dat de conversie er goed uitziet. + +## Stap 4: Voeg een tekststempel toe die automatisch de lettergrootte aanpast + +Een **tekststempel** is een handige manier om een PDF te watermerken of te annoteren zonder de onderliggende content‑streams te wijzigen. Het instellen van `AutoAdjustFontSizeToFitStampRectangle` betekent dat de bibliotheek de tekst verkleint of vergroot zodat deze nooit buiten het door jou gedefinieerde rechthoekje stroomt. + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*Waarom auto‑size?* Als je later de stempeltekst wijzigt naar iets langer (bijv. een dynamische tijdstempel), hoef je de lettergroottes niet handmatig opnieuw te berekenen — de stempel past zich direct aan. + +## Stap 5: Sla het bijgewerkte PDF‑document op + +Tot slot schrijf je alles terug naar de schijf. Je kunt het originele bestand overschrijven of een gloednieuwe maken; het voorbeeld hieronder maakt `output.pdf`. + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +Wanneer het opslaan voltooid is, heb je: + +1. Een **PDF/X‑1a**‑conform bestand (`output.pdf`). +2. Een **PNG‑preview** van de eerste pagina (`page1.png`). +3. Een **tekststempel** die perfect binnen zijn rechthoek past. + +### Snelle verificatie‑checklist + +| ✅ Controle | Hoe te verifiëren | +|--------|---------------| +| PDF/X‑1a conformiteit | Open `output.pdf` in Adobe Acrobat → *Print Production* → *Preflight* en selecteer “PDF/X‑1a:2001”. | +| PNG ziet er goed uit | Open `page1.png` in Windows Photo Viewer of een andere beeldeditor. | +| Stempel verschijnt | Scroll door `output.pdf` – de tekst “Auto‑size” moet gecentreerd zijn op pagina 1. | + +![convert pdf to pdf/x-1a preview](image.png "pdf naar pdf/x-1a preview die gestempelde pagina toont") + +*Image alt text*: **pdf naar pdf/x-1a preview met auto‑size tekststempel** – toont de uiteindelijke PDF na alle stappen. + +## Veelvoorkomende variaties & randgevallen + +- **Meerdere pagina's** – Als je elke pagina wilt stempelen, loop dan over `pdfDoc.Pages` en roep `AddStamp` aan binnen de lus. +- **Ander uitvoerformaat** – Verander `PdfFormat.PDF_X_1A` naar `PdfFormat.PDF_A_1B` voor archiverings‑PDF's. +- **Hogere‑resolutie PNG** – Stel `Resolution = 600` in de `RenderingOptions` in voor thumbnails van print‑kwaliteit. +- **Aangepast lettertype voor de stempel** – Wijs `autoSizeStamp.Font = FontRepository.FindFont("Arial")` toe vóór het toevoegen van de stempel. +- **Foutafhandeling** – Plaats elke belangrijke stap in een `try/catch` en log `ConversionException` of `FileNotFoundException` voor makkelijker debuggen. + +## Volledig werkend voorbeeld (klaar om te kopiëren en plakken) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Setup paths + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Load the source document + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Convert to PDF/X‑1a (print‑ready) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Export first page as PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Add auto‑sizing text stamp (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/dutch/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..31c779446 --- /dev/null +++ b/pdf/dutch/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,267 @@ +--- +category: general +date: 2026-03-29 +description: PDF opslaan als HTML met Aspose.PDF in C#. Leer hoe je PDF naar HTML + converteert, afbeeldingen weghaalt en de PDF-handtekening verifieert in één tutorial. +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: nl +og_description: PDF opslaan als HTML met Aspose.PDF in C#. Deze gids laat zien hoe + je PDF naar HTML converteert, afbeeldingen overslaat en de digitale handtekening + van PDF valideert. +og_title: PDF opslaan als HTML met Aspose – Complete C#‑gids +tags: +- Aspose.PDF +- C# +- PDF processing +title: PDF opslaan als HTML met Aspose – Complete C#‑gids +url: /nl/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF opslaan als HTML met Aspose – Complete C# Guide + +Heb je je ooit afgevraagd hoe je **PDF kunt opslaan als HTML** zonder elke ingesloten afbeelding mee te nemen? Misschien bouw je een lichtgewicht webpreview en de extra afbeeldingspayload vertraagt je paginasnelheid. Het goede nieuws is dat je geen eigen parser hoeft te schrijven—Aspose.PDF doet het zware werk voor je. In deze tutorial gaan we **PDF naar HTML converteren**, de afbeeldingen verwijderen, en vervolgens **PDF-handtekening verifiëren** om er zeker van te zijn dat het document niet is gemanipuleerd. + +We lopen elke regel code stap voor stap door, leggen uit *waarom* elke instelling belangrijk is, en behandelen zelfs randgevallen zoals grote PDF's of ontbrekende handtekeningen. Aan het einde heb je een kant‑klaar C# console‑applicatie die een schone HTML‑file genereert en je een duidelijk true/false‑resultaat geeft voor de digitale handtekening. + +## Wat je zult leren + +- Een PDF‑bestand laden met Aspose.PDF. +- `HtmlSaveOptions` gebruiken om **PDF naar HTML te converteren** terwijl je afbeeldingen weglaat. +- De resulterende HTML opslaan op schijf. +- Een `PdfFileSignature`‑object instellen om **PDF-handtekening te verifiëren**. +- Het booleaanse resultaat interpreteren en veelvoorkomende valkuilen afhandelen. +- Bonus­tips voor prestaties en probleemoplossing. + +### Voorvereisten + +- .NET 6.0 of hoger (de code werkt ook met .NET Framework 4.7+). +- Aspose.PDF for .NET NuGet‑pakket (versie 23.12 of nieuwer). +- Een ondertekende PDF (`input.pdf`) die een handtekening met de naam “Sig1” bevat. +- Basiskennis van C# en console‑applicaties. + +> **Pro tip:** Als je het Aspose.PDF‑pakket nog niet hebt geïnstalleerd, voer dan `dotnet add package Aspose.PDF` uit vanuit je projectmap. + +--- + +## Stap 1: Laad het bron‑PDF‑document + +Voordat we iets kunnen doen, hebben we een in‑memory weergave van de PDF nodig. De `Document`‑klasse van Aspose.PDF leest het bestand en bouwt een boom van pagina's, resources en annotaties. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**Waarom dit belangrijk is:** Het document één keer laden houdt het geheugenverbruik voorspelbaar. Als je van plan bent om veel PDF's in een lus te verwerken, overweeg dan om dezelfde `Document`‑instantie opnieuw te gebruiken na het aanroepen van `pdfDocument.Dispose()`. + +--- + +## Stap 2: HTML‑opslaan‑opties configureren – Afbeeldingen overslaan + +We willen **PDF opslaan als HTML** maar zonder de zware afbeeldingsdata. `HtmlSaveOptions` geeft ons gedetailleerde controle, en de `SkipImages`‑vlag vertelt Aspose om ``‑tags volledig weg te laten. + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**Waarom je afbeeldingen zou kunnen overslaan:** Voor preview‑portalen of mobile‑first ontwerpen telt elke kilobyte. Het verwijderen van afbeeldingen omzeilt ook licentie‑problemen als de bron‑PDF auteursrechtelijk beschermde graphics bevat. + +--- + +## Stap 3: Exporteer de PDF als een HTML‑bestand zonder afbeeldingen + +Nu schrijven we daadwerkelijk het HTML‑bestand. De `Save`‑methode houdt rekening met de hierboven ingestelde opties. + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**Resultaat dat je zult zien:** Een `.html`‑bestand met de tekstuele inhoud, tabellen en vector‑graphics (indien aanwezig), maar zonder ``‑tags. Open het in een browser en je zou een schone, afbeelding‑vrije weergave van de originele PDF moeten zien. + +--- + +## Stap 4: Bereid een handtekening‑verifier voor voor hetzelfde document + +De `PdfFileSignature`‑klasse van Aspose.PDF stelt ons in staat digitale handtekeningen in de PDF te inspecteren. We maken een instantie aan die verwijst naar hetzelfde `Document` dat we al hebben geladen. + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**Opmerking over resource‑beheer:** De `using`‑statement zorgt ervoor dat de verifier eventuele native handles vrijgeeft zodra we klaar zijn, waardoor bestands‑lock‑problemen op Windows worden voorkomen. + +--- + +## Stap 5: Verifieer de handtekening met de naam “Sig1” met SHA‑3‑256 + +De meeste PDF's gebruiken SHA‑256 of SHA‑1, maar Aspose ondersteunt ook de nieuwere SHA‑3‑familie. Hier vragen we expliciet `Sha3_256` aan. Als de handtekening ontbreekt of het algoritme niet overeenkomt, retourneert de methode `false`. + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Wat “false” kan betekenen:** + +1. **Handtekening niet gevonden** – misschien gebruikt de PDF een andere naam; lijst handtekeningen met `signatureVerifier.GetSignatureNames()`. +2. **Algoritme‑mismatch** – de PDF kan ondertekend zijn met SHA‑256; probeer `DigestHashAlgorithm.Sha256`. +3. **Document gewijzigd** – elke wijziging na ondertekening maakt de hash ongeldig, wat resulteert in `false`. + +--- + +## Afhandelen van veelvoorkomende randgevallen + +### Grote PDF's + +Als je bron‑PDF enkele honderden megabytes overschrijdt, overweeg dan om **geheugensparende modus** in te schakelen: + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +Dit streamt pagina's on‑the‑fly, waardoor de RAM‑belasting wordt verminderd. + +### Ontbrekende handtekening + +Als je de naam van de handtekening niet zeker weet, som ze dan op: + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +Kies de juiste naam uit de lijst voordat je `VerifySignature` aanroept. + +### Browser‑compatibiliteit + +Sommige browsers hebben moeite met HTML die de standaard‑CSS van Aspose bevat. Het instellen van `htmlSaveOptions.EmbedCss = true` (zoals eerder getoond) maakt de stijlen inline, waardoor het bestand draagbaarder wordt. + +--- + +## Volledig werkend voorbeeld + +Hieronder staat het volledige, kant‑klaar te kopiëren programma dat alle stappen, foutafhandeling en optionele diagnostiek bevat. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Verwachte console‑output** (paden zullen verschillen): + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +Als de handtekening ongeldig is, zal de laatste regel lezen `Signature valid: False`. + +--- + +## Veelgestelde vragen + +**Q: Kan ik PDF naar HTML *met* afbeeldingen converteren?** +A: Absoluut. Stel gewoon `SkipImages = false` in (of laat de eigenschap weg). Aspose zal elke afbeelding als een apart bestand in een submap naast de HTML insluiten. + +**Q: Werkt dit op Linux?** +A: Ja. Aspose.PDF is cross‑platform; zorg er alleen voor dat de `YOUR_DIRECTORY`‑paden schuine strepen (forward slashes) gebruiken of `Path.Combine`. + +**Q: Wat als ik een digitale PDF‑handtekening moet valideren met een aangepast certificaat?** +A: Gebruik de overload van `PdfFileSignature.ValidateSignature` die een `X509Certificate2`‑object accepteert. Die methode retourneert ook een gedetailleerde `SignatureInfo` die je kunt inspecteren. + +**Q: Is `aspose convert pdf` beperkt tot C#?** +A: Nee. dezelfde API bestaat voor Java, Python en andere .NET‑talen. De concepten—laden, opties instellen, opslaan, verifiëren—blijven hetzelfde. + +## Conclusie + +Je weet nu precies hoe je **PDF kunt opslaan als HTML** met Aspose.PDF, onnodige afbeeldingen kunt verwijderen, en **PDF-handtekening kunt verifiëren** in één gestroomlijnd C#‑programma. Het proces is eenvoudig: laden, configureren, exporteren en valideren. Met de optionele diagnostiek en afhandeling van randgevallen kun je dit patroon aanpassen voor batch‑taken, webservices of desktop‑hulpmiddelen. + +Klaar voor de volgende stap? Probeer **PDF naar HTML converteren** terwijl je afbeeldingen behoudt, of experimenteer met verschillende hash‑algoritmen om **PDF‑digitale handtekening te valideren** tegen je eigen PKI. Je kunt ook Aspose’s PDF‑naar‑DOCX‑conversie verkennen of meerdere PDF's samenvoegen vóór het exporteren—elk een natuurlijke uitbreiding van de workflow die we net hebben gebouwd. + +Veel plezier met coderen, en moge je HTML‑previews lichtgewicht blijven en je handtekeningen betrouwbaar! + +![save pdf as html example](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/dutch/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..623015bf2 --- /dev/null +++ b/pdf/dutch/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-03-29 +description: PDF opslaan als HTML met C# en Aspose.PDF. Leer hoe je een pagina in + een PDF kunt invoegen, een lege PDF-pagina kunt toevoegen en een PKCS7 detached-handtekening + kunt maken in één workflow. +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: nl +og_description: PDF opslaan als HTML in C# met Aspose.PDF. Deze gids laat zien hoe + je een PDF laadt, een pagina invoegt, een lege pagina toevoegt, ondertekent met + PKCS7 en exporteert naar HTML. +og_title: PDF opslaan als HTML met C# – Volledige programmeertutorial +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: PDF opslaan als HTML met C# – Complete stap‑voor‑stapgids +url: /nl/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF opslaan als HTML met C# – Complete stap‑voor‑stap gids + +Heb je ooit **save PDF as HTML** moeten doen, maar wist je niet hoe je de lay-out intact kon houden terwijl je het brondocument aanpaste? Je bent niet de enige—ontwikkelaars moeten vaak paginering corrigeren, lege pagina's toevoegen en digitale handtekeningen toepassen vóór de conversie. In deze tutorial lopen we een enkel, samenhangend workflow door die precies dat doet, en we voegen toe hoe je **insert page into PDF**, **add blank PDF page**, en **create PKCS7 detached signature** kunt uitvoeren. + +Aan het einde van deze gids heb je een kant‑klaar C#‑programma dat een bestaande PDF laadt, de pagina's herschikt, de eerste pagina ondertekent, en uiteindelijk alles exporteert naar HTML met Unicode CMap‑prioriteit. Geen zwevende verwijzingen, alleen een zelfstandige oplossing die je in elk .NET‑project kunt gebruiken. + +## Wat je nodig hebt + +- **Aspose.PDF for .NET** (latest versie, 23.x op het moment van schrijven). +- **.NET 6.0** of later – de code compileert ook met .NET Framework 4.7, maar .NET 6 geeft de beste prestaties. +- Een **certificate file** (`.pfx`) en het wachtwoord ervoor voor de PKCS7‑handtekening. +- Een invoer‑PDF (`input.pdf`) die je wilt manipuleren. + +Als je die hebt, kunnen we direct naar de code gaan. Anders kun je een gratis 30‑daagse Aspose‑trial van de officiële site downloaden; de API is identiek aan de betaalde versie. + +--- + +## Stap 1 – PDF‑document laden in C# (Primaire actie) + +Het allereerste wat je moet doen is de PDF in het geheugen laden. De `Document`‑klasse van Aspose doet al het zware werk. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*Waarom dit belangrijk is:* Het laden van het bestand geeft je een mutabel objectmodel. Vanaf hier kun je **insert page into PDF**, lege pagina's toevoegen, of handtekeningen toepassen zonder het originele bestand op schijf aan te raken. + +--- + +## Stap 2 – Een pagina invoegen en een lege PDF‑pagina toevoegen + +Soms bevat de bron‑PDF pagineringsartefacten—misschien een ontbrekende pagina of een dubbele. Hieronder kopiëren we pagina 2 direct na pagina 1, en voegen we vervolgens een volledig lege pagina toe aan het einde. + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*Pro tip:* `UpdatePagination()` herberekent de paginanummers die verschijnen in voetteksten of kopteksten die door Aspose worden gegenereerd. Het overslaan van deze stap kan verouderde nummers in de uiteindelijke HTML achterlaten. + +--- + +## Stap 3 – Een PKCS7 detached handtekening maken (SHA‑512) + +Een detached PKCS7‑handtekening bewijst de integriteit van het document zonder de handtekeninggegevens direct in de PDF‑contentstream te embedden. We gebruiken een certificaat opgeslagen in een PFX‑bestand. + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*Waarom SHA‑512?* Het biedt een sterkere hash dan SHA‑256 en wordt nog steeds breed ondersteund. Als je moet voldoen aan oudere standaarden, vervang je `Sha512` door `Sha256`. + +--- + +## Stap 4 – De digitale handtekening toepassen op pagina 1 met een zichtbaar rechthoek + +We plaatsen een zichtbaar handtekeningveld op de eerste pagina. Het rechthoek definieert waar de handtekeningafbeelding (of placeholder) verschijnt. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*Randgeval:* Als de doelpagina al een formulierveld met dezelfde naam bevat, zal de API een uitzondering werpen. Zorg voor unieke veldnamen of verwijder bestaande velden vóór het ondertekenen. + +--- + +## Stap 5 – HTML‑opslaanopties configureren om Unicode CMap te prioriteren + +Bij het converteren naar HTML kan Aspose lettertypen embedden als base‑64, subsets gebruiken, of vertrouwen op Unicode CMaps. Het prioriteren van Unicode verkleint de bestandsgrootte en verbetert de doorzoekbaarheid van tekst. + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*Wat doet dit?* Het vertelt de converter om, waar mogelijk, Unicode CMaps te verkiezen boven het embedden van aangepaste lettertypen, wat ideaal is voor meertalige PDF‑bestanden. + +--- + +## Stap 6 – Het ondertekende document opslaan als HTML + +Tot slot schrijf je de verwerkte PDF weg als een HTML‑map (Aspose maakt een directory aan met ondersteunende bestanden zoals CSS en afbeeldingen). + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +Als je `cmap.html` in een browser opent, zie je de oorspronkelijke PDF‑lay-out gerenderd als HTML, compleet met de zichtbare handtekeningafbeelding op pagina 1. + +--- + +## Volledig werkend voorbeeld (Alle stappen gecombineerd) + +Hieronder staat het volledige programma dat je kunt copy‑pasten in een console‑applicatie. Het bevat alle benodigde `using`‑directieven en foutafhandeling. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**Expected result:** +- `cmap.html` (het hoofd‑HTML‑bestand) +- `cmap_files` map met CSS, afbeeldingen en lettertype‑resources. +- De eerste pagina toont een zichtbaar handtekeningvak op de door jou ingestelde coördinaten. + +--- + +## Veelgestelde vragen & randgevallen + +| Question | Answer | +|----------|--------| +| *Kan ik een zelfondertekend certificaat gebruiken?* | Ja, Aspose.PDF accepteert elke geldige PFX. Houd er echter rekening mee dat browsers de handtekening mogelijk als onbetrouwbaar markeren. | +| *Wat als ik meerdere pagina's moet ondertekenen?* | Maak aparte `PdfFileSignature`‑aanroepen voor elke pagina, of gebruik een lus die `pageNumber` bijwerkt. | +| *Is er een manier om de handtekeningafbeelding in te sluiten in plaats van een rechthoek?* | Geef een `SignatureAppearance`‑object met een afbeelding‑stream door aan `PdfFileSignature.Sign`. | +| *Mijn PDF bevat versleutelde inhoud—kan ik toch converteren?* | Decrypt het eerst met `pdfDoc.Decrypt("ownerPassword")`, daarna voer je de stappen uit. | +| *Zal de HTML de hyperlinks van de originele PDF behouden?* | Aspose behoudt link‑annotaties standaard. Als je ontbrekende links ziet, stel dan `htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;` in. | + +--- + +## Afronding + +We hebben zojuist laten zien hoe je **save PDF as HTML** kunt doen terwijl je tegelijkertijd **insert page into PDF**, **add blank PDF page**, en **create PKCS7 detached signature** uitvoert—alles met C#. De workflow is lineair, gemakkelijk te debuggen, en volledig aanpasbaar voor grotere projecten. + +Vervolgens wil je misschien verkennen: + +- **Batch processing** – loop over een map met PDF‑bestanden en converteer elk bestand. +- **Custom CSS** – pas `HtmlSaveOptions.CustomCss` aan om overeen te komen met de styling van je site. +- **Advanced signatures** – gebruik timestamp‑servers of LTV (Long‑Term Validation) voor handtekeningen van compliance‑niveau. + +Probeer ze uit, en je hebt een robuuste PDF‑naar‑HTML‑pipeline die zowel SEO‑vriendelijk als citaat‑waardig is voor AI‑assistenten. Veel plezier met coderen! + +![Diagram dat PDF geladen, pagina's ingevoegd, handtekening toegepast, en vervolgens HTML-output toont](/images/save-pdf-as-html-workflow.png "pdf opslaan als html workflow") + +*Afbeeldings‑alt‑tekst:* **pdf opslaan als html workflow diagram** + +{{< /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 0f4ee3473..f3b225603 100644 --- a/pdf/dutch/net/digital-signatures/_index.md +++ b/pdf/dutch/net/digital-signatures/_index.md @@ -62,6 +62,9 @@ Leer hoe u een PDF-document laadt, converteert naar PDF/X‑4 en de aanwezige ha ### [PDF-handtekening valideren met Aspose – PDF naar HTML converteren](./validate-pdf-signature-with-aspose-convert-pdf-to-html/) Leer hoe u een PDF-handtekening valideert en het document naar HTML converteert met Aspose.PDF voor .NET. +### [Hoe PDF te ondertekenen en afbeeldingen toe te voegen – Complete C#‑handleiding](./how-to-sign-pdf-and-add-images-complete-c-guide/) +Leer stap‑voor‑stap hoe u PDF‑bestanden ondertekent en afbeeldingen toevoegt met C# en Aspose.PDF. + ## Aanvullende bronnen - [Aspose.PDF voor Netdocumentatie](https://docs.aspose.com/pdf/net/) diff --git a/pdf/dutch/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/dutch/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..09a3065bf --- /dev/null +++ b/pdf/dutch/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,249 @@ +--- +category: general +date: 2026-03-29 +description: Hoe PDF te ondertekenen met een digitale handtekening en een bijgesneden + afbeelding toe te voegen in C#. Leer hoe je een digitale handtekening aan een PDF + toevoegt, een afbeelding bijsnijdt voor een PDF, en eenvoudig een afbeelding aan + een PDF toevoegt. +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: nl +og_description: Hoe een PDF te ondertekenen met een digitale handtekening en een bijgesneden + afbeelding in te sluiten met Aspose.Pdf in C#. Volg deze gids voor een volledige + oplossing. +og_title: Hoe PDF te ondertekenen en afbeeldingen toe te voegen – Stapsgewijze C#‑handleiding +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: Hoe PDF te ondertekenen en afbeeldingen toe te voegen – Complete C#‑gids +url: /nl/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe PDF ondertekenen en afbeeldingen toevoegen – Complete C# gids + +Heb je je ooit afgevraagd **hoe je PDF**‑bestanden programmatically kunt ondertekenen terwijl je ook een aangepaste afbeelding invoegt? Misschien bouw je een goedkeuringsworkflow en heb je een juridisch bindende handtekening *en* een miniatuur van de foto van de ondertekenaar op dezelfde pagina nodig. Kortom, je wilt **add digital signature pdf**‑inhoud toevoegen, die afbeelding bijsnijden, en vervolgens **add image to pdf** zonder moeite. + +Deze tutorial leidt je stap voor stap – van het laden van een ECDSA PKCS#7‑certificaat tot het bijsnijden van een JPEG en het stempelen ervan op de ondertekende pagina. Aan het einde heb je één enkel, uitvoerbaar C#‑bestand dat pagina 1 ondertekent, een foto bijsnijdt tot 400 × 400 px, en deze op een precieze locatie plaatst. Geen externe scripts, geen toverspreuken, alleen heldere code en uitleg. + +## Prerequisites + +- .NET 6.0 of later (de code werkt ook met .NET Framework 4.7+) +- **Aspose.Pdf for .NET** NuGet‑package (versie 23.9 of nieuwer) +- Een ECDSA P‑256‑certificaat in PKCS#7 (`.pfx`)‑formaat en het bijbehorende wachtwoord +- Een JPEG‑afbeelding die je wilt insluiten (bijv. `photo.jpg`) + +> **Pro tip:** Houd je certificaatbestand buiten versiebeheer en bescherm het wachtwoord met een secret manager. + +--- + +## Step 1: Set Up the Project and Imports + +First, create a console app (or integrate this into any existing service). Add the Aspose.Pdf reference: + +```bash +dotnet add package Aspose.Pdf +``` + +Then include the required namespaces: + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +These `using` statements give you access to the `Document`, `Signature`, and `Rectangle` classes we’ll need later. + +## Step 2: Load the PDF and Prepare the Signature + +We’ll open an existing PDF (`source.pdf`) and create a **digital signature pdf** object that uses a PKCS#7 detached signature. The certificate is an ECDSA P‑256 key, which is widely accepted for compliance. + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**Why this matters:** Using a detached PKCS#7 signature keeps the original PDF content intact while embedding a cryptographic hash. This is the industry‑standard approach for legally‑binding PDFs. + +## Step 3: Apply the Digital Signature to a Specific Page + +Now we’ll place the visible signature field on **page 1**. The rectangle defines where the signature box appears (coordinates are in points, where 1 inch = 72 points). + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +If you don’t need a visible box, set `isVisible` to `false`. The `signatureRect` can be adjusted to match your document layout. + +## Step 4: Open the Image Stream and Define Crop Areas + +We’ll read the JPEG file into a stream and specify a **source rectangle** that selects the top‑left 400 × 400 pixels. This is the **crop image for pdf** operation. + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **Edge case:** If your image is smaller than 400 × 400, the crop will automatically clamp to the image’s actual dimensions—no exception is thrown. + +## Step 5: Define Where the Cropped Image Should Appear + +Next, set the **destination rectangle** on the PDF page. In this example we place the image at (50, 50) with a size of 200 × 200 points (≈2.78 inches square). + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +Feel free to experiment: change the X/Y coordinates to move the picture, or adjust width/height for scaling. + +## Step 6: Insert the Cropped Image onto the Signed Page + +Finally, we add the image to **page 1** (the same page that now carries the signature). The `AddImage` overload we use accepts the source and destination rectangles, effectively performing the crop and placement in one call. + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +Behind the scenes, Aspose.Pdf extracts the 400 × 400 pixel region, rescales it to 200 × 200 points, and writes it into the PDF content stream. + +## Step 7: Save the Signed and Image‑Enhanced PDF + +After all modifications, persist the document. You can overwrite the original or write to a new file. + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +When you open `output_signed.pdf` in Adobe Acrobat or any PDF viewer, you’ll see: + +- A visible signature field at the coordinates you specified. +- The cropped photo placed at (50, 50) on page 1. +- The digital signature validated (provided the viewer trusts your certificate). + +--- + +## Frequently Asked Questions (FAQ) + +| Vraag | Antwoord | +|-------|----------| +| **Kan ik een andere pagina ondertekenen?** | Verander het `pageNumber`‑argument in `signature.Sign` naar elk geldig paginanummer (1‑gebaseerd). | +| **Wat als ik meerdere handtekeningen nodig heb?** | Maak voor elke pagina of locatie een nieuwe `Signature`‑instantie, en hergebruik dezelfde `pkcsSignature` als hetzelfde certificaat geldt. | +| **Is het bijsnijden van de afbeelding beperkt tot rechthoeken?** | Ja, `AddImage` van Aspose.Pdf werkt met rechthoekige regio’s. Voor complexe vormen moet je de afbeelding vooraf bewerken (bijv. met System.Drawing) voordat je deze insluit. | +| **Hoe maak ik de handtekening onzichtbaar?** | Zet `isVisible` op `false` en laat `signatureRect` weg. De handtekening blijft cryptografisch geldig. | +| **Welke formaten kan ik naast JPEG insluiten?** | PNG, BMP, GIF en TIFF worden allemaal ondersteund. Pas gewoon het bestandspad aan en zorg dat de stream de juiste bytes leest. | + +--- + +## Full Working Example + +Below is the complete, self‑contained program. Copy‑paste it into `Program.cs`, adjust the paths, and run. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**Expected result:** Opening `output_signed.pdf` shows a signature field (100 × 100 → 300 × 300 points) and a 200 × 200‑point picture derived from the top‑left corner of `photo.jpg`. The signature validates against the supplied ECDSA certificate. + +--- + +## Wrapping Up + +We’ve covered **how to sign PDF** files, how to **add digital signature pdf** to a specific page, how to **crop image for pdf**, and finally how to **add image to pdf** using Aspose.Pdf in C#. The whole flow—from loading the certificate to saving the final document—fits into a single, easy‑to‑read source file. + +If you’re ready for the next challenge, consider: + +- Adding **multiple signatures** on different pages (use the “digital signature pdf page” concept). +- Embedding **QR codes** that link to verification services. +- Automating the process in an ASP.NET Core API for on‑the‑fly PDF generation. + +Remember, the key to robust PDF automation is clear separation of concerns: signature handling, image processing, and final document assembly. Play with the coordinates, swap out the image format, or experiment with timestamping—your workflow is now fully extensible. + +Got questions, edge‑case scenarios, or a cool use‑case to share? Drop a comment below, and 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-security-and-signatures/_index.md b/pdf/dutch/net/programming-with-security-and-signatures/_index.md index dfdea9358..25a9dda08 100644 --- a/pdf/dutch/net/programming-with-security-and-signatures/_index.md +++ b/pdf/dutch/net/programming-with-security-and-signatures/_index.md @@ -36,6 +36,7 @@ De tutorial geeft u een gedetailleerd overzicht van methoden en technieken om de | [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#. | | [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-bestanden repareren – Complete C#-gids met Aspose.Pdf](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | Leer hoe u beschadigde PDF-bestanden kunt repareren met Aspose.PDF voor .NET in C#. Volg onze stapsgewijze handleiding. | +| [PDF digitale handtekening valideren – Complete C#-gids](./validate-pdf-digital-signature-complete-c-guide/) | Leer hoe u digitale handtekeningen in PDF's valideert met Aspose.PDF voor .NET in C#. Volg onze stapsgewijze handleiding. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/dutch/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/dutch/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..b1ca93f01 --- /dev/null +++ b/pdf/dutch/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,262 @@ +--- +category: general +date: 2026-03-29 +description: Valideer PDF‑digitale handtekening snel. Leer hoe u een PDF‑handtekening + verifieert, de status van een PDF‑handtekening controleert en een gemanipuleerde + PDF detecteert met Aspose.Pdf in C#. +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: nl +og_description: Valideer digitale PDF-handtekening in C#. Deze tutorial laat zien + hoe je een PDF-handtekening kunt verifiëren, de integriteit van de PDF-handtekening + kunt controleren en een gemanipuleerde PDF kunt detecteren met Aspose.Pdf. +og_title: PDF Digitale Handtekening Valideren – Complete C#‑gids +tags: +- C# +- Aspose.Pdf +- PDF Security +title: PDF Digitale Handtekening Valideren – Complete C# Gids +url: /nl/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF Digitale Handtekening Valideren – Complete C# Gids + +Heb je je ooit afgevraagd **hoe je een PDF-handtekening kunt verifiëren** zonder je haar uit te trekken? Misschien kreeg je een contract, opende het, en moest je 100 % zeker weten dat het niet is aangepast. Het goede nieuws is dat je geen forensisch laboratorium nodig hebt—slechts een paar regels C# en Aspose.Pdf kunnen **PDF digitale handtekening valideren** in een handomdraai. + +In deze tutorial lopen we alles door wat je moet weten: van het installeren van de bibliotheek tot het interpreteren van het resultaat, en zelfs het afhandelen van randgevallen zoals meerdere handtekeningen of een beschadigd bestand. Aan het einde kun je **PDF-handtekening controleren** programmatically en **vervalste PDF**‑bestanden detecteren voordat ze problemen veroorzaken. + +## Wat je nodig hebt + +- **.NET 6.0 of later** (de code werkt ook op .NET Framework, maar .NET 6 is de ideale keuze). +- **Aspose.Pdf for .NET** – haal het op via NuGet (`Install-Package Aspose.Pdf`). +- Een **ondertekende PDF** die je wilt testen. Als je er geen hebt, maak dan een eenvoudig ondertekend document met Adobe Acrobat of een andere PDF‑ondertekenaar. + +> Pro tip: Houd je PDF‑bestanden buiten de hoofdmap van het project; een relatief pad zoals `./Samples/signed.pdf` werkt prima en voorkomt per ongeluk committen van vertrouwelijke bestanden. + +## Stap‑voor‑stap Implementatie + +Hieronder splitsen we de oplossing op in logische blokken. Elk blok krijgt zijn eigen H2‑kop—een van hen bevat zelfs het primaire zoekwoord, zodat we voldoen aan de SEO‑regel. + +### ## Stap 1 – Installeer en Verwijs naar Aspose.Pdf + +Voeg eerst het NuGet‑pakket toe aan je project: + +```powershell +dotnet add package Aspose.Pdf +``` + +Of, als je de Package Manager Console gebruikt: + +```powershell +Install-Package Aspose.Pdf +``` + +Na installatie voegt Visual Studio automatisch de `using Aspose.Pdf;` namespace toe. Geen extra DLL‑gedoe nodig. + +### ## Stap 2 – Laad het Ondertekende PDF‑Document + +Nu openen we het bestand daadwerkelijk. De `using`‑statement zorgt ervoor dat het document correct wordt vrijgegeven, wat vooral belangrijk is bij grote PDF’s. + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +> **Waarom dit belangrijk is:** Het laden van het document geeft ons toegang tot het `DigitalSignatureInfo`‑object, het startpunt voor alle handtekening‑gerelateerde queries. + +### ## Stap 3 – Haal Digitale Handtekeninginformatie op + +Aspose.Pdf verbergt de low‑level PKI‑details achter een gebruiksvriendelijke API. Haal de `DigitalSignatureInfo`‑property op en je hebt alles wat je nodig hebt om de **PDF-handtekening**‑gezondheid te **controleren**. + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +Bevat de PDF meerdere handtekeningen, dan aggregeert `signatureInfo` ze, met eigenschappen zoals `Count`, `Certificates` en `IsCompromised`. Voor een enkel‑handtekeningbestand zullen die collecties slechts één item bevatten. + +### ## Stap 4 – Bepaal of de Handtekening Gecompromitteerd is + +De `IsCompromised`‑vlag vertelt je of het document is aangepast **nadat** het is ondertekend. Een `true`‑waarde betekent dat de PDF is gemanipuleerd—precies wat we willen **vervalste PDF** detecteren. + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +Als je de **PDF-handtekening** grondiger wilt **verifiëren** (bijv. certificaatketenvalidatie), kun je ook `signatureInfo.Certificates` onderzoeken en `Validate()` aanroepen op elk certificaat. Voor de meeste scenario’s is `IsCompromised` voldoende. + +### ## Stap 5 – Geef het Resultaat weer in de Console + +Tot slot laten we de gebruiker weten wat er is gebeurd. We printen een vriendelijke boodschap en retourneren ook een passende exit‑code voor automatiseringsscripts. + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### Verwachte Output + +``` +Signature compromised: False +``` + +Als je de PDF opzettelijk manipuleert (bijv. een willekeurig teken toevoegt), keert de output om naar `True`. Dat is het moment waarop je weet dat de integriteit van het document is verbroken. + +### ## Randgevallen en Veelvoorkomende Valkuilen + +#### 1. Meerdere Handtekeningen + +Wanneer een PDF meer dan één ondertekenaar heeft, geeft `IsCompromised` de *algemene* status weer—als **een** handtekening defect is, wordt de vlag `true`. Om te achterhalen welke ondertekenaar in de fout gaat: + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. Ontbrekende Handtekening + +Is de PDF helemaal niet ondertekend, dan is `signatureInfo.Count` `0`. Je moet een vals gevoel van veiligheid voorkomen: + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. Beschadigd PDF‑Bestand + +Een beschadigd bestand gooit een `PdfException`. Omhul de laadlogica met een try‑catch om een nette foutmelding te geven: + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. Certificaatvalidatie (Geavanceerd) + +Als je moet verzekeren dat het ondertekeningscertificaat nog geldig is (niet ingetrokken, binnen de geldigheidsperiode), kun je aanroepen: + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +Deze stap brengt je van een eenvoudige **PDF-handtekening controleren** naar een volledige **hoe PDF-handtekening verifiëren** workflow. + +### ## Volledig Werkend Voorbeeld + +Alles bij elkaar, hier is het complete, kant‑klaar programma: + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +Voer het programma uit vanaf de commandoregel: + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +Je zou een duidelijk rapport moeten zien dat aangeeft of de PDF intact is, welke ondertekenaar(s) betrokken zijn, en of hun certificaten nog betrouwbaar zijn. + +## Visueel Overzicht + +Hieronder staat een snel diagram dat de stroom van **PDF laden** naar **validatieresultaat outputten** illustreert. Het is een handige referentie wanneer je de architectuur van een grotere document‑verwerkingspipeline schetst. + +![validate pdf digital signature workflow diagram](image.png "Diagram showing PDF load → DigitalSignatureInfo → IsCompromised check") + +*Alt text: validate pdf digital signature workflow diagram* + +## Conclusie + +We hebben zojuist een **complete, end‑to‑end oplossing** behandeld om PDF digitale handtekening te valideren met Aspose.Pdf in C#. De belangrijkste punten: + +- Laad de PDF met `Document`. +- Haal `DigitalSignatureInfo` op en controleer `IsCompromised` om **vervalste PDF** te **detecteren**. +- Behandel meerdere handtekeningen, ontbrekende handtekeningen en beschadigde bestanden op een robuuste manier. +- Valideer optioneel het ondertekeningscertificaat voor een volledige **hoe PDF-handtekening verifiëren** checklist. + +Vanaf hier kun je de logica uitbreiden—validatieresultaten opslaan in een database, onbevoegde uploads afwijzen in een web‑API, of integreren met een document‑managementsysteem. Als je nieuwsgierig bent naar andere PDF‑beveiligingsfuncties, kijk dan naar **PDF‑handtekening timestamps controleren**, **een nieuwe handtekening toevoegen**, of **PDF’s versleutelen**. + +Heb je vragen over randgevallen, of wil je zien hoe je **PDF-handtekening verifieert** met een andere bibliotheek zoals iText 7? Laat een reactie achter, en laten we het gesprek voortzetten. 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/conversion-export/_index.md b/pdf/english/net/conversion-export/_index.md index 6512642a3..78f3a3303 100644 --- a/pdf/english/net/conversion-export/_index.md +++ b/pdf/english/net/conversion-export/_index.md @@ -104,6 +104,9 @@ Learn how to convert PDF files to XML format with Aspose.PDF for .NET. Enhance d ### [Convert PDF/A to Standard PDF Using Aspose.PDF .NET: A Comprehensive Guide](./convert-pdf-a-standard-pdf-aspose-net/) Learn how to seamlessly convert PDF/A documents into standard PDFs using Aspose.PDF for .NET with this step-by-step guide. +### [convert pdf to pdf/x-1a, export page png & add text stamp](./convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/) +Learn how to convert a PDF to PDF/X-1a, export a page as PNG, and add a text stamp using Aspose.PDF for .NET. + ### [Convert PDFs to Interactive HTML with Custom CSS Using Aspose.PDF .NET](./convert-pdfs-to-html-custom-css-aspose-pdf-net/) Learn how to transform PDF documents into interactive, web-friendly HTML formats using Aspose.PDF .NET, complete with custom CSS styling. @@ -216,7 +219,7 @@ Learn how to manage missing fonts by substituting them and convert PDFs into sta Learn how to optimize PDF to HTML conversion using Aspose.PDF for .NET, focusing on efficient font resource handling and seamless integration. ### [PDF to HTML Conversion Using Aspose.PDF .NET: Save Images as External PNGs](./pdf-to-html-conversion-external-png-aspose-pdf-net/) -Learn how to convert PDF documents to HTML with external PNG images using Aspose.PDF for .NET. This guide ensures layout preservation and web performance optimization. +Learn how to convert PDF documents to HTML with external PNG images using Aspose.PDF .NET. This guide ensures layout preservation and web performance optimization. ### [PDF to HTML Conversion with Aspose.PDF .NET: A Comprehensive Guide](./aspose-pdf-net-pdf-to-html-conversion/) Master PDF-to-HTML conversion using Aspose.PDF for .NET. Enhance document accessibility and engagement with customizable options. @@ -227,6 +230,12 @@ A code tutorial for Aspose.PDF Net ### [PDF to TIFF Conversion in .NET Using Aspose.PDF: A Step-by-Step Guide](./pdf-to-tiff-conversion-aspose-pdf-net/) Learn how to convert PDF documents to TIFF images using Aspose.PDF for .NET. Master custom color depths and advanced image processing techniques. +### [Save PDF as HTML with Aspose – Complete C# Guide](./save-pdf-as-html-with-aspose-complete-c-guide/) +Learn how to save PDF files as HTML using Aspose.PDF in C#, covering setup, conversion options, and code examples. + +### [Save PDF as HTML with C# – Complete Step‑by‑Step Guide](./save-pdf-as-html-with-c-complete-step-by-step-guide/) +Learn how to convert PDF files to HTML using Aspose.PDF for .NET with C#, including setup, options, and detailed code examples. + ## Additional Resources - [Aspose.PDF for Net Documentation](https://docs.aspose.com/pdf/net/) @@ -241,4 +250,4 @@ Learn how to convert PDF documents to TIFF images using Aspose.PDF for .NET. Mas {{< /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/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/english/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..7af2a3951 --- /dev/null +++ b/pdf/english/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-03-29 +description: convert pdf to pdf/x-1a and export pdf page png in one flow – also learn + how to add text stamp pdf using Aspose.Pdf (C#). +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: en +og_description: convert pdf to pdf/x-1a and export pdf page png while adding a text + stamp pdf – complete C# guide with Aspose.Pdf. +og_title: convert pdf to pdf/x-1a, export page png & add text stamp +tags: +- Aspose.Pdf +- C# +- PDF processing +title: convert pdf to pdf/x-1a, export page png & add text stamp +url: /net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# convert pdf to pdf/x-1a, export page png & add text stamp – Complete C# Guide + +Ever needed to **convert pdf to pdf/x-1a** but also wanted a quick PNG preview of the first page and a custom text stamp on the same document? You’re not alone. In many production pipelines—think print‑ready pre‑flighting or automated report generation—you’ll often hit that exact combination of requirements. + +In this tutorial we’ll walk through a single, cohesive workflow that does three things in a row: **convert pdf to pdf/x-1a**, **export pdf page png**, and **add text stamp pdf**. The code uses the Aspose.Pdf library for .NET, so you get a professional‑grade solution without wrestling with low‑level PDF internals. By the end you’ll have a runnable C# program that you can drop into any console app, Azure Function, or CI step. + +> **What you’ll get** – a full source file, step‑by‑step explanations, tips for common pitfalls, and a quick way to verify the output. + +## Prerequisites + +- .NET 6.0 or later (the API works with .NET Framework 4.x as well). +- Aspose.Pdf for .NET NuGet package (`Aspose.Pdf`) – version 23.10 is current at the time of writing. +- An input PDF (`input.pdf`) and an ICC profile file (`Coated_Fogra39L_VIGC_300.icc`) placed in a folder you control. +- Basic familiarity with C# and Visual Studio (or your favorite IDE). + +If any of those sound unfamiliar, just install the NuGet package with: + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +Now let’s dive in. + +## Step 1: Load the source PDF document + +The first thing we do is open the PDF we want to work on. Aspose.Pdf’s `Document` class represents the whole file, and it lazily loads content, so you don’t pay a performance penalty until you actually touch the pages. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*Why this matters*: Loading the document early gives us a single object to pass around for conversion, rendering, and stamping. If you skip the explicit load and try to work on a non‑existent file, you’ll get a cryptic `FileNotFoundException` later on. + +## Step 2: Convert the document to PDF/X‑1a using a custom ICC profile + +PDF/X‑1a is the de‑facto standard for print‑ready PDFs. The conversion step also lets you embed an **Output Intent** (the ICC profile) so downstream RIPs know exactly how colors should be interpreted. + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*Pro tip*: If you need stricter error handling, replace `ConvertErrorAction.Delete` with `ConvertErrorAction.Throw`. That way the conversion will abort on the first compliance issue, which is handy for automated QA pipelines. + +## Step 3: Export the first page as a PNG while analyzing fonts + +A PNG preview is often required for quick visual checks or thumbnail generation. By enabling `AnalyzeFonts`, Aspose makes sure any embedded fonts are correctly rasterized, avoiding missing‑glyph surprises. + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +After this runs you’ll find `page1.png` next to your source files. Open it in any image viewer to confirm the conversion looks right. + +## Step 4: Add a text stamp that automatically adjusts its font size + +A **text stamp** is a handy way to watermark or annotate a PDF without altering the underlying content streams. Setting `AutoAdjustFontSizeToFitStampRectangle` means the library will shrink or grow the text so it never overflows the rectangle you define. + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*Why auto‑size?* If you later change the stamp text to something longer (e.g., a dynamic timestamp), you won’t have to recalculate font sizes manually—the stamp adapts on the fly. + +## Step 5: Save the updated PDF document + +Finally, write everything back to disk. You can either overwrite the original file or create a brand‑new one; the example below creates `output.pdf`. + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +When the save completes, you have: + +1. A **PDF/X‑1a** compliant file (`output.pdf`). +2. A **PNG preview** of the first page (`page1.png`). +3. A **text stamp** that fits perfectly within its rectangle. + +### Quick verification checklist + +| ✅ Check | How to verify | +|--------|---------------| +| PDF/X‑1a compliance | Open `output.pdf` in Adobe Acrobat → *Print Production* → *Preflight* and select “PDF/X‑1a:2001”. | +| PNG looks right | Open `page1.png` in Windows Photo Viewer or any image editor. | +| Stamp appears | Scroll through `output.pdf` – the text “Auto‑size” should be centered on page 1. | + +![convert pdf to pdf/x-1a preview](image.png "convert pdf to pdf/x-1a preview showing stamped page") + +*Image alt text*: **convert pdf to pdf/x-1a preview with auto‑size text stamp** – demonstrates the final PDF after all steps. + +## Common Variations & Edge Cases + +- **Multiple pages** – If you need to stamp every page, loop over `pdfDoc.Pages` and call `AddStamp` inside the loop. +- **Different output format** – Change `PdfFormat.PDF_X_1A` to `PdfFormat.PDF_A_1B` for archival PDFs. +- **Higher‑resolution PNG** – Set `Resolution = 600` in the `RenderingOptions` for print‑quality thumbnails. +- **Custom font for the stamp** – Assign `autoSizeStamp.Font = FontRepository.FindFont("Arial")` before adding the stamp. +- **Error handling** – Wrap each major step in a `try/catch` and log `ConversionException` or `FileNotFoundException` for easier debugging. + +## Full Working Example (Copy‑Paste Ready) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Setup paths + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Load the source document + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Convert to PDF/X‑1a (print‑ready) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Export first page as PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Add auto‑sizing text stamp (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/english/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..7ee122ab3 --- /dev/null +++ b/pdf/english/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,268 @@ +--- +category: general +date: 2026-03-29 +description: Save PDF as HTML using Aspose.PDF in C#. Learn how to convert PDF to + HTML, omit images, and verify PDF signature in a single tutorial. +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: en +og_description: Save PDF as HTML with Aspose.PDF in C#. This guide shows you how to + convert PDF to HTML, skip images, and validate PDF digital signature. +og_title: Save PDF as HTML with Aspose – Complete C# Guide +tags: +- Aspose.PDF +- C# +- PDF processing +title: Save PDF as HTML with Aspose – Complete C# Guide +url: /net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Save PDF as HTML with Aspose – Complete C# Guide + +Ever wondered how to **save PDF as HTML** without pulling in every embedded picture? Maybe you’re building a lightweight web preview and the extra image payload is killing your page speed. The good news is you don’t need to write a custom parser—Aspose.PDF does the heavy lifting for you. In this tutorial we’ll **convert PDF to HTML**, strip out the images, and then **verify PDF signature** to make sure the document hasn’t been tampered with. + +We’ll walk through every line of code, explain *why* each setting matters, and even touch on edge‑cases like large PDFs or missing signatures. By the end you’ll have a ready‑to‑run C# console app that produces a clean HTML file and gives you a clear true/false result for the digital signature. + +## What You’ll Learn + +- Load a PDF file with Aspose.PDF. +- Use `HtmlSaveOptions` to **convert PDF to HTML** while omitting images. +- Save the resulting HTML to disk. +- Set up a `PdfFileSignature` object to **verify PDF signature**. +- Interpret the boolean result and handle common pitfalls. +- Bonus tips for performance and troubleshooting. + +### Prerequisites + +- .NET 6.0 or later (the code also works on .NET Framework 4.7+). +- Aspose.PDF for .NET NuGet package (version 23.12 or newer). +- A signed PDF (`input.pdf`) that contains a signature named “Sig1”. +- Basic familiarity with C# and console applications. + +> **Pro tip:** If you haven’t installed the Aspose.PDF package yet, run `dotnet add package Aspose.PDF` from your project folder. + +--- + +## Step 1: Load the Source PDF Document + +Before we can do anything, we need an in‑memory representation of the PDF. Aspose.PDF’s `Document` class reads the file and builds a tree of pages, resources, and annotations. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**Why this matters:** Loading the document once keeps memory usage predictable. If you plan to process many PDFs in a loop, consider re‑using the same `Document` instance after calling `pdfDocument.Dispose()`. + +--- + +## Step 2: Configure HTML Save Options – Skip Images + +We want to **save PDF as HTML** but without the heavy image data. `HtmlSaveOptions` gives us granular control, and the `SkipImages` flag tells Aspose to leave out `` tags entirely. + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**Why you might skip images:** For preview portals or mobile‑first designs, every kilobyte counts. Removing images also sidesteps licensing concerns if the source PDF contains copyrighted graphics. + +--- + +## Step 3: Export the PDF as an HTML File Without Images + +Now we actually write the HTML file. The `Save` method respects the options we set above. + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**Result you’ll see:** An `.html` file containing the textual content, tables, and vector graphics (if any), but no `` tags. Open it in a browser and you should see a clean, image‑free rendering of the original PDF. + +--- + +## Step 4: Prepare a Signature Verifier for the Same Document + +Aspose.PDF’s `PdfFileSignature` class lets us inspect digital signatures embedded in the PDF. We’ll create an instance that points to the same `Document` we already loaded. + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**Note on resource handling:** The `using` statement ensures the verifier releases any native handles once we’re done, preventing file‑lock issues on Windows. + +--- + +## Step 5: Verify the Signature Named “Sig1” Using SHA‑3‑256 + +Most PDFs use SHA‑256 or SHA‑1, but Aspose also supports the newer SHA‑3 family. Here we explicitly request `Sha3_256`. If the signature is missing or the algorithm mismatches, the method returns `false`. + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**What “false” could mean:** + +1. **Signature not found** – maybe the PDF uses a different name; list signatures with `signatureVerifier.GetSignatureNames()`. +2. **Algorithm mismatch** – the PDF might have been signed with SHA‑256; try `DigestHashAlgorithm.Sha256`. +3. **Document altered** – any change after signing invalidates the hash, resulting in `false`. + +--- + +## Handling Common Edge Cases + +### Large PDFs + +If your source PDF exceeds a few hundred megabytes, consider enabling **memory‑saving mode**: + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +This streams pages on demand, reducing RAM pressure. + +### Missing Signature + +When you’re unsure of the signature name, enumerate them: + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +Pick the correct name from the list before calling `VerifySignature`. + +### Browser Compatibility + +Some browsers struggle with HTML that contains Aspose’s default CSS. Setting `htmlSaveOptions.EmbedCss = true` (as shown earlier) inlines the styles, making the file more portable. + +--- + +## Full Working Example + +Below is the complete, copy‑and‑paste‑ready program that includes all the steps, error handling, and optional diagnostics. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Expected console output** (paths will differ): + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +If the signature is invalid, the last line will read `Signature valid: False`. + +--- + +## Frequently Asked Questions + +**Q: Can I convert PDF to HTML *with* images?** +A: Absolutely. Just set `SkipImages = false` (or omit the property). Aspose will embed each image as a separate file in a sub‑folder next to the HTML. + +**Q: Does this work on Linux?** +A: Yes. Aspose.PDF is cross‑platform; just make sure the `YOUR_DIRECTORY` paths use forward slashes or `Path.Combine`. + +**Q: What if I need to validate a PDF digital signature with a custom certificate?** +A: Use `PdfFileSignature.ValidateSignature` overload that accepts a `X509Certificate2` object. That method will also return a detailed `SignatureInfo` you can inspect. + +**Q: Is `aspose convert pdf` limited to C#?** +A: No. The same API exists for Java, Python, and other .NET languages. The concepts—load, set options, save, verify—stay the same. + +--- + +## Conclusion + +You now know precisely how to **save PDF as HTML** using Aspose.PDF, strip out unnecessary images, and **verify PDF signature** in a single, streamlined C# program. The process is straightforward: load, configure, export, and validate. With the optional diagnostics and edge‑case handling covered, you can adapt this pattern to batch jobs, web services, or desktop utilities. + +Ready for the next step? Try **convert PDF to HTML** while preserving images, or experiment with different hash algorithms to **validate PDF digital signature** against your own PKI. You could also explore Aspose’s PDF to DOCX conversion or merge multiple PDFs before exporting—each a natural extension of the workflow we just built. + +Happy coding, and may your HTML previews stay lightweight and your signatures stay trustworthy! + +![save pdf as html example](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/english/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..40b347a6a --- /dev/null +++ b/pdf/english/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-03-29 +description: Save PDF as HTML using C# and Aspose.PDF. Learn how to insert page into + PDF, add blank PDF page, and create PKCS7 detached signature in one flow. +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: en +og_description: Save PDF as HTML in C# with Aspose.PDF. This guide shows how to load + PDF, insert page, add blank page, sign with PKCS7, and export to HTML. +og_title: Save PDF as HTML with C# – Full Programming Tutorial +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: Save PDF as HTML with C# – Complete Step‑by‑Step Guide +url: /net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Save PDF as HTML with C# – Complete Step‑by‑Step Guide + +Ever needed to **save PDF as HTML** but weren’t sure how to keep the layout intact while also tweaking the source document? You’re not the only one—developers often juggle pagination fixes, blank pages, and digital signatures before conversion. In this tutorial we’ll walk through a single, cohesive workflow that does exactly that, and we’ll sprinkle in how to **insert page into PDF**, **add blank PDF page**, and **create PKCS7 detached signature** along the way. + +By the end of this guide you’ll have a ready‑to‑run C# program that loads an existing PDF, reshapes its pages, signs the first page, and finally exports the whole thing to HTML with Unicode CMap priority. No dangling references, just a self‑contained solution you can drop into any .NET project. + +## What You’ll Need + +- **Aspose.PDF for .NET** (latest version, 23.x at the time of writing). +- **.NET 6.0** or later – the code compiles with .NET Framework 4.7 too, but .NET 6 gives you the best performance. +- A **certificate file** (`.pfx`) and its password for the PKCS7 signature. +- An input PDF (`input.pdf`) you want to manipulate. + +If you’ve got those, we can jump straight into the code. Otherwise, grab a free 30‑day Aspose trial from the official site; the API is identical to the paid version. + +--- + +## Step 1 – Load PDF Document in C# (Primary Action) + +The very first thing is to bring the PDF into memory. Aspose’s `Document` class does all the heavy lifting. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*Why this matters:* Loading the file gives you a mutable object model. From here you can **insert page into PDF**, add blank pages, or apply signatures without touching the original file on disk. + +--- + +## Step 2 – Insert a Page and Add a Blank PDF Page + +Sometimes the source PDF has pagination artifacts—maybe a missing page or a duplicated one. Below we copy page 2 right after page 1, then append a completely blank page at the end. + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*Pro tip:* `UpdatePagination()` recalculates the page numbers that appear in footers or headers generated by Aspose. Skipping this step can leave stale numbers in the final HTML. + +--- + +## Step 3 – Create a PKCS7 Detached Signature (SHA‑512) + +A detached PKCS7 signature proves the document’s integrity without embedding the signature data directly into the PDF content stream. We’ll use a certificate stored in a PFX file. + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*Why SHA‑512?* It offers a stronger hash than SHA‑256 while still being widely supported. If you need compliance with older standards, swap `Sha512` for `Sha256`. + +--- + +## Step 4 – Apply the Digital Signature to Page 1 with a Visible Rectangle + +We’ll place a visible signature field on the first page. The rectangle defines where the signature image (or placeholder) appears. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*Edge case:* If the target page already contains a form field with the same name, the API will throw an exception. Ensure unique field names or clear existing fields before signing. + +--- + +## Step 5 – Configure HTML Save Options to Prioritize Unicode CMap + +When converting to HTML, Aspose can embed fonts as base‑64, use subsets, or rely on Unicode CMaps. Prioritizing Unicode reduces file size and improves text searchability. + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*What does this do?* It tells the converter to prefer Unicode CMaps over custom font embedding whenever possible, which is ideal for multilingual PDFs. + +--- + +## Step 6 – Save the Signed Document as HTML + +Finally, write the processed PDF out as an HTML folder (Aspose creates a directory with supporting files like CSS and images). + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +If you open `cmap.html` in a browser, you’ll see the original PDF layout rendered as HTML, complete with the visible signature image on page 1. + +--- + +## Full Working Example (All Steps Combined) + +Below is the complete program you can copy‑paste into a console app. It includes all necessary `using` directives and error handling. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**Expected result:** +- `cmap.html` (the main HTML file) +- `cmap_files` folder containing CSS, images, and font resources. +- The first page shows a visible signature box at the coordinates you set. + +--- + +## Frequently Asked Questions & Edge Cases + +| Question | Answer | +|----------|--------| +| *Can I use a self‑signed certificate?* | Yes, Aspose.PDF accepts any valid PFX. Just remember browsers may flag the signature as untrusted. | +| *What if I need to sign multiple pages?* | Create separate `PdfFileSignature` calls for each page, or use a loop that updates `pageNumber`. | +| *Is there a way to embed the signature image instead of a rectangle?* | Supply a `SignatureAppearance` object with an image stream to `PdfFileSignature.Sign`. | +| *My PDF has encrypted content—can I still convert?* | Decrypt it first using `pdfDoc.Decrypt("ownerPassword")`, then run the steps. | +| *Will the HTML keep hyperlinks from the original PDF?* | Aspose preserves link annotations by default. If you see missing links, set `htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;` | + +--- + +## Wrapping Up + +We’ve just demonstrated how to **save PDF as HTML** while simultaneously **inserting page into PDF**, **adding blank PDF page**, and **creating PKCS7 detached signature**—all using C#. The workflow is linear, easy to debug, and fully customizable for larger projects. + +Next, you might want to explore: + +- **Batch processing** – loop over a folder of PDFs and convert each one. +- **Custom CSS** – tweak `HtmlSaveOptions.CustomCss` to match your site’s styling. +- **Advanced signatures** – use timestamp servers or LTV (Long‑Term Validation) for compliance‑grade signing. + +Give those a try, and you’ll have a robust PDF‑to‑HTML pipeline that’s both SEO‑friendly and citation‑worthy for AI assistants. Happy coding! + +--- + +![Diagram showing PDF loaded, pages inserted, signature applied, then HTML output](/images/save-pdf-as-html-workflow.png "save pdf as html workflow") + +*Image alt text:* **save pdf as html workflow diagram** + +{{< /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 76758a05a..91802cbe0 100644 --- a/pdf/english/net/digital-signatures/_index.md +++ b/pdf/english/net/digital-signatures/_index.md @@ -59,6 +59,9 @@ Learn how to load a PDF in C#, convert it to PDF/X‑4 format, and list its digi ### [Validate PDF Signature with Aspose – Convert PDF to HTML](./validate-pdf-signature-with-aspose-convert-pdf-to-html/) Learn how to validate a PDF signature using Aspose and convert the PDF to HTML in a single workflow. +### [How to Sign PDF and Add Images – Complete C# Guide](./how-to-sign-pdf-and-add-images-complete-c-guide/) +Learn how to sign PDFs and embed images using Aspose.PDF for .NET with a complete C# guide. + ## Additional Resources - [Aspose.PDF for Net Documentation](https://docs.aspose.com/pdf/net/) diff --git a/pdf/english/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/english/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..a542f3ea6 --- /dev/null +++ b/pdf/english/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,246 @@ +--- +category: general +date: 2026-03-29 +description: How to sign PDF with a digital signature and add a cropped image in C#. + Learn to add digital signature pdf, crop image for pdf, and add image to pdf easily. +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: en +og_description: How to sign PDF with a digital signature and embed a cropped image + using Aspose.Pdf in C#. Follow this guide for a complete solution. +og_title: How to Sign PDF and Add Images – Step‑by‑Step C# Tutorial +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: How to Sign PDF and Add Images – Complete C# Guide +url: /net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Sign PDF and Add Images – Complete C# Guide + +Ever wondered **how to sign PDF** files programmatically while also inserting a custom picture? Maybe you’re building an approval workflow and need a legally‑binding signature *and* a thumbnail of the signer’s photo on the same page. In short, you want to **add digital signature pdf** content, crop that picture, and then **add image to pdf** without breaking a sweat. + +This tutorial walks you through every step—from loading an ECDSA PKCS#7 certificate to cropping a JPEG and stamping it onto the signed page. By the end you’ll have a single, runnable C# file that signs page 1, crops a photo to 400 × 400 px, and places it at a precise location. No external scripts, no magic, just clear code and explanations. + +## Prerequisites + +- .NET 6.0 or later (the code also works with .NET Framework 4.7+) +- **Aspose.Pdf for .NET** NuGet package (version 23.9 or newer) +- An ECDSA P‑256 certificate in PKCS#7 (`.pfx`) format and its password +- A JPEG image you’d like to embed (e.g., `photo.jpg`) + +> **Pro tip:** Keep your certificate file out of source control and protect the password with a secret manager. + +--- + +## Step 1: Set Up the Project and Imports + +First, create a console app (or integrate this into any existing service). Add the Aspose.Pdf reference: + +```bash +dotnet add package Aspose.Pdf +``` + +Then include the required namespaces: + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +These `using` statements give you access to the `Document`, `Signature`, and `Rectangle` classes we’ll need later. + +## Step 2: Load the PDF and Prepare the Signature + +We’ll open an existing PDF (`source.pdf`) and create a **digital signature pdf** object that uses a PKCS#7 detached signature. The certificate is an ECDSA P‑256 key, which is widely accepted for compliance. + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**Why this matters:** Using a detached PKCS#7 signature keeps the original PDF content intact while embedding a cryptographic hash. This is the industry‑standard approach for legally‑binding PDFs. + +## Step 3: Apply the Digital Signature to a Specific Page + +Now we’ll place the visible signature field on **page 1**. The rectangle defines where the signature box appears (coordinates are in points, where 1 inch = 72 points). + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +If you don’t need a visible box, set `isVisible` to `false`. The `signatureRect` can be adjusted to match your document layout. + +## Step 4: Open the Image Stream and Define Crop Areas + +We’ll read the JPEG file into a stream and specify a **source rectangle** that selects the top‑left 400 × 400 pixels. This is the **crop image for pdf** operation. + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **Edge case:** If your image is smaller than 400 × 400, the crop will automatically clamp to the image’s actual dimensions—no exception is thrown. + +## Step 5: Define Where the Cropped Image Should Appear + +Next, set the **destination rectangle** on the PDF page. In this example we place the image at (50, 50) with a size of 200 × 200 points (≈2.78 inches square). + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +Feel free to experiment: change the X/Y coordinates to move the picture, or adjust width/height for scaling. + +## Step 6: Insert the Cropped Image onto the Signed Page + +Finally, we add the image to **page 1** (the same page that now carries the signature). The `AddImage` overload we use accepts the source and destination rectangles, effectively performing the crop and placement in one call. + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +Behind the scenes, Aspose.Pdf extracts the 400 × 400 pixel region, rescales it to 200 × 200 points, and writes it into the PDF content stream. + +## Step 7: Save the Signed and Image‑Enhanced PDF + +After all modifications, persist the document. You can overwrite the original or write to a new file. + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +When you open `output_signed.pdf` in Adobe Acrobat or any PDF viewer, you’ll see: + +- A visible signature field at the coordinates you specified. +- The cropped photo placed at (50, 50) on page 1. +- The digital signature validated (provided the viewer trusts your certificate). + +--- + +## Frequently Asked Questions (FAQ) + +| Question | Answer | +|----------|--------| +| **Can I sign a different page?** | Change the `pageNumber` argument in `signature.Sign` to any valid page index (1‑based). | +| **What if I need multiple signatures?** | Create a new `Signature` instance for each page or location, reusing the same `pkcsSignature` if the same cert applies. | +| **Is the image cropping limited to rectangles?** | Yes, Aspose.Pdf’s `AddImage` works with rectangular regions. For complex shapes you’d need to pre‑process the image (e.g., using System.Drawing) before embedding. | +| **How do I make the signature invisible?** | Set `isVisible` to `false` and omit the `signatureRect`. The signature will still be cryptographically valid. | +| **What formats can I embed besides JPEG?** | PNG, BMP, GIF, and TIFF are all supported. Just change the file path and ensure the stream reads the correct bytes. | + +--- + +## Full Working Example + +Below is the complete, self‑contained program. Copy‑paste it into `Program.cs`, adjust the paths, and run. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**Expected result:** Opening `output_signed.pdf` shows a signature field (100 × 100 → 300 × 300 points) and a 200 × 200‑point picture derived from the top‑left corner of `photo.jpg`. The signature validates against the supplied ECDSA certificate. + +--- + +## Wrapping Up + +We’ve covered **how to sign PDF** files, how to **add digital signature pdf** to a specific page, how to **crop image for pdf**, and finally how to **add image to pdf** using Aspose.Pdf in C#. The whole flow—from loading the certificate to saving the final document—fits into a single, easy‑to‑read source file. + +If you’re ready for the next challenge, consider: + +- Adding **multiple signatures** on different pages (use the “digital signature pdf page” concept). +- Embedding **QR codes** that link to verification services. +- Automating the process in an ASP.NET Core API for on‑the‑fly PDF generation. + +Remember, the key to robust PDF automation is clear separation of concerns: signature handling, image processing, and final document assembly. Play with the coordinates, swap out the image format, or experiment with timestamping—your workflow is now fully extensible. + +Got questions, edge‑case scenarios, or a cool use‑case to share? Drop a comment below, and 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-security-and-signatures/_index.md b/pdf/english/net/programming-with-security-and-signatures/_index.md index fdaea022a..d26a18d60 100644 --- a/pdf/english/net/programming-with-security-and-signatures/_index.md +++ b/pdf/english/net/programming-with-security-and-signatures/_index.md @@ -35,6 +35,7 @@ The tutorial gives you a detailed overview of methods and techniques to ensure t | [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. | | [How to Repair PDF Files – Complete C# Guide with Aspose.Pdf](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | Learn how to repair corrupted PDF files using Aspose.PDF for .NET in a comprehensive C# guide. | +| [Validate PDF Digital Signature – Complete C# Guide](./validate-pdf-digital-signature-complete-c-guide/) | Learn how to validate PDF digital signatures using Aspose.PDF for .NET in a comprehensive C# guide. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/english/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/english/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..77d71cfee --- /dev/null +++ b/pdf/english/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,260 @@ +--- +category: general +date: 2026-03-29 +description: Validate PDF digital signature quickly. Learn how to verify PDF signature, + check PDF signature status, and detect tampered PDF with Aspose.Pdf in C#. +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: en +og_description: Validate PDF digital signature in C#. This tutorial shows how to verify + PDF signature, check PDF signature integrity, and detect tampered PDF using Aspose.Pdf. +og_title: Validate PDF Digital Signature – Complete C# Guide +tags: +- C# +- Aspose.Pdf +- PDF Security +title: Validate PDF Digital Signature – Complete C# Guide +url: /net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Validate PDF Digital Signature – Complete C# Guide + +Ever wondered **how to verify a PDF signature** without pulling your hair out? Maybe you received a contract, opened it, and needed to be 100 % sure it hasn't been altered. The good news is you don’t need a forensic lab—just a few lines of C# and Aspose.Pdf can **validate PDF digital signature** in a snap. + +In this tutorial we’ll walk through everything you need to know: from installing the library to interpreting the result, and even handling edge cases like multiple signatures or a corrupted file. By the end, you’ll be able to **check PDF signature** status programmatically and **detect tampered PDF** files before they cause trouble. + +## What You’ll Need + +- **.NET 6.0 or later** (the code works on .NET Framework too, but .NET 6 is the sweet spot). +- **Aspose.Pdf for .NET** – you can grab it from NuGet (`Install-Package Aspose.Pdf`). +- A **signed PDF** you want to test. If you don’t have one, create a simple signed document with Adobe Acrobat or any PDF signer. + +> Pro tip: Keep your PDF files out of the project’s root folder; a relative path like `./Samples/signed.pdf` works fine and avoids accidental commits of confidential files. + +## Step‑by‑Step Implementation + +Below we break the solution into logical chunks. Each chunk gets its own H2 header—one of them even contains the primary keyword, satisfying the SEO rule. + +### ## Step 1 – Install and Reference Aspose.Pdf + +First, add the NuGet package to your project: + +```powershell +dotnet add package Aspose.Pdf +``` + +Or, if you’re using the Package Manager Console: + +```powershell +Install-Package Aspose.Pdf +``` + +After the package is installed, Visual Studio will automatically add the `using Aspose.Pdf;` namespace. No extra DLL juggling required. + +### ## Step 2 – Load the Signed PDF Document + +Now we actually open the file. The `using` statement ensures the document is disposed correctly, which is especially important for large PDFs. + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +> **Why this matters:** Loading the document gives us access to the `DigitalSignatureInfo` object, the entry point for all signature‑related queries. + +### ## Step 3 – Retrieve Digital Signature Information + +Aspose.Pdf wraps the low‑level PKI details in a friendly API. Grab the `DigitalSignatureInfo` property and you’ll have everything you need to **check PDF signature** health. + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +If the PDF contains multiple signatures, `signatureInfo` aggregates them, exposing properties like `Count`, `Certificates`, and `IsCompromised`. For a single‑signature file, those collections will have just one entry. + +### ## Step 4 – Determine Whether the Signature Is Compromised + +The `IsCompromised` flag tells you if the document has been altered **after** it was signed. A `true` value means the PDF is tampered—exactly what we want to **detect tampered PDF**. + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +If you need to **verify PDF signature** more thoroughly (e.g., certificate chain validation), you can also examine `signatureInfo.Certificates` and call `Validate()` on each. For most use‑cases, `IsCompromised` is enough. + +### ## Step 5 – Output the Result to the Console + +Finally, let the user know what happened. We’ll print a friendly message and also return an appropriate exit code for automation scripts. + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### Expected Output + +``` +Signature compromised: False +``` + +If you deliberately tamper with the PDF (e.g., add a stray character), the output flips to `True`. That’s the moment you know the document’s integrity is broken. + +### ## Handling Edge Cases and Common Pitfalls + +#### 1. Multiple Signatures + +When a PDF has more than one signer, `IsCompromised` reflects the *overall* state—if **any** signature is broken, the flag becomes `true`. To pinpoint which signer is at fault: + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. Missing Signature + +If the PDF isn’t signed at all, `signatureInfo.Count` will be `0`. You should guard against a false sense of security: + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. Corrupted PDF File + +A corrupted file throws a `PdfException`. Wrap the loading logic in a try‑catch to give a clean error message: + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. Certificate Validation (Advanced) + +If you need to ensure the signing certificate is still valid (not revoked, within its validity period), you can call: + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +This step moves you from a simple **check PDF signature** to a full **how to verify PDF signature** workflow. + +### ## Full Working Example + +Putting everything together, here’s the complete, ready‑to‑run program: + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +Run the program from the command line: + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +You should see a clear report telling you whether the PDF is intact, which signer(s) are involved, and if their certificates are still trustworthy. + +## Visual Overview + +Below is a quick diagram illustrating the flow from **loading the PDF** to **outputting the validation result**. It’s a handy reference when you’re sketching the architecture of a larger document‑processing pipeline. + +![validate pdf digital signature workflow diagram](image.png "Diagram showing PDF load → DigitalSignatureInfo → IsCompromised check") + +*Alt text: validate pdf digital signature workflow diagram* + +## Conclusion + +We’ve just covered a **complete, end‑to‑end solution to validate PDF digital signature** using Aspose.Pdf in C#. The key takeaways: + +- Load the PDF with `Document`. +- Pull `DigitalSignatureInfo` and check `IsCompromised` to **detect tampered PDF**. +- Handle multiple signatures, missing signatures, and corrupted files gracefully. +- Optionally validate the signing certificate for a full **how to verify PDF signature** checklist. + +From here you can expand the logic—store validation results in a database, reject unsigned uploads in a web API, or integrate with a document‑management system. If you’re curious about other PDF security features, look into **checking PDF signature timestamps**, **adding a new signature**, or **encrypting PDFs**. + +Got questions about edge cases, or want to see how to **verify PDF signature** with a different library like iText 7? Drop a comment below, and let’s keep the conversation going. 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/french/net/conversion-export/_index.md b/pdf/french/net/conversion-export/_index.md index 9e2512226..d8a0b4f5e 100644 --- a/pdf/french/net/conversion-export/_index.md +++ b/pdf/french/net/conversion-export/_index.md @@ -74,6 +74,12 @@ Apprenez à convertir des fichiers PDF au format HTML avec Aspose.PDF pour .NET ### [Convertir un PDF en HTML avec Aspose.PDF pour .NET : conserver les polices aux formats TTF et WOFF](./convert-pdf-html-aspose-net-truetype-woff/) Apprenez à convertir des PDF en HTML avec Aspose.PDF pour .NET tout en préservant les polices TrueType (TTF) et Web Open Font Format (WOFF). Guide étape par étape avec exemples de code. +### [Enregistrer un PDF en HTML avec Aspose – Guide complet C#](./save-pdf-as-html-with-aspose-complete-c-guide/) +Apprenez à enregistrer des fichiers PDF au format HTML en C# avec Aspose, en suivant un guide complet pas à pas. + +### [Enregistrer un PDF en HTML avec C# – Guide complet étape par étape](./save-pdf-as-html-with-c-complete-step-by-step-guide/) +Apprenez à enregistrer des PDF au format HTML en C# avec Aspose, grâce à un guide complet étape par étape. + ### [Convertir un PDF en HTML avec des dimensions personnalisées à l'aide d'Aspose.PDF](./convert-pdf-html-custom-dimensions-asposepdf-net/) Un tutoriel de code pour Aspose.PDF Net @@ -90,7 +96,7 @@ Apprenez à convertir efficacement des documents PDF en présentations PowerPoin Apprenez à convertir des PDF en SVG avec Aspose.PDF pour .NET. Ce guide complet couvre la configuration, les étapes de conversion et des conseils d'optimisation. ### [Convertir un PDF en TIFF avec Aspose.PDF .NET : guide complet](./convert-pdf-page-to-tiff-aspose-net/) -Apprenez à convertir des pages PDF en images TIFF de haute qualité à l'aide d'Aspose.PDF pour .NET avec ce didacticiel étape par étape. +Apprenez à convertir des pages PDF en images TIFF de haute qualité à l'aide d'Aspose.PDF .NET avec ce didacticiel étape par étape. ### [Convertir un PDF en TeX avec Aspose.PDF pour .NET : guide complet](./convert-pdf-to-tex-aspose-dotnet/) Apprenez à convertir des documents PDF complexes au format TeX modifiable avec Aspose.PDF pour .NET. Ce guide couvre l'installation, les étapes de conversion et l'optimisation des performances. @@ -227,6 +233,9 @@ Un tutoriel de code pour Aspose.PDF Net ### [Conversion PDF en TIFF dans .NET avec Aspose.PDF : guide étape par étape](./pdf-to-tiff-conversion-aspose-pdf-net/) Apprenez à convertir des documents PDF en images TIFF avec Aspose.PDF pour .NET. Maîtrisez les profondeurs de couleurs personnalisées et les techniques avancées de traitement d'image. +### [Convertir un PDF en PDF/X‑1a, exporter la page en PNG et ajouter un tampon de texte](./convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/) +Apprenez à convertir un PDF au format PDF/X‑1a, à exporter une page en PNG et à ajouter un tampon de texte avec Aspose.PDF pour .NET. + ## Ressources supplémentaires - [Aspose.PDF pour la documentation réseau](https://docs.aspose.com/pdf/net/) diff --git a/pdf/french/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/french/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..4b6b511f8 --- /dev/null +++ b/pdf/french/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-29 +description: convertir un PDF en PDF/X-1a et exporter la page PDF en PNG dans un même + flux – apprenez également comment ajouter un tampon de texte à un PDF avec Aspose.Pdf + (C#). +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: fr +og_description: convertir un PDF en PDF/X‑1a et exporter la page PDF en PNG tout en + ajoutant un tampon texte PDF – guide complet C# avec Aspose.Pdf. +og_title: convertir pdf en pdf/x-1a, exporter la page en png et ajouter un tampon + de texte +tags: +- Aspose.Pdf +- C# +- PDF processing +title: Convertir le PDF en PDF/X‑1a, exporter la page en PNG et ajouter un tampon + texte +url: /fr/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# convertir pdf en pdf/x-1a, exporter la page png et ajouter un tampon texte – Guide complet C# + +Vous avez déjà eu besoin de **convertir pdf en pdf/x-1a** mais aussi de vouloir un aperçu PNG rapide de la première page et un tampon texte personnalisé sur le même document ? Vous n'êtes pas seul. Dans de nombreuses chaînes de production — pensez à la pré‑vérification prête à imprimer ou à la génération automatisée de rapports — vous rencontrerez souvent cette combinaison exacte d'exigences. + +Dans ce tutoriel, nous parcourrons un flux de travail unique et cohérent qui effectue trois actions consécutives : **convertir pdf en pdf/x-1a**, **exporter la page pdf en png**, et **ajouter un tampon texte pdf**. Le code utilise la bibliothèque Aspose.Pdf pour .NET, vous offrant ainsi une solution de niveau professionnel sans devoir manipuler les internals bas‑niveau du PDF. À la fin, vous disposerez d’un programme C# exécutable que vous pourrez intégrer à n’importe quelle application console, Azure Function ou étape CI. + +> **Ce que vous obtiendrez** : un fichier source complet, des explications pas à pas, des astuces pour les pièges courants, et une méthode rapide pour vérifier le résultat. + +## Prérequis + +- .NET 6.0 ou ultérieur (l'API fonctionne également avec .NET Framework 4.x). +- Package NuGet Aspose.Pdf pour .NET (`Aspose.Pdf`) – la version 23.10 est actuelle au moment de la rédaction. +- Un PDF d'entrée (`input.pdf`) et un fichier de profil ICC (`Coated_Fogra39L_VIGC_300.icc`) placés dans un dossier que vous contrôlez. +- Familiarité de base avec C# et Visual Studio (ou votre IDE préféré). + +Si l'un de ces éléments vous est inconnu, il suffit d'installer le package NuGet avec : + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +Passons maintenant à l'action. + +## Étape 1 : Charger le document PDF source + +La première chose que nous faisons est d’ouvrir le PDF sur lequel nous voulons travailler. La classe `Document` d’Aspose.Pdf représente le fichier complet et charge le contenu de façon paresseuse, de sorte que vous ne subissez aucune pénalité de performance tant que vous ne touchez pas réellement aux pages. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*Why this matters* : charger le document dès le départ nous donne un objet unique à transmettre pour la conversion, le rendu et le tamponnage. Si vous sautez le chargement explicite et essayez de travailler sur un fichier inexistant, vous obtiendrez une `FileNotFoundException` cryptique plus tard. + +## Étape 2 : Convertir le document en PDF/X‑1a à l'aide d'un profil ICC personnalisé + +PDF/X‑1a est le standard de facto pour les PDF prêts à imprimer. L’étape de conversion vous permet également d’incorporer un **Output Intent** (le profil ICC) afin que les RIP en aval sachent exactement comment les couleurs doivent être interprétées. + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*Pro tip* : si vous avez besoin d’une gestion d’erreurs plus stricte, remplacez `ConvertErrorAction.Delete` par `ConvertErrorAction.Throw`. Ainsi, la conversion s’interrompra dès le premier problème de conformité, ce qui est pratique pour les pipelines QA automatisés. + +## Étape 3 : Exporter la première page en PNG tout en analysant les polices + +Un aperçu PNG est souvent requis pour des vérifications visuelles rapides ou la génération de vignettes. En activant `AnalyzeFonts`, Aspose s’assure que toutes les polices incorporées sont correctement rasterisées, évitant ainsi les surprises de glyphes manquants. + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +Après l’exécution, vous trouverez `page1.png` à côté de vos fichiers source. Ouvrez‑le dans n’importe quel visualiseur d’images pour confirmer que la conversion est correcte. + +## Étape 4 : Ajouter un tampon texte qui ajuste automatiquement sa taille de police + +Un **text stamp** est un moyen pratique d’ajouter un filigrane ou une annotation à un PDF sans modifier les flux de contenu sous‑jacents. Le paramètre `AutoAdjustFontSizeToFitStampRectangle` indique à la bibliothèque de réduire ou d’agrandir le texte afin qu’il ne déborde jamais du rectangle que vous avez défini. + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*Why auto‑size?* : si vous modifiez plus tard le texte du tampon pour le rendre plus long (par ex., un horodatage dynamique), vous n’aurez pas à recalculer manuellement les tailles de police — le tampon s’adapte automatiquement. + +## Étape 5 : Enregistrer le document PDF mis à jour + +Enfin, écrivez le tout sur le disque. Vous pouvez écraser le fichier original ou créer un tout nouveau ; l’exemple ci‑dessous crée `output.pdf`. + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +Lorsque l’enregistrement est terminé, vous avez : + +1. Un fichier conforme **PDF/X‑1a** (`output.pdf`). +2. Un **aperçu PNG** de la première page (`page1.png`). +3. Un **tampon texte** qui s’ajuste parfaitement à son rectangle. + +### Checklist de vérification rapide + +| ✅ Vérification | Comment vérifier | +|--------|---------------| +| Conformité PDF/X‑1a | Ouvrez `output.pdf` dans Adobe Acrobat → *Print Production* → *Preflight* et sélectionnez “PDF/X‑1a:2001”. | +| PNG correct | Ouvrez `page1.png` dans Windows Photo Viewer ou tout éditeur d’image. | +| Tampon présent | Faites défiler `output.pdf` – le texte “Auto‑size” doit être centré sur la page 1. | + +![aperçu de la conversion pdf en pdf/x-1a](image.png "aperçu de la conversion pdf en pdf/x-1a montrant la page tamponnée") + +*Texte alternatif de l'image* : **aperçu de la conversion pdf en pdf/x-1a avec tampon texte auto‑size** – montre le PDF final après toutes les étapes. + +## Variantes courantes et cas limites + +- **Multiple pages** – Si vous devez tamponner chaque page, bouclez sur `pdfDoc.Pages` et appelez `AddStamp` à l’intérieur de la boucle. +- **Different output format** – Changez `PdfFormat.PDF_X_1A` en `PdfFormat.PDF_A_1B` pour des PDF d’archivage. +- **Higher‑resolution PNG** – Définissez `Resolution = 600` dans les `RenderingOptions` pour des vignettes de qualité impression. +- **Custom font for the stamp** – Assignez `autoSizeStamp.Font = FontRepository.FindFont("Arial")` avant d’ajouter le tampon. +- **Error handling** – Enveloppez chaque étape majeure dans un `try/catch` et consignez `ConversionException` ou `FileNotFoundException` pour faciliter le débogage. + +## Exemple complet fonctionnel (prêt à copier‑coller) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Setup paths + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Load the source document + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Convert to PDF/X‑1a (print‑ready) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Export first page as PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Add auto‑sizing text stamp (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/french/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..aeb8370e1 --- /dev/null +++ b/pdf/french/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-03-29 +description: Enregistrez un PDF au format HTML avec Aspose.PDF en C#. Apprenez à convertir + un PDF en HTML, à ignorer les images et à vérifier la signature du PDF dans un seul + tutoriel. +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: fr +og_description: Enregistrez un PDF au format HTML avec Aspose.PDF en C#. Ce guide + vous montre comment convertir un PDF en HTML, ignorer les images et valider la signature + numérique du PDF. +og_title: Enregistrer le PDF au format HTML avec Aspose – Guide complet C# +tags: +- Aspose.PDF +- C# +- PDF processing +title: Enregistrer le PDF en HTML avec Aspose – Guide complet C# +url: /fr/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Enregistrer un PDF en HTML avec Aspose – Guide complet C# + +Vous vous êtes déjà demandé comment **enregistrer un PDF en HTML** sans inclure chaque image intégrée ? Peut-être créez‑vous un aperçu web léger et le poids supplémentaire des images ralentit votre page. La bonne nouvelle, c’est que vous n’avez pas besoin d’écrire un analyseur personnalisé—Aspose.PDF s’occupe de tout. Dans ce tutoriel, nous allons **convertir un PDF en HTML**, supprimer les images, puis **vérifier la signature du PDF** pour nous assurer que le document n’a pas été altéré. + +Nous passerons en revue chaque ligne de code, expliquerons *pourquoi* chaque paramètre est important, et aborderons même les cas limites comme les PDF volumineux ou les signatures manquantes. À la fin, vous disposerez d’une application console C# prête à l’emploi qui génère un fichier HTML épuré et vous fournit un résultat vrai/faux clair pour la signature numérique. + +## Ce que vous allez apprendre + +- Charger un fichier PDF avec Aspose.PDF. +- Utiliser `HtmlSaveOptions` pour **convertir un PDF en HTML** tout en omettant les images. +- Enregistrer le HTML résultant sur le disque. +- Configurer un objet `PdfFileSignature` pour **vérifier la signature du PDF**. +- Interpréter le résultat booléen et gérer les pièges courants. +- Conseils bonus pour les performances et le dépannage. + +### Prérequis + +- .NET 6.0 ou supérieur (le code fonctionne également sur .NET Framework 4.7+). +- Package NuGet Aspose.PDF for .NET (version 23.12 ou plus récente). +- Un PDF signé (`input.pdf`) contenant une signature nommée « Sig1 ». +- Connaissances de base en C# et applications console. + +> **Astuce :** Si vous n’avez pas encore installé le package Aspose.PDF, exécutez `dotnet add package Aspose.PDF` depuis le dossier de votre projet. + +--- + +## Étape 1 : Charger le document PDF source + +Avant de pouvoir faire quoi que ce soit, nous avons besoin d’une représentation en mémoire du PDF. La classe `Document` d’Aspose.PDF lit le fichier et construit un arbre de pages, de ressources et d’annotations. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**Pourquoi c’est important :** Charger le document une seule fois rend l’utilisation de la mémoire prévisible. Si vous prévoyez de traiter de nombreux PDF dans une boucle, envisagez de réutiliser la même instance `Document` après avoir appelé `pdfDocument.Dispose()`. + +--- + +## Étape 2 : Configurer les options d’enregistrement HTML – Ignorer les images + +Nous voulons **enregistrer un PDF en HTML** mais sans les données d’image lourdes. `HtmlSaveOptions` nous offre un contrôle granulaire, et le drapeau `SkipImages` indique à Aspose de supprimer complètement les balises ``. + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**Pourquoi vous pourriez ignorer les images :** Pour les portails d’aperçu ou les conceptions mobile‑first, chaque kilo‑octet compte. Supprimer les images évite également les problèmes de licence si le PDF source contient des graphiques protégés par le droit d’auteur. + +## Étape 3 : Exporter le PDF en fichier HTML sans images + +Nous allons maintenant réellement écrire le fichier HTML. La méthode `Save` respecte les options que nous avons définies ci‑dessus. + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**Résultat que vous verrez :** Un fichier `.html` contenant le texte, les tableaux et les graphiques vectoriels (le cas échéant), mais aucune balise ``. Ouvrez‑le dans un navigateur et vous devriez voir un rendu propre, sans image, du PDF original. + +## Étape 4 : Préparer un vérificateur de signature pour le même document + +La classe `PdfFileSignature` d’Aspose.PDF nous permet d’inspecter les signatures numériques intégrées au PDF. Nous créerons une instance qui pointe vers le même `Document` que nous avons déjà chargé. + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**Note sur la gestion des ressources :** L’instruction `using` garantit que le vérificateur libère tous les handles natifs une fois terminé, évitant ainsi les problèmes de verrouillage de fichier sous Windows. + +## Étape 5 : Vérifier la signature nommée « Sig1 » en utilisant SHA‑3‑256 + +La plupart des PDF utilisent SHA‑256 ou SHA‑1, mais Aspose prend également en charge la famille plus récente SHA‑3. Ici, nous demandons explicitement `Sha3_256`. Si la signature est absente ou que l’algorithme ne correspond pas, la méthode renvoie `false`. + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Ce que « false » peut signifier :** + +1. **Signature non trouvée** – il se peut que le PDF utilise un autre nom ; listez les signatures avec `signatureVerifier.GetSignatureNames()`. +2. **Incompatibilité d’algorithme** – le PDF a peut‑être été signé avec SHA‑256 ; essayez `DigestHashAlgorithm.Sha256`. +3. **Document modifié** – toute modification après la signature invalide le hachage, ce qui renvoie `false`. + +## Gestion des cas limites courants + +### PDF volumineux + +Si votre PDF source dépasse quelques centaines de mégaoctets, envisagez d’activer le **mode d’économie de mémoire** : + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +Cela diffuse les pages à la demande, réduisant la pression sur la RAM. + +### Signature manquante + +Lorsque vous ne connaissez pas le nom de la signature, énumérez‑les : + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +Choisissez le nom correct dans la liste avant d’appeler `VerifySignature`. + +### Compatibilité navigateur + +Certains navigateurs ont du mal avec le HTML contenant le CSS par défaut d’Aspose. Définir `htmlSaveOptions.EmbedCss = true` (comme montré précédemment) intègre les styles en ligne, rendant le fichier plus portable. + +## Exemple complet fonctionnel + +Ci‑dessous se trouve le programme complet, prêt à copier‑coller, qui inclut toutes les étapes, la gestion des erreurs et les diagnostics optionnels. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Sortie console attendue** (les chemins différeront) : + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +Si la signature est invalide, la dernière ligne affichera `Signature valid: False`. + +## Questions fréquemment posées + +**Q : Puis‑je convertir un PDF en HTML *avec* images ?** +**R : Absolument. Il suffit de définir `SkipImages = false` (ou d’omettre la propriété). Aspose intégrera chaque image comme fichier séparé dans un sous‑dossier à côté du HTML.** + +**Q : Cela fonctionne‑t‑il sous Linux ?** +**R : Oui. Aspose.PDF est multiplateforme ; assurez‑vous simplement que les chemins `YOUR_DIRECTORY` utilisent des barres obliques (`/`) ou `Path.Combine`.** + +**Q : Et si je dois valider une signature numérique PDF avec un certificat personnalisé ?** +**R : Utilisez la surcharge `PdfFileSignature.ValidateSignature` qui accepte un objet `X509Certificate2`. Cette méthode renverra également un `SignatureInfo` détaillé que vous pourrez examiner.** + +**Q : `aspose convert pdf` est‑il limité à C# ?** +**R : Non. La même API existe pour Java, Python et d’autres langages .NET. Les concepts—charger, définir les options, enregistrer, vérifier—restent les mêmes.** + +## Conclusion + +Vous savez maintenant exactement comment **enregistrer un PDF en HTML** avec Aspose.PDF, supprimer les images inutiles, et **vérifier la signature du PDF** dans un seul programme C# simplifié. Le processus est simple : charger, configurer, exporter et valider. Avec les diagnostics optionnels et la prise en charge des cas limites présentés, vous pouvez adapter ce modèle aux traitements par lots, aux services web ou aux utilitaires de bureau. + +Prêt pour l’étape suivante ? Essayez **convertir un PDF en HTML** tout en conservant les images, ou expérimentez différents algorithmes de hachage pour **valider la signature numérique du PDF** avec votre propre PKI. Vous pouvez également explorer la conversion PDF vers DOCX d’Aspose ou fusionner plusieurs PDF avant l’exportation—chacune étant une extension naturelle du flux de travail que nous venons de créer. + +Bon codage, et que vos aperçus HTML restent légers et que vos signatures restent fiables ! + +![save pdf as html example](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/french/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..ec40427fe --- /dev/null +++ b/pdf/french/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-03-29 +description: Enregistrez un PDF au format HTML avec C# et Aspose.PDF. Apprenez comment + insérer une page dans un PDF, ajouter une page PDF vierge et créer une signature + détachée PKCS7 en un seul flux. +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: fr +og_description: Enregistrez le PDF au format HTML en C# avec Aspose.PDF. Ce guide + montre comment charger un PDF, insérer une page, ajouter une page blanche, signer + avec PKCS7 et exporter en HTML. +og_title: Enregistrer le PDF en HTML avec C# – Tutoriel complet de programmation +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: Enregistrer un PDF au format HTML avec C# – Guide complet étape par étape +url: /fr/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Enregistrer un PDF en HTML avec C# – Guide complet étape par étape + +Vous avez déjà eu besoin de **save PDF as HTML** mais vous ne saviez pas comment conserver la mise en page tout en modifiant le document source ? Vous n'êtes pas le seul—les développeurs jonglent souvent avec des corrections de pagination, des pages blanches et des signatures numériques avant la conversion. Dans ce tutoriel, nous parcourrons un flux de travail unique et cohérent qui fait exactement cela, et nous ajouterons comment **insert page into PDF**, **add blank PDF page**, et **create PKCS7 detached signature** en cours de route. + +À la fin de ce guide, vous disposerez d’un programme C# prêt à l’emploi qui charge un PDF existant, remodèle ses pages, signe la première page, puis exporte le tout en HTML avec la priorité Unicode CMap. Aucun lien en suspens, juste une solution autonome que vous pouvez intégrer à n’importe quel projet .NET. + +## Ce dont vous avez besoin + +- **Aspose.PDF for .NET** (dernière version, 23.x au moment de la rédaction). +- **.NET 6.0** ou supérieur – le code se compile également avec .NET Framework 4.7, mais .NET 6 offre les meilleures performances. +- Un **fichier de certificat** (`.pfx`) et son mot de passe pour la signature PKCS7. +- Un PDF d’entrée (`input.pdf`) que vous souhaitez manipuler. + +Si vous avez tout cela, nous pouvons passer directement au code. Sinon, téléchargez un essai gratuit de 30 jours d’Aspose depuis le site officiel ; l’API est identique à la version payante. + +--- + +## Étape 1 – Charger le document PDF en C# (action principale) + +La toute première chose consiste à charger le PDF en mémoire. La classe `Document` d’Aspose effectue tout le travail lourd. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*Pourquoi c’est important :* Charger le fichier vous fournit un modèle d’objet mutable. À partir de là, vous pouvez **insert page into PDF**, ajouter des pages blanches ou appliquer des signatures sans toucher au fichier original sur le disque. + +--- + +## Étape 2 – Insérer une page et ajouter une page PDF blanche + +Parfois, le PDF source présente des artefacts de pagination—une page manquante ou dupliquée. Ci-dessous, nous copions la page 2 juste après la page 1, puis ajoutons une page entièrement blanche à la fin. + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*Astuce :* `UpdatePagination()` recalcule les numéros de page qui apparaissent dans les pieds de page ou en‑têtes générés par Aspose. Ignorer cette étape peut laisser des numéros obsolètes dans le HTML final. + +--- + +## Étape 3 – Créer une signature détachée PKCS7 (SHA‑512) + +Une signature PKCS7 détachée prouve l’intégrité du document sans intégrer les données de signature directement dans le flux de contenu du PDF. Nous utiliserons un certificat stocké dans un fichier PFX. + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*Pourquoi SHA‑512 ?* Il offre un hachage plus fort que SHA‑256 tout en restant largement supporté. Si vous devez vous conformer à des normes plus anciennes, remplacez `Sha512` par `Sha256`. + +--- + +## Étape 4 – Appliquer la signature numérique à la page 1 avec un rectangle visible + +Nous placerons un champ de signature visible sur la première page. Le rectangle définit où l’image de la signature (ou le substitut) apparaît. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*Cas particulier :* Si la page cible contient déjà un champ de formulaire portant le même nom, l’API lèvera une exception. Assurez-vous d’utiliser des noms de champ uniques ou de nettoyer les champs existants avant de signer. + +--- + +## Étape 5 – Configurer les options d’enregistrement HTML pour privilégier Unicode CMap + +Lors de la conversion en HTML, Aspose peut incorporer les polices en base‑64, utiliser des sous‑ensembles, ou s’appuyer sur les Unicode CMaps. Privilégier Unicode réduit la taille du fichier et améliore la recherche de texte. + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*Que fait‑cela ?* Cela indique au convertisseur de préférer les Unicode CMaps plutôt que l’incorporation de polices personnalisées chaque fois que c’est possible, ce qui est idéal pour les PDF multilingues. + +--- + +## Étape 6 – Enregistrer le document signé en HTML + +Enfin, écrivez le PDF traité sous forme d’un dossier HTML (Aspose crée un répertoire contenant les fichiers de support comme le CSS et les images). + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +Si vous ouvrez `cmap.html` dans un navigateur, vous verrez la mise en page du PDF original rendue en HTML, avec l’image de signature visible sur la page 1. + +--- + +## Exemple complet fonctionnel (toutes les étapes combinées) + +Ci-dessous se trouve le programme complet que vous pouvez copier‑coller dans une application console. Il inclut toutes les directives `using` nécessaires ainsi que la gestion des erreurs. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**Résultat attendu :** +- `cmap.html` (le fichier HTML principal) +- dossier `cmap_files` contenant les CSS, les images et les ressources de police. +- La première page affiche une boîte de signature visible aux coordonnées que vous avez définies. + +--- + +## Questions fréquentes & cas particuliers + +| Question | Réponse | +|----------|--------| +| *Puis-je utiliser un certificat auto‑signé ?* | Oui, Aspose.PDF accepte n’importe quel PFX valide. Gardez simplement à l’esprit que les navigateurs peuvent signaler la signature comme non fiable. | +| *Et si je dois signer plusieurs pages ?* | Créez des appels séparés à `PdfFileSignature` pour chaque page, ou utilisez une boucle qui met à jour `pageNumber`. | +| *Existe‑t‑il un moyen d’incorporer l’image de la signature au lieu d’un rectangle ?* | Fournissez un objet `SignatureAppearance` contenant un flux d’image à `PdfFileSignature.Sign`. | +| *Mon PDF contient du contenu chiffré—puis‑je toujours le convertir ?* | Déchiffrez‑le d’abord en utilisant `pdfDoc.Decrypt("ownerPassword")`, puis exécutez les étapes. | +| *Le HTML conservera‑t‑il les hyperliens du PDF original ?* | Aspose conserve les annotations de lien par défaut. Si vous constatez des liens manquants, définissez `htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;` | + +## Conclusion + +Nous venons de démontrer comment **save PDF as HTML** tout en **insert page into PDF**, **add blank PDF page**, et **create PKCS7 detached signature**—le tout en C#. Le flux de travail est linéaire, facile à déboguer et entièrement personnalisable pour des projets plus importants. + +Ensuite, vous pourriez explorer : +- **Traitement par lots** – parcourir un dossier de PDFs et convertir chacun d’eux. +- **CSS personnalisé** – ajuster `HtmlSaveOptions.CustomCss` pour correspondre au style de votre site. +- **Signatures avancées** – utiliser des serveurs d’horodatage ou LTV (validation à long terme) pour des signatures conformes aux exigences. + +Essayez-les, et vous disposerez d’un pipeline PDF‑vers‑HTML robuste, à la fois optimisé pour le SEO et digne de citation pour les assistants IA. Bon codage ! + +![Diagramme montrant le PDF chargé, les pages insérées, la signature appliquée, puis la sortie HTML](/images/save-pdf-as-html-workflow.png "flux de travail de sauvegarde pdf en html") + +*Texte alternatif de l’image :* **diagramme du flux de travail de sauvegarde pdf en html** + +{{< /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 8e465d055..bf55b4828 100644 --- a/pdf/french/net/digital-signatures/_index.md +++ b/pdf/french/net/digital-signatures/_index.md @@ -59,6 +59,9 @@ Apprenez à charger un PDF, le convertir au format PDF/X‑4 et à répertorier ### [Valider la signature PDF avec Aspose – Convertir le PDF en HTML](./validate-pdf-signature-with-aspose-convert-pdf-to-html/) Découvrez comment valider une signature PDF et convertir le document en HTML avec Aspose.PDF pour .NET. +### [Comment signer un PDF et ajouter des images – Guide complet C#](./how-to-sign-pdf-and-add-images-complete-c-guide/) +Apprenez à signer un PDF et à y insérer des images en C# avec Aspose.PDF, étape par étape. + ## Ressources supplémentaires - [Aspose.PDF pour la documentation réseau](https://docs.aspose.com/pdf/net/) diff --git a/pdf/french/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/french/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..2a1b757c9 --- /dev/null +++ b/pdf/french/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,244 @@ +--- +category: general +date: 2026-03-29 +description: Comment signer un PDF avec une signature numérique et ajouter une image + recadrée en C#. Apprenez à ajouter une signature numérique à un PDF, recadrer une + image pour le PDF et ajouter une image au PDF facilement. +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: fr +og_description: Comment signer un PDF avec une signature numérique et intégrer une + image recadrée en utilisant Aspose.Pdf en C#. Suivez ce guide pour une solution + complète. +og_title: Comment signer un PDF et ajouter des images – Tutoriel C# étape par étape +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: Comment signer un PDF et ajouter des images – Guide complet en C# +url: /fr/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment signer un PDF et ajouter des images – Guide complet C# + +Vous vous êtes déjà demandé **comment signer un PDF** de façon programmatique tout en insérant une image personnalisée ? Peut-être que vous construisez un flux d'approbation et avez besoin d'une signature juridiquement contraignante *et* d'une vignette de la photo du signataire sur la même page. En bref, vous voulez **ajouter une signature numérique pdf** du contenu, recadrer cette image, puis **ajouter une image au pdf** sans effort. + +Ce tutoriel vous guide à travers chaque étape — du chargement d’un certificat ECDSA PKCS#7 au recadrage d’un JPEG et à son apposition sur la page signée. À la fin, vous disposerez d’un seul fichier C# exécutable qui signe la page 1, recadre une photo à 400 × 400 px et la place à un emplacement précis. Aucun script externe, aucune magie, juste du code clair et des explications. + +## Prérequis + +- .NET 6.0 ou version ultérieure (le code fonctionne également avec .NET Framework 4.7+) +- **Aspose.Pdf for .NET** package NuGet (version 23.9 ou plus récente) +- Un certificat ECDSA P‑256 au format PKCS#7 (`.pfx`) et son mot de passe +- Une image JPEG que vous souhaitez intégrer (par ex. `photo.jpg`) + +> **Astuce :** Gardez votre fichier de certificat hors du contrôle de version et protégez le mot de passe avec un gestionnaire de secrets. + +--- + +## Étape 1 : Configurer le projet et les importations + +Tout d’abord, créez une application console (ou intégrez cela dans un service existant). Ajoutez la référence Aspose.Pdf : + +```bash +dotnet add package Aspose.Pdf +``` + +Puis incluez les espaces de noms requis : + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +Ces instructions `using` vous donnent accès aux classes `Document`, `Signature` et `Rectangle` dont nous aurons besoin plus tard. + +## Étape 2 : Charger le PDF et préparer la signature + +Nous ouvrirons un PDF existant (`source.pdf`) et créerons un objet **digital signature pdf** qui utilise une signature PKCS#7 détachée. Le certificat est une clé ECDSA P‑256, largement acceptée pour la conformité. + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**Pourquoi c’est important :** Utiliser une signature PKCS#7 détachée conserve le contenu original du PDF intact tout en y intégrant un hachage cryptographique. C’est l’approche standard de l’industrie pour les PDF juridiquement contraignants. + +## Étape 3 : Appliquer la signature numérique à une page spécifique + +Nous placerons maintenant le champ de signature visible sur **page 1**. Le rectangle définit où apparaît la boîte de signature (les coordonnées sont en points, où 1 inch = 72 points). + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +Si vous n’avez pas besoin d’une boîte visible, définissez `isVisible` sur `false`. Le `signatureRect` peut être ajusté pour correspondre à la mise en page de votre document. + +## Étape 4 : Ouvrir le flux d'image et définir les zones de recadrage + +Nous lirons le fichier JPEG dans un flux et spécifierons un **source rectangle** qui sélectionne les 400 × 400 pixels en haut à gauche. Il s’agit de l’opération **crop image for pdf**. + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **Cas limite :** Si votre image est plus petite que 400 × 400, le recadrage sera automatiquement limité aux dimensions réelles de l’image — aucune exception n’est levée. + +## Étape 5 : Définir l'emplacement de l'image recadrée + +Ensuite, définissez le **destination rectangle** sur la page PDF. Dans cet exemple, nous plaçons l’image à (50, 50) avec une taille de 200 × 200 points (≈ 2,78 pouces carrés). + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +N’hésitez pas à expérimenter : modifiez les coordonnées X/Y pour déplacer l’image, ou ajustez la largeur/hauteur pour la mise à l’échelle. + +## Étape 6 : Insérer l'image recadrée sur la page signée + +Enfin, nous ajoutons l’image à **page 1** (la même page qui porte maintenant la signature). La surcharge `AddImage` que nous utilisons accepte les rectangles source et destination, effectuant ainsi le recadrage et le placement en un seul appel. + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +En coulisses, Aspose.Pdf extrait la région de 400 × 400 pixels, la redimensionne à 200 × 200 points et l’écrit dans le flux de contenu du PDF. + +## Étape 7 : Enregistrer le PDF signé et enrichi d'image + +Après toutes les modifications, persistez le document. Vous pouvez écraser le fichier original ou écrire dans un nouveau fichier. + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +Lorsque vous ouvrez `output_signed.pdf` dans Adobe Acrobat ou tout autre lecteur PDF, vous verrez : + +- Un champ de signature visible aux coordonnées que vous avez spécifiées. +- La photo recadrée placée à (50, 50) sur la page 1. +- La signature numérique validée (à condition que le lecteur fasse confiance à votre certificat). + +--- + +## Questions fréquentes (FAQ) + +| Question | Réponse | +|----------|---------| +| **Puis‑je signer une autre page ?** | Changez l’argument `pageNumber` dans `signature.Sign` pour n’importe quel indice de page valide (commençant à 1). | +| **Et si j’ai besoin de plusieurs signatures ?** | Créez une nouvelle instance `Signature` pour chaque page ou emplacement, en réutilisant le même `pkcsSignature` si le même certificat s’applique. | +| **Le recadrage d’image est‑il limité aux rectangles ?** | Oui, `AddImage` d’Aspose.Pdf fonctionne avec des régions rectangulaires. Pour des formes complexes, vous devrez pré‑traiter l’image (par ex. avec System.Drawing) avant l’insertion. | +| **Comment rendre la signature invisible ?** | Définissez `isVisible` sur `false` et omettez le `signatureRect`. La signature restera cryptographiquement valide. | +| **Quels formats puis‑je intégrer en plus du JPEG ?** | PNG, BMP, GIF et TIFF sont tous pris en charge. Il suffit de changer le chemin du fichier et de s’assurer que le flux lit les bons octets. | + +## Exemple complet fonctionnel + +Voici le programme complet, autonome. Copiez‑collez‑le dans `Program.cs`, ajustez les chemins, puis exécutez. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**Résultat attendu :** L’ouverture de `output_signed.pdf` montre un champ de signature (100 × 100 → 300 × 300 points) et une image de 200 × 200 points dérivée du coin supérieur gauche de `photo.jpg`. La signature est validée avec le certificat ECDSA fourni. + +## Conclusion + +Nous avons couvert **comment signer un PDF**, comment **ajouter une signature numérique pdf** à une page spécifique, comment **recadrer une image pour pdf**, et enfin comment **ajouter une image au pdf** en utilisant Aspose.Pdf en C#. L’ensemble du flux — du chargement du certificat à l’enregistrement du document final — tient dans un seul fichier source lisible. + +Si vous êtes prêt pour le prochain défi, envisagez : + +- D’ajouter **plusieurs signatures** sur différentes pages (utilisez le concept de « digital signature pdf page »). +- D’intégrer des **codes QR** qui renvoient à des services de vérification. +- D’automatiser le processus dans une API ASP.NET Core pour une génération de PDF à la volée. + +Rappelez‑vous, la clé d’une automatisation PDF robuste est une séparation claire des responsabilités : gestion des signatures, traitement des images et assemblage final du document. Jouez avec les coordonnées, changez le format de l’image, ou expérimentez la datation — votre flux de travail est désormais pleinement extensible. + +Des questions, des scénarios limites, ou un cas d’usage intéressant à partager ? Laissez un commentaire ci‑dessous, et 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-security-and-signatures/_index.md b/pdf/french/net/programming-with-security-and-signatures/_index.md index 0e92a2491..5f083ce92 100644 --- a/pdf/french/net/programming-with-security-and-signatures/_index.md +++ b/pdf/french/net/programming-with-security-and-signatures/_index.md @@ -23,18 +23,19 @@ Ce tutoriel vous offre un aperçu détaillé des méthodes et techniques permett | --- | --- | | [Changer le mot de passe dans un fichier PDF](./change-password/) | Apprenez à modifier facilement les mots de passe de vos PDF avec Aspose.PDF pour .NET. Notre guide étape par étape vous guide tout au long du processus en toute sécurité. | | [Décrypter le fichier PDF](./decrypt/) | Apprenez à décrypter vos fichiers PDF en toute sécurité avec Aspose.PDF pour .NET. Bénéficiez de conseils étape par étape pour améliorer vos compétences en gestion documentaire. | -| [Déterminer le mot de passe correct dans un fichier PDF](./determine-correct-password/) Déverrouillez vos fichiers PDF avec le bon mot de passe grâce à Aspose.PDF pour .NET. Apprenez à identifier facilement le bon mot de passe. -| [Connexion numérique au fichier PDF](./digitally-sign/) Apprenez à signer numériquement des fichiers PDF avec Aspose.PDF pour .NET. Guide étape par étape pour garantir la sécurité et l'authenticité de vos documents. | +| [Déterminer le mot de passe correct dans un fichier PDF](./determine-correct-password/) | Déverrouillez vos fichiers PDF avec le bon mot de passe grâce à Aspose.PDF pour .NET. Apprenez à identifier facilement le bon mot de passe. | +| [Connexion numérique au fichier PDF](./digitally-sign/) | Apprenez à signer numériquement des fichiers PDF avec Aspose.PDF pour .NET. Guide étape par étape pour garantir la sécurité et l'authenticité de vos documents. | | [Signature numérique avec horodatage dans un fichier PDF](./digitally-sign-with-time-stamp/) | Apprenez à signer numériquement un PDF avec un horodatage grâce à Aspose.PDF pour .NET. Ce guide étape par étape couvre les prérequis, la configuration du certificat, l'horodatage, et bien plus encore. | | [Crypter le fichier PDF](./encrypt/) | Apprenez à chiffrer vos fichiers PDF sans effort avec Aspose.PDF pour .NET. Sécurisez vos informations sensibles grâce à notre guide étape par étape. | | [Extraction d'image](./extracting-image/) | Apprenez facilement à extraire des images de PDF avec Aspose.PDF pour .NET. Suivez notre guide étape par étape pour une extraction d'images fluide. | | [Extraire les informations de signature](./extract-signature-info/) | Apprenez à extraire les signatures numériques et les informations de certificat de documents PDF avec Aspose.PDF pour .NET. Un guide complet, étape par étape, pour les développeurs C#. | -| [Est-il protégé par un mot de passe](./is-password-protected/) Apprenez à vérifier si un PDF est protégé par mot de passe à l'aide d'Aspose.PDF pour .NET dans ce guide complet étape par étape. | +| [Est-il protégé par un mot de passe](./is-password-protected/) | Apprenez à vérifier si un PDF est protégé par mot de passe à l'aide d'Aspose.PDF pour .NET dans ce guide complet étape par étape. | | [Définir les privilèges dans un fichier PDF](./set-privileges/) | Découvrez comment définir les privilèges PDF avec Aspose.PDF pour .NET grâce à ce guide étape par étape. Sécurisez efficacement vos documents. | | [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 réparer les fichiers PDF – Guide complet C# avec Aspose.Pdf](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | Apprenez à réparer les fichiers PDF corrompus avec Aspose.PDF pour .NET en suivant ce guide complet étape par étape en C#. | +| [Comment réparer les fichiers PDF – Guide complet C# avec Aspose.Pdf](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | Apprenez à réparer les fichiers PDF corrompus avec Aspose.PDF pour .NET en suivant ce guide complet étape par étape en C#. | +| [Valider la signature numérique PDF – Guide complet C#](./validate-pdf-digital-signature-complete-c-guide/) | Apprenez à valider les signatures numériques des PDF avec Aspose.PDF pour .NET en C#. Guide complet étape par étape. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/french/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/french/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..e6d8ea04e --- /dev/null +++ b/pdf/french/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,262 @@ +--- +category: general +date: 2026-03-29 +description: Validez rapidement la signature numérique d’un PDF. Apprenez à vérifier + la signature d’un PDF, à consulter l’état de la signature PDF et à détecter les + PDF falsifiés avec Aspose.Pdf en C#. +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: fr +og_description: Valider la signature numérique d’un PDF en C#. Ce tutoriel montre + comment vérifier la signature d’un PDF, contrôler l’intégrité de la signature PDF + et détecter les PDF altérés à l’aide d’Aspose.Pdf. +og_title: Valider la signature numérique PDF – Guide complet C# +tags: +- C# +- Aspose.Pdf +- PDF Security +title: Valider la signature numérique PDF – Guide complet C# +url: /fr/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Valider la signature numérique PDF – Guide complet C# + +Vous êtes‑vous déjà demandé **comment vérifier une signature PDF** sans perdre patience ? Peut‑être avez‑vous reçu un contrat, l’avez‑vous ouvert et devez‑vous être sûr à 100 % qu’il n’a pas été modifié. La bonne nouvelle, c’est que vous n’avez pas besoin d’un laboratoire médico‑légal – quelques lignes de C# et Aspose.Pdf suffisent à **valider la signature numérique PDF** en un clin d’œil. + +Dans ce tutoriel, nous passerons en revue tout ce que vous devez savoir : de l’installation de la bibliothèque à l’interprétation du résultat, en passant par la gestion des cas particuliers comme les signatures multiples ou un fichier corrompu. À la fin, vous pourrez **vérifier l’état de la signature PDF** de façon programmatique et **détecter les PDF altérés** avant qu’ils ne posent problème. + +## Ce dont vous avez besoin + +- **.NET 6.0 ou supérieur** (le code fonctionne également sur .NET Framework, mais .NET 6 est le meilleur choix). +- **Aspose.Pdf for .NET** – vous pouvez le récupérer sur NuGet (`Install-Package Aspose.Pdf`). +- Un **PDF signé** que vous souhaitez tester. Si vous n’en avez pas, créez un document signé simple avec Adobe Acrobat ou tout autre outil de signature PDF. + +> Conseil pro : Conservez vos fichiers PDF en dehors du dossier racine du projet ; un chemin relatif comme `./Samples/signed.pdf` fonctionne parfaitement et évite les commits accidentels de fichiers confidentiels. + +## Implémentation étape par étape + +Ci‑dessous, nous découpons la solution en parties logiques. Chaque partie possède son propre titre H2 — l’une d’elles contient même le mot‑clé principal, respectant ainsi la règle SEO. + +### ## Étape 1 – Installer et référencer Aspose.Pdf + +Tout d’abord, ajoutez le package NuGet à votre projet : + +```powershell +dotnet add package Aspose.Pdf +``` + +Ou, si vous utilisez la console du gestionnaire de packages : + +```powershell +Install-Package Aspose.Pdf +``` + +Après l’installation du package, Visual Studio ajoutera automatiquement l’espace de noms `using Aspose.Pdf;`. Aucun autre maniement de DLL n’est nécessaire. + +### ## Étape 2 – Charger le document PDF signé + +Nous ouvrons maintenant réellement le fichier. L’instruction `using` garantit que le document est correctement libéré, ce qui est particulièrement important pour les gros PDF. + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +> **Pourquoi c’est important :** Charger le document nous donne accès à l’objet `DigitalSignatureInfo`, le point d’entrée pour toutes les requêtes liées aux signatures. + +### ## Étape 3 – Récupérer les informations de signature numérique + +Aspose.Pdf encapsule les détails PKI de bas niveau dans une API conviviale. Récupérez la propriété `DigitalSignatureInfo` et vous disposerez de tout ce qu’il faut pour **vérifier la santé de la signature PDF**. + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +Si le PDF contient plusieurs signatures, `signatureInfo` les agrège, exposant des propriétés telles que `Count`, `Certificates` et `IsCompromised`. Pour un fichier à signature unique, ces collections ne contiendront qu’une seule entrée. + +### ## Étape 4 – Déterminer si la signature est compromise + +Le drapeau `IsCompromised` indique si le document a été modifié **après** sa signature. Une valeur `true` signifie que le PDF a été altéré — exactement ce que nous voulons **détecter les PDF altérés**. + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +Si vous devez **vérifier la signature PDF** de manière plus approfondie (par ex., validation de la chaîne de certificats), vous pouvez également examiner `signatureInfo.Certificates` et appeler `Validate()` sur chacun. Dans la plupart des cas d’usage, `IsCompromised` suffit. + +### ## Étape 5 – Afficher le résultat dans la console + +Enfin, informez l’utilisateur de ce qui s’est passé. Nous afficherons un message convivial et renverrons également un code de sortie approprié pour les scripts d’automatisation. + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### Sortie attendue + +``` +Signature compromised: False +``` + +Si vous altérez délibérément le PDF (par ex., en ajoutant un caractère errant), la sortie passe à `True`. C’est le moment où vous savez que l’intégrité du document est compromise. + +### ## Gestion des cas limites et des pièges courants + +#### 1. Signatures multiples + +Lorsqu’un PDF possède plusieurs signataires, `IsCompromised` reflète l’état *global* — si **une** signature est rompue, le drapeau devient `true`. Pour identifier quel signataire est en faute : + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. Signature manquante + +Si le PDF n’est pas du tout signé, `signatureInfo.Count` sera `0`. Vous devez vous prémunir contre un faux sentiment de sécurité : + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. Fichier PDF corrompu + +Un fichier corrompu déclenche une `PdfException`. Enveloppez la logique de chargement dans un try‑catch pour fournir un message d’erreur clair : + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. Validation du certificat (avancé) + +Si vous devez vous assurer que le certificat de signature est toujours valide (non révoqué, dans sa période de validité), vous pouvez appeler : + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +Cette étape vous fait passer d’un simple **check PDF signature** à un flux complet de **how to verify PDF signature**. + +### ## 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 PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +Exécutez le programme depuis la ligne de commande : + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +Vous devriez voir un rapport clair indiquant si le PDF est intact, quels signataires sont impliqués, et si leurs certificats restent fiables. + +## Vue d’ensemble visuelle + +Ci‑dessous se trouve un diagramme rapide illustrant le flux depuis le **chargement du PDF** jusqu’à **l’affichage du résultat de validation**. C’est une référence pratique lorsque vous esquissez l’architecture d’un pipeline de traitement de documents plus vaste. + +![diagramme du flux de validation de signature numérique PDF](image.png "Diagramme montrant le chargement du PDF → DigitalSignatureInfo → vérification IsCompromised") + +*Texte alternatif : diagramme du flux de validation de signature numérique PDF* + +## Conclusion + +Nous venons de couvrir une **solution complète, de bout en bout, pour valider la signature numérique PDF** en utilisant Aspose.Pdf avec C#. Les points clés : + +- Charger le PDF avec `Document`. +- Récupérer `DigitalSignatureInfo` et vérifier `IsCompromised` pour **détecter les PDF altérés**. +- Gérer les signatures multiples, les signatures manquantes et les fichiers corrompus de manière élégante. +- Optionnellement valider le certificat de signature pour une checklist complète de **how to verify PDF signature**. + +À partir de là, vous pouvez étendre la logique — stocker les résultats de validation dans une base de données, rejeter les téléchargements non signés dans une API web, ou intégrer à un système de gestion de documents. Si vous êtes curieux des autres fonctionnalités de sécurité PDF, explorez **la vérification des horodatages de signature PDF**, **l’ajout d’une nouvelle signature**, ou **le chiffrement des PDF**. + +Des questions sur les cas limites, ou vous voulez voir comment **vérifier la signature PDF** avec une autre bibliothèque comme iText 7 ? Laissez un commentaire ci‑dessous, et continuons la discussion. 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/german/net/conversion-export/_index.md b/pdf/german/net/conversion-export/_index.md index 49638de0c..6a9f0977c 100644 --- a/pdf/german/net/conversion-export/_index.md +++ b/pdf/german/net/conversion-export/_index.md @@ -224,8 +224,14 @@ Meistern Sie die PDF-zu-HTML-Konvertierung mit Aspose.PDF für .NET. Verbessern ### [PDF-zu-HTML-Konvertierung mit Aspose.PDF für .NET](./pdf-to-html-conversion-aspose-dot-net/) Ein Code-Tutorial für Aspose.PDF Net -### [PDF-zu-TIFF-Konvertierung in .NET mit Aspose.PDF: Eine Schritt-für-Schritt-Anleitung](./pdf-to-tiff-conversion-aspose-pdf-net/) -Erfahren Sie, wie Sie PDF-Dokumente mit Aspose.PDF für .NET in TIFF-Bilder konvertieren. Beherrschen Sie benutzerdefinierte Farbtiefen und erweiterte Bildverarbeitungstechniken. +### [PDF als HTML speichern mit Aspose – Vollständige C#-Anleitung](./save-pdf-as-html-with-aspose-complete-c-guide/) +Erfahren Sie, wie Sie PDFs mit Aspose in HTML konvertieren und dabei eine vollständige C#-Implementierung Schritt für Schritt umsetzen. + +### [PDF als HTML speichern mit C# – Vollständige Schritt‑für‑Schritt-Anleitung](./save-pdf-as-html-with-c-complete-step-by-step-guide/) +Erfahren Sie, wie Sie PDFs mit Aspose in HTML konvertieren, inklusive C#‑Codebeispielen und einer vollständigen Schritt‑für‑Schritt‑Anleitung. + +### [PDF-zu-HTML-Konvertierung mit Aspose.PDF .NET: Bilder als externe PNGs speichern](./pdf-to-html-conversion-external-png-aspose-pdf-net/) +Erfahren Sie, wie Sie PDF-Dokumente mit externen PNG-Bildern mit Aspose.PDF für .NET in HTML konvertieren. Diese Anleitung gewährleistet Layouterhaltung und optimierte Web-Performance. ## Weitere Ressourcen diff --git a/pdf/german/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/german/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..c43fd7aaa --- /dev/null +++ b/pdf/german/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-03-29 +description: PDF zu PDF/X‑1a konvertieren und PDF‑Seite als PNG exportieren in einem + Durchlauf – außerdem lernen, wie man einen Textstempel zu PDF hinzufügt, mit Aspose.Pdf + (C#). +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: de +og_description: PDF in PDF/X‑1a konvertieren und PDF‑Seite als PNG exportieren, während + ein Textstempel zum PDF hinzugefügt wird – vollständige C#‑Anleitung mit Aspose.Pdf. +og_title: PDF in PDF/X‑1a konvertieren, Seite als PNG exportieren & Textstempel hinzufügen +tags: +- Aspose.Pdf +- C# +- PDF processing +title: PDF in PDF/X‑1a konvertieren, Seite als PNG exportieren & Textstempel hinzufügen +url: /de/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF in PDF/X‑1a konvertieren, Seiten‑PNG exportieren & Textstempel hinzufügen – Vollständige C#‑Anleitung + +Haben Sie jemals **PDF in PDF/X‑1a konvertieren** müssen, wollten aber gleichzeitig eine schnelle PNG‑Vorschau der ersten Seite und einen benutzerdefinierten Textstempel im selben Dokument? Sie sind nicht allein. In vielen Produktionspipelines – denken Sie an druckfertiges Pre‑Flighting oder automatisierte Berichtserstellung – stoßen Sie häufig auf genau diese Kombination von Anforderungen. + +In diesem Tutorial führen wir Sie durch einen einzigen, zusammenhängenden Workflow, der drei Dinge nacheinander erledigt: **PDF in PDF/X‑1a konvertieren**, **PDF‑Seite als PNG exportieren** und **Textstempel zum PDF hinzufügen**. Der Code verwendet die Aspose.Pdf‑Bibliothek für .NET, sodass Sie eine professionelle Lösung erhalten, ohne sich mit Low‑Level‑PDF‑Interna herumschlagen zu müssen. Am Ende haben Sie ein ausführbares C#‑Programm, das Sie in jede Konsolen‑App, Azure‑Funktion oder CI‑Stufe einbinden können. + +> **Was Sie erhalten** – eine vollständige Quelldatei, Schritt‑für‑Schritt‑Erklärungen, Tipps für häufige Fallstricke und eine schnelle Möglichkeit, das Ergebnis zu überprüfen. + +## Voraussetzungen + +- .NET 6.0 oder höher (die API funktioniert auch mit .NET Framework 4.x). +- Aspose.Pdf for .NET NuGet‑Paket (`Aspose.Pdf`) – Version 23.10 ist zum Zeitpunkt des Schreibens aktuell. +- Eine Eingabe‑PDF (`input.pdf`) und eine ICC‑Profil‑Datei (`Coated_Fogra39L_VIGC_300.icc`) in einem von Ihnen kontrollierten Ordner. +- Grundlegende Kenntnisse in C# und Visual Studio (oder Ihrer bevorzugten IDE). + +Falls Ihnen etwas davon unbekannt ist, installieren Sie das NuGet‑Paket einfach mit: + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +## Schritt 1: Quell‑PDF‑Dokument laden + +Das Erste, was wir tun, ist das PDF zu öffnen, an dem wir arbeiten wollen. Die `Document`‑Klasse von Aspose.Pdf repräsentiert die gesamte Datei und lädt den Inhalt lazy, sodass Sie keinen Performance‑Nachteil zahlen, bis Sie tatsächlich die Seiten ansprechen. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*Warum das wichtig ist*: Das frühe Laden des Dokuments gibt uns ein einzelnes Objekt, das wir für Konvertierung, Rendering und Stempeln weitergeben können. Wenn Sie das explizite Laden überspringen und versuchen, mit einer nicht existierenden Datei zu arbeiten, erhalten Sie später eine kryptische `FileNotFoundException`. + +## Schritt 2: Dokument mit benutzerdefiniertem ICC‑Profil in PDF/X‑1a konvertieren + +PDF/X‑1a ist der de‑facto‑Standard für druckfertige PDFs. Der Konvertierungsschritt ermöglicht es Ihnen außerdem, ein **Output Intent** (das ICC‑Profil) einzubetten, sodass nachgelagerte RIPs genau wissen, wie Farben zu interpretieren sind. + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*Pro‑Tipp*: Wenn Sie strengere Fehlerbehandlung benötigen, ersetzen Sie `ConvertErrorAction.Delete` durch `ConvertErrorAction.Throw`. Auf diese Weise bricht die Konvertierung beim ersten Konformitätsproblem ab, was für automatisierte QA‑Pipelines praktisch ist. + +## Schritt 3: Erste Seite als PNG exportieren und dabei Schriften analysieren + +Eine PNG‑Vorschau wird häufig für schnelle visuelle Prüfungen oder die Erstellung von Thumbnails benötigt. Durch Aktivieren von `AnalyzeFonts` stellt Aspose sicher, dass eingebettete Schriften korrekt gerastert werden, wodurch fehlende Glyphen‑Überraschungen vermieden werden. + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +Nach dem Ausführen finden Sie `page1.png` neben Ihren Quelldateien. Öffnen Sie sie in einem Bildbetrachter, um zu bestätigen, dass die Konvertierung korrekt aussieht. + +## Schritt 4: Textstempel hinzufügen, der die Schriftgröße automatisch anpasst + +Ein **Textstempel** ist eine praktische Möglichkeit, ein PDF zu wässern oder zu annotieren, ohne die zugrunde liegenden Inhalts‑Streams zu verändern. Das Setzen von `AutoAdjustFontSizeToFitStampRectangle` bedeutet, dass die Bibliothek den Text verkleinert oder vergrößert, sodass er niemals das von Ihnen definierte Rechteck überschreitet. + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*Warum Auto‑Size?* Wenn Sie später den Stempeltext zu etwas Längerem ändern (z. B. einen dynamischen Zeitstempel), müssen Sie die Schriftgrößen nicht manuell neu berechnen – der Stempel passt sich automatisch an. + +## Schritt 5: Aktualisiertes PDF‑Dokument speichern + +Zum Schluss schreiben Sie alles zurück auf die Festplatte. Sie können entweder die Originaldatei überschreiben oder eine brandneue erstellen; das untenstehende Beispiel erzeugt `output.pdf`. + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +Wenn das Speichern abgeschlossen ist, haben Sie: + +1. Eine **PDF/X‑1a**‑konforme Datei (`output.pdf`). +2. Eine **PNG‑Vorschau** der ersten Seite (`page1.png`). +3. Einen **Textstempel**, der perfekt in sein Rechteck passt. + +### Schnell‑Checkliste zur Verifizierung + +| ✅ Prüfung | Wie zu überprüfen | +|-----------|-------------------| +| PDF/X‑1a‑Konformität | Öffnen Sie `output.pdf` in Adobe Acrobat → *Print Production* → *Preflight* und wählen Sie “PDF/X‑1a:2001”. | +| PNG sieht korrekt aus | Öffnen Sie `page1.png` im Windows-Fotoanzeige oder einem beliebigen Bildeditor. | +| Stempel erscheint | Blättern Sie durch `output.pdf` – der Text “Auto‑size” sollte zentriert auf Seite 1 erscheinen. | + +![PDF in PDF/X‑1a Vorschau](image.png "PDF in PDF/X‑1a Vorschau mit angezeigtem Stempel") + +*Bild‑Alt‑Text*: **PDF in PDF/X‑1a Vorschau mit Auto‑Size‑Textstempel** – zeigt das endgültige PDF nach allen Schritten. + +## Häufige Variationen & Sonderfälle + +- **Multiple pages** – Wenn Sie jede Seite stempeln müssen, iterieren Sie über `pdfDoc.Pages` und rufen `AddStamp` innerhalb der Schleife auf. +- **Different output format** – Ändern Sie `PdfFormat.PDF_X_1A` zu `PdfFormat.PDF_A_1B` für Archiv‑PDFs. +- **Higher‑resolution PNG** – Setzen Sie `Resolution = 600` in den `RenderingOptions` für Thumbnails in Druckqualität. +- **Custom font for the stamp** – Weisen Sie `autoSizeStamp.Font = FontRepository.FindFont("Arial")` zu, bevor Sie den Stempel hinzufügen. +- **Error handling** – Umwickeln Sie jeden Hauptschritt in einem `try/catch` und protokollieren Sie `ConversionException` oder `FileNotFoundException` für einfacheres Debugging. + +## Vollständiges funktionierendes Beispiel (Copy‑Paste‑bereit) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Setup paths + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Load the source document + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Convert to PDF/X‑1a (print‑ready) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Export first page as PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Add auto‑sizing text stamp (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/german/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..4797bc870 --- /dev/null +++ b/pdf/german/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,270 @@ +--- +category: general +date: 2026-03-29 +description: PDF als HTML mit Aspose.PDF in C# speichern. Erfahren Sie, wie Sie PDF + in HTML konvertieren, Bilder weglassen und die PDF‑Signatur in einem einzigen Tutorial + überprüfen. +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: de +og_description: Speichern Sie PDF als HTML mit Aspose.PDF in C#. Dieser Leitfaden + zeigt Ihnen, wie Sie PDF in HTML konvertieren, Bilder überspringen und die digitale + PDF‑Signatur validieren. +og_title: PDF als HTML mit Aspose speichern – Vollständiger C#‑Leitfaden +tags: +- Aspose.PDF +- C# +- PDF processing +title: PDF als HTML speichern mit Aspose – Vollständiger C#‑Leitfaden +url: /de/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF als HTML speichern mit Aspose – Vollständige C# Anleitung + +Haben Sie sich schon einmal gefragt, wie man **PDF als HTML** speichert, ohne jedes eingebettete Bild zu übernehmen? Vielleicht bauen Sie eine leichte Web‑Vorschau und die zusätzlichen Bilddaten verlangsamen Ihre Seite. Die gute Nachricht: Sie müssen keinen eigenen Parser schreiben – Aspose.PDF übernimmt die schwere Arbeit für Sie. In diesem Tutorial **konvertieren wir PDF zu HTML**, entfernen die Bilder und **überprüfen die PDF‑Signatur**, um sicherzustellen, dass das Dokument nicht manipuliert wurde. + +Wir gehen jede Code‑Zeile durch, erklären *warum* jede Einstellung wichtig ist und gehen sogar auf Sonderfälle wie große PDFs oder fehlende Signaturen ein. Am Ende haben Sie eine sofort ausführbare C#‑Konsolen‑App, die eine saubere HTML‑Datei erzeugt und ein klares true/false‑Ergebnis für die digitale Signatur liefert. + +## Was Sie lernen werden + +- Laden einer PDF‑Datei mit Aspose.PDF. +- Verwendung von `HtmlSaveOptions`, um **PDF zu HTML** zu konvertieren und dabei Bilder zu überspringen. +- Speichern der resultierenden HTML‑Datei auf dem Datenträger. +- Einrichten eines `PdfFileSignature`‑Objekts, um **PDF‑Signatur** zu **verifizieren**. +- Interpretation des booleschen Ergebnisses und Umgang mit gängigen Stolperfallen. +- Bonus‑Tipps für Performance und Fehlersuche. + +### Voraussetzungen + +- .NET 6.0 oder höher (der Code funktioniert auch mit .NET Framework 4.7+). +- Aspose.PDF für .NET NuGet‑Paket (Version 23.12 oder neuer). +- Eine signierte PDF (`input.pdf`) mit einer Signatur namens „Sig1“. +- Grundlegende Kenntnisse in C# und Konsolen‑Anwendungen. + +> **Pro‑Tipp:** Wenn Sie das Aspose.PDF‑Paket noch nicht installiert haben, führen Sie `dotnet add package Aspose.PDF` in Ihrem Projektordner aus. + +--- + +## Schritt 1: Laden des Quell‑PDF‑Dokuments + +Bevor wir etwas tun können, benötigen wir eine In‑Memory‑Repräsentation des PDFs. Die `Document`‑Klasse von Aspose.PDF liest die Datei und baut einen Baum aus Seiten, Ressourcen und Anmerkungen auf. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**Warum das wichtig ist:** Das Dokument einmal zu laden hält den Speicherverbrauch vorhersehbar. Wenn Sie viele PDFs in einer Schleife verarbeiten, sollten Sie dieselbe `Document`‑Instanz wiederverwenden, nachdem Sie `pdfDocument.Dispose()` aufgerufen haben. + +--- + +## Schritt 2: HTML‑Speicheroptionen konfigurieren – Bilder überspringen + +Wir wollen **PDF als HTML** speichern, aber ohne die schweren Bilddaten. `HtmlSaveOptions` bietet feinkörnige Kontrolle, und das Flag `SkipImages` weist Aspose an, ``‑Tags vollständig wegzulassen. + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**Warum Sie Bilder überspringen könnten:** Für Vorschau‑Portale oder Mobile‑First‑Designs zählt jedes Kilobyte. Das Entfernen von Bildern umgeht zudem Lizenz‑Probleme, falls das Quell‑PDF urheberrechtlich geschützte Grafiken enthält. + +--- + +## Schritt 3: Export des PDFs als HTML‑Datei ohne Bilder + +Jetzt schreiben wir die HTML‑Datei. Die `Save`‑Methode respektiert die oben gesetzten Optionen. + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**Ergebnis, das Sie sehen werden:** Eine `.html`‑Datei, die den Textinhalt, Tabellen und Vektorgrafiken (falls vorhanden) enthält, aber keine ``‑Tags. Öffnen Sie sie im Browser – Sie sollten eine saubere, bildfreie Darstellung des ursprünglichen PDFs sehen. + +--- + +## Schritt 4: Einen Signatur‑Verifier für dasselbe Dokument vorbereiten + +Die `PdfFileSignature`‑Klasse von Aspose.PDF ermöglicht das Prüfen digitaler Signaturen, die im PDF eingebettet sind. Wir erstellen eine Instanz, die auf dasselbe bereits geladene `Document` verweist. + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**Hinweis zur Ressourcen‑Verwaltung:** Die `using`‑Anweisung sorgt dafür, dass der Verifier alle nativen Handles freigibt, sobald wir fertig sind, und verhindert Datei‑Lock‑Probleme unter Windows. + +--- + +## Schritt 5: Verifizieren der Signatur „Sig1“ mit SHA‑3‑256 + +Die meisten PDFs nutzen SHA‑256 oder SHA‑1, aber Aspose unterstützt auch die neuere SHA‑3‑Familie. Hier fordern wir explizit `Sha3_256` an. Fehlt die Signatur oder stimmt der Algorithmus nicht überein, liefert die Methode `false`. + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Was ein „false“ bedeuten kann:** + +1. **Signatur nicht gefunden** – vielleicht verwendet das PDF einen anderen Namen; listen Sie Signaturen mit `signatureVerifier.GetSignatureNames()` auf. +2. **Algorithmus‑Mismatch** – das PDF könnte mit SHA‑256 signiert sein; probieren Sie `DigestHashAlgorithm.Sha256`. +3. **Dokument verändert** – jede Änderung nach der Signatur macht den Hash ungültig und führt zu `false`. + +--- + +## Umgang mit gängigen Sonderfällen + +### Große PDFs + +Überschreitet Ihr Quell‑PDF einige hundert Megabyte, aktivieren Sie den **Speicher‑spar‑Modus**: + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +Damit werden Seiten bei Bedarf gestreamt, was den RAM‑Verbrauch reduziert. + +### Fehlende Signatur + +Wenn Sie den Signatur‑Namen nicht kennen, listen Sie sie auf: + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +Wählen Sie den korrekten Namen aus der Liste, bevor Sie `VerifySignature` aufrufen. + +### Browser‑Kompatibilität + +Einige Browser haben Probleme mit HTML, das Asposes Standard‑CSS enthält. Durch Setzen von `htmlSaveOptions.EmbedCss = true` (wie oben gezeigt) werden die Styles inline eingefügt, was die Datei portabler macht. + +--- + +## Vollständiges, funktionierendes Beispiel + +Nachfolgend das komplette, copy‑and‑paste‑bereite Programm, das alle Schritte, Fehlerbehandlung und optionale Diagnosen enthält. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Erwartete Konsolenausgabe** (Pfade können abweichen): + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +Ist die Signatur ungültig, lautet die letzte Zeile `Signature valid: False`. + +--- + +## Häufig gestellte Fragen + +**F: Kann ich PDF zu HTML *mit* Bildern konvertieren?** +A: Absolut. Setzen Sie einfach `SkipImages = false` (oder lassen Sie die Eigenschaft weg). Aspose legt jedes Bild als separate Datei in einem Unterordner neben der HTML ab. + +**F: Funktioniert das unter Linux?** +A: Ja. Aspose.PDF ist plattformübergreifend; achten Sie nur darauf, dass die `YOUR_DIRECTORY`‑Pfade Vorwärtsschrägstriche oder `Path.Combine` verwenden. + +**F: Was, wenn ich eine PDF‑Digitalsignatur mit einem eigenen Zertifikat prüfen muss?** +A: Verwenden Sie die Überladung `PdfFileSignature.ValidateSignature`, die ein `X509Certificate2`‑Objekt akzeptiert. Diese Methode liefert zudem ein detailliertes `SignatureInfo`, das Sie inspizieren können. + +**F: Ist `aspose convert pdf` auf C# beschränkt?** +A: Nein. Die gleiche API gibt es für Java, Python und andere .NET‑Sprachen. Die Konzepte – laden, Optionen setzen, speichern, verifizieren – bleiben identisch. + +--- + +## Fazit + +Sie wissen jetzt genau, wie man **PDF als HTML** mit Aspose.PDF speichert, unnötige Bilder entfernt und **PDF‑Signatur** in einem einzigen, schlanken C#‑Programm verifiziert. Der Ablauf ist simpel: laden, konfigurieren, exportieren und validieren. Mit den optionalen Diagnosen und der Behandlung von Sonderfällen können Sie dieses Muster für Batch‑Jobs, Web‑Services oder Desktop‑Utilities anpassen. + +Bereit für den nächsten Schritt? Versuchen Sie **PDF zu HTML konvertieren** und dabei die Bilder zu erhalten, oder experimentieren Sie mit anderen Hash‑Algorithmen, um **PDF‑Digitalsignaturen** gegen Ihre eigene PKI zu prüfen. Sie können auch Asposes PDF‑zu‑DOCX‑Konvertierung erkunden oder mehrere PDFs vor dem Export zusammenführen – jede davon ist eine natürliche Erweiterung des gerade aufgebauten Workflows. + +Viel Spaß beim Coden, und mögen Ihre HTML‑Vorschauen leicht bleiben und Ihre Signaturen vertrauenswürdig! + +![PDF als HTML speichern Beispiel](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/german/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..f67251ec4 --- /dev/null +++ b/pdf/german/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,258 @@ +--- +category: general +date: 2026-03-29 +description: PDF als HTML mit C# und Aspose.PDF speichern. Erfahren Sie, wie Sie eine + Seite in ein PDF einfügen, eine leere PDF‑Seite hinzufügen und eine PKCS7‑detachierte + Signatur in einem Durchlauf erstellen. +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: de +og_description: PDF in HTML in C# mit Aspose.PDF speichern. Dieser Leitfaden zeigt, + wie man ein PDF lädt, eine Seite einfügt, eine leere Seite hinzufügt, mit PKCS7 + signiert und in HTML exportiert. +og_title: PDF als HTML speichern mit C# – Vollständiges Programmier‑Tutorial +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: PDF als HTML mit C# speichern – Vollständige Schritt‑für‑Schritt‑Anleitung +url: /de/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF als HTML speichern mit C# – Vollständige Schritt‑für‑Schritt‑Anleitung + +Haben Sie jemals **PDF als HTML speichern** müssen, waren sich aber nicht sicher, wie Sie das Layout beibehalten und gleichzeitig das Quelldokument anpassen können? Sie sind nicht allein – Entwickler jonglieren häufig mit Paginierungs‑Korrekturen, leeren Seiten und digitalen Signaturen vor der Konvertierung. In diesem Tutorial führen wir Sie durch einen einzigen, zusammenhängenden Workflow, der genau das leistet, und wir streuen dabei ein, wie man **Seite in PDF einfügt**, **leere PDF‑Seite hinzufügt** und **PKCS7‑detached‑Signature erstellt**. + +Am Ende dieses Leitfadens haben Sie ein einsatzbereites C#‑Programm, das ein vorhandenes PDF lädt, dessen Seiten neu anordnet, die erste Seite signiert und schließlich das gesamte Dokument mit Unicode‑CMap‑Priorität nach HTML exportiert. Keine losen Referenzen, nur eine eigenständige Lösung, die Sie in jedes .NET‑Projekt einbinden können. + +## Was Sie benötigen + +- **Aspose.PDF for .NET** (neueste Version, 23.x zum Zeitpunkt der Erstellung). +- **.NET 6.0** oder höher – der Code kompiliert auch mit .NET Framework 4.7, aber .NET 6 bietet die beste Performance. +- Eine **Zertifikatsdatei** (`.pfx`) und ihr Passwort für die PKCS7‑Signatur. +- Ein Eingabe‑PDF (`input.pdf`), das Sie bearbeiten möchten. + +Wenn Sie diese haben, können wir direkt zum Code springen. Andernfalls holen Sie sich eine kostenlose 30‑Tage‑Aspose‑Testversion von der offiziellen Website; die API ist identisch zur kostenpflichtigen Version. + +--- + +## Schritt 1 – PDF‑Dokument in C# laden (Hauptaktion) + +Das allererste ist, das PDF in den Speicher zu laden. Asposes `Document`‑Klasse übernimmt die gesamte schwere Arbeit. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*Warum das wichtig ist:* Das Laden der Datei liefert Ihnen ein veränderbares Objektmodell. Von hier aus können Sie **Seite in PDF einfügen**, leere Seiten hinzufügen oder Signaturen anwenden, ohne die Originaldatei auf der Festplatte zu berühren. + +--- + +## Schritt 2 – Seite einfügen und leere PDF‑Seite hinzufügen + +Manchmal enthält das Quell‑PDF Paginierungsartefakte – vielleicht eine fehlende Seite oder eine doppelte. Unten kopieren wir Seite 2 direkt nach Seite 1 und fügen am Ende eine komplett leere Seite hinzu. + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*Pro‑Tipp:* `UpdatePagination()` berechnet die Seitenzahlen, die in von Aspose erzeugten Fuß‑ oder Kopfzeilen erscheinen, neu. Das Überspringen dieses Schrittes kann veraltete Zahlen im finalen HTML hinterlassen. + +--- + +## Schritt 3 – PKCS7‑Detached‑Signature erstellen (SHA‑512) + +Eine detached PKCS7‑Signatur beweist die Integrität des Dokuments, ohne die Signaturdaten direkt in den PDF‑Inhaltsstrom einzubetten. Wir verwenden ein in einer PFX‑Datei gespeichertes Zertifikat. + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*Warum SHA‑512?* Es bietet einen stärkeren Hash als SHA‑256 und wird dennoch breit unterstützt. Wenn Sie mit älteren Standards konform sein müssen, ersetzen Sie `Sha512` durch `Sha256`. + +--- + +## Schritt 4 – Digitale Signatur auf Seite 1 mit sichtbarem Rechteck anwenden + +Wir platzieren ein sichtbares Signaturfeld auf der ersten Seite. Das Rechteck definiert, wo das Signaturbild (oder ein Platzhalter) erscheint. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*Randfall:* Wenn die Zielseite bereits ein Formularfeld mit demselben Namen enthält, wirft die API eine Ausnahme. Stellen Sie eindeutige Feldnamen sicher oder löschen Sie vorhandene Felder vor dem Signieren. + +--- + +## Schritt 5 – HTML‑Speicheroptionen konfigurieren, um Unicode‑CMap zu priorisieren + +Beim Konvertieren nach HTML kann Aspose Schriftarten als Base‑64 einbetten, Teilmengen verwenden oder sich auf Unicode‑CMaps verlassen. Die Priorisierung von Unicode reduziert die Dateigröße und verbessert die Durchsuchbarkeit des Textes. + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*Was bewirkt das?* Es weist den Konverter an, wann immer möglich Unicode‑CMaps gegenüber benutzerdefiniertem Schriftart‑Embedding zu bevorzugen, was ideal für mehrsprachige PDFs ist. + +--- + +## Schritt 6 – Das signierte Dokument als HTML speichern + +Abschließend schreiben wir das verarbeitete PDF als HTML‑Ordner aus (Aspose erstellt ein Verzeichnis mit unterstützenden Dateien wie CSS und Bildern). + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +Wenn Sie `cmap.html` in einem Browser öffnen, sehen Sie das ursprüngliche PDF‑Layout als HTML gerendert, komplett mit dem sichtbaren Signaturbild auf Seite 1. + +--- + +## Vollständiges funktionierendes Beispiel (Alle Schritte kombiniert) + +Unten finden Sie das komplette Programm, das Sie in eine Konsolen‑App kopieren‑und‑einfügen können. Es enthält alle notwendigen `using`‑Direktiven und Fehlerbehandlung. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**Erwartetes Ergebnis:** +- `cmap.html` (die Haupt‑HTML‑Datei) +- `cmap_files`‑Ordner, der CSS, Bilder und Schriftressourcen enthält. +- Die erste Seite zeigt ein sichtbares Signaturfeld an den von Ihnen festgelegten Koordinaten. + +--- + +## Häufig gestellte Fragen & Randfälle + +| Frage | Antwort | +|----------|--------| +| *Kann ich ein selbstsigniertes Zertifikat verwenden?* | Ja, Aspose.PDF akzeptiert jede gültige PFX. Denken Sie jedoch daran, dass Browser die Signatur möglicherweise als nicht vertrauenswürdig markieren. | +| *Was, wenn ich mehrere Seiten signieren muss?* | Erstellen Sie für jede Seite separate `PdfFileSignature`‑Aufrufe oder verwenden Sie eine Schleife, die `pageNumber` aktualisiert. | +| *Gibt es eine Möglichkeit, das Signaturbild anstelle eines Rechtecks einzubetten?* | Übergeben Sie ein `SignatureAppearance`‑Objekt mit einem Bild‑Stream an `PdfFileSignature.Sign`. | +| *Mein PDF enthält verschlüsselten Inhalt – kann ich trotzdem konvertieren?* | Entschlüsseln Sie es zuerst mit `pdfDoc.Decrypt("ownerPassword")`, dann führen Sie die Schritte aus. | +| *Wird das HTML die Hyperlinks aus dem ursprünglichen PDF beibehalten?* | Aspose bewahrt Link‑Annotationen standardmäßig. Wenn Links fehlen, setzen Sie `htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;`. | + +--- + +## Abschluss + +Wir haben gerade gezeigt, wie man **PDF als HTML speichert**, während man gleichzeitig **Seite in PDF einfügt**, **leere PDF‑Seite hinzufügt** und **PKCS7‑detached‑Signature erstellt** – alles mit C#. Der Workflow ist linear, leicht zu debuggen und für größere Projekte vollständig anpassbar. + +Als Nächstes möchten Sie vielleicht Folgendes erkunden: + +- **Batch‑Verarbeitung** – über einen Ordner mit PDFs iterieren und jede konvertieren. +- **Benutzerdefiniertes CSS** – passen Sie `HtmlSaveOptions.CustomCss` an das Styling Ihrer Website an. +- **Erweiterte Signaturen** – verwenden Sie Zeitstempeldienste oder LTV (Long‑Term Validation) für konforme Signaturen. + +Probieren Sie diese aus, und Sie erhalten eine robuste PDF‑zu‑HTML‑Pipeline, die sowohl SEO‑freundlich als auch zitierfähig für KI‑Assistenten ist. Viel Spaß beim Coden! + +--- + +![Diagramm, das das geladene PDF, eingefügte Seiten, angewendete Signatur und anschließendes HTML‑Ergebnis zeigt](/images/save-pdf-as-html-workflow.png "PDF‑zu‑HTML‑Workflow speichern") + +*Bild‑Alt‑Text:* **Diagramm des PDF‑zu‑HTML‑Workflows** + +{{< /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 951813a4f..d490e4196 100644 --- a/pdf/german/net/digital-signatures/_index.md +++ b/pdf/german/net/digital-signatures/_index.md @@ -58,12 +58,16 @@ 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. + ### [PDF-Dokument laden in C# – Konvertieren zu PDF/X‑4 und Signaturen auflisten](./load-pdf-document-c-convert-to-pdf-x-4-list-signatures/) Laden Sie ein PDF in C#, konvertieren Sie es zu PDF/X‑4 und listen Sie vorhandene Signaturen auf. ### [PDF-Signatur validieren mit Aspose – PDF in HTML konvertieren](./validate-pdf-signature-with-aspose-convert-pdf-to-html/) Erfahren Sie, wie Sie PDF‑Signaturen mit Aspose validieren und das PDF anschließend in HTML konvertieren. +### [Wie man PDFs signiert und Bilder hinzufügt – Vollständiger C#‑Leitfaden](./how-to-sign-pdf-and-add-images-complete-c-guide/) +Erfahren Sie, wie Sie PDFs signieren und Bilder in die Signatur einbetten – Schritt‑für‑Schritt in C#. + ## Weitere Ressourcen - [Aspose.PDF für Net-Dokumentation](https://docs.aspose.com/pdf/net/) diff --git a/pdf/german/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/german/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..473db7de0 --- /dev/null +++ b/pdf/german/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,244 @@ +--- +category: general +date: 2026-03-29 +description: Wie man ein PDF mit einer digitalen Signatur signiert und ein zugeschnittenes + Bild in C# hinzufügt. Lernen Sie, digitale Signaturen zu PDFs hinzuzufügen, Bilder + für PDFs zuzuschneiden und Bilder einfach zu PDFs hinzuzufügen. +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: de +og_description: Wie man ein PDF mit einer digitalen Signatur signiert und ein zugeschnittenes + Bild mit Aspose.Pdf in C# einbettet. Folgen Sie diesem Leitfaden für eine vollständige + Lösung. +og_title: Wie man PDFs signiert und Bilder hinzufügt – Schritt‑für‑Schritt C#‑Tutorial +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: Wie man PDF signiert und Bilder hinzufügt – Vollständiger C#‑Leitfaden +url: /de/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man PDF signiert und Bilder hinzufügt – Vollständige C#‑Anleitung + +Haben Sie sich jemals gefragt, **wie man PDF** programmgesteuert signiert und gleichzeitig ein benutzerdefiniertes Bild einfügt? Vielleicht bauen Sie einen Genehmigungs‑Workflow und benötigen eine rechtlich bindende Signatur *und* ein Miniaturbild des Fotos des Unterzeichners auf derselben Seite. Kurz gesagt, Sie wollen **add digital signature pdf**‑Inhalt hinzufügen, das Bild zuschneiden und dann **add image to pdf** ohne großen Aufwand. + +Dieses Tutorial führt Sie durch jeden Schritt – vom Laden eines ECDSA PKCS#7‑Zertifikats über das Zuschneiden eines JPEGs bis hin zum Stempeln auf die signierte Seite. Am Ende haben Sie eine einzelne, ausführbare C#‑Datei, die Seite 1 signiert, ein Foto auf 400 × 400 px zuschneidet und es an einer genauen Position platziert. Keine externen Skripte, keine Magie, nur klarer Code und Erklärungen. + +## Voraussetzungen + +- .NET 6.0 oder höher (der Code funktioniert auch mit .NET Framework 4.7+) +- **Aspose.Pdf for .NET** NuGet‑Paket (Version 23.9 oder neuer) +- Ein ECDSA P‑256‑Zertifikat im PKCS#7‑Format (`.pfx`) und dessen Passwort +- Ein JPEG‑Bild, das Sie einbetten möchten (z. B. `photo.jpg`) + +> **Pro‑Tipp:** Halten Sie Ihre Zertifikatsdatei außerhalb der Versionskontrolle und schützen Sie das Passwort mit einem Geheimnis‑Manager. + +--- + +## Schritt 1: Projekt einrichten und Importe + +Zuerst erstellen Sie eine Konsolen‑App (oder integrieren dies in einen bestehenden Service). Fügen Sie den Aspose.Pdf‑Verweis hinzu: + +```bash +dotnet add package Aspose.Pdf +``` + +Dann fügen Sie die erforderlichen Namespaces ein: + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +Diese `using`‑Anweisungen geben Ihnen Zugriff auf die Klassen `Document`, `Signature` und `Rectangle`, die wir später benötigen. + +## Schritt 2: PDF laden und Signatur vorbereiten + +Wir öffnen ein vorhandenes PDF (`source.pdf`) und erstellen ein **digital signature pdf**‑Objekt, das eine abgetrennte PKCS#7‑Signatur verwendet. Das Zertifikat ist ein ECDSA P‑256‑Schlüssel, der allgemein für Konformität akzeptiert wird. + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**Warum das wichtig ist:** Die Verwendung einer abgetrennten PKCS#7‑Signatur bewahrt den ursprünglichen PDF‑Inhalt unverändert, während ein kryptografischer Hash eingebettet wird. Dies ist der branchenübliche Ansatz für rechtlich bindende PDFs. + +## Schritt 3: Digitale Signatur auf einer bestimmten Seite anwenden + +Jetzt platzieren wir das sichtbare Signaturfeld auf **Seite 1**. Das Rechteck definiert, wo die Signaturbox erscheint (Koordinaten sind in Punkten, wobei 1 Zoll = 72 Punkte). + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +Falls Sie keine sichtbare Box benötigen, setzen Sie `isVisible` auf `false`. Das `signatureRect` kann angepasst werden, um Ihrem Dokumentlayout zu entsprechen. + +## Schritt 4: Bild‑Stream öffnen und Zuschneide‑Bereiche definieren + +Wir lesen die JPEG‑Datei in einen Stream ein und geben ein **source rectangle** an, das die oberen‑linken 400 × 400 Pixel auswählt. Das ist die **crop image for pdf**‑Operation. + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **Randfall:** Wenn Ihr Bild kleiner als 400 × 400 ist, wird das Zuschneiden automatisch auf die tatsächlichen Bildabmessungen begrenzt – es wird keine Ausnahme ausgelöst. + +## Schritt 5: Definieren, wo das zugeschnittene Bild erscheinen soll + +Als Nächstes setzen wir das **destination rectangle** auf der PDF‑Seite. In diesem Beispiel platzieren wir das Bild bei (50, 50) mit einer Größe von 200 × 200 Punkten (≈2,78 Zoll quadratisch). + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +Fühlen Sie sich frei zu experimentieren: Ändern Sie die X/Y‑Koordinaten, um das Bild zu verschieben, oder passen Sie Breite/Höhe für die Skalierung an. + +## Schritt 6: Das zugeschnittene Bild auf die signierte Seite einfügen + +Schließlich fügen wir das Bild zu **Seite 1** hinzu (derselbe Seite, die jetzt die Signatur enthält). Die von uns verwendete `AddImage`‑Überladung akzeptiert das Quell‑ und Ziel‑Rechteck und führt das Zuschneiden sowie die Platzierung in einem Aufruf aus. + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +Im Hintergrund extrahiert Aspose.Pdf den 400 × 400‑Pixel‑Bereich, skaliert ihn auf 200 × 200 Punkte und schreibt ihn in den PDF‑Inhalts‑Stream. + +## Schritt 7: Das signierte und bildverbesserte PDF speichern + +Nach allen Änderungen speichern Sie das Dokument. Sie können die Originaldatei überschreiben oder in eine neue Datei schreiben. + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +Wenn Sie `output_signed.pdf` in Adobe Acrobat oder einem beliebigen PDF‑Betrachter öffnen, sehen Sie: + +- Ein sichtbares Signaturfeld an den von Ihnen angegebenen Koordinaten. +- Das zugeschnittene Foto bei (50, 50) auf Seite 1 platziert. +- Die digitale Signatur validiert (vorausgesetzt, der Betrachter vertraut Ihrem Zertifikat). + +--- + +## Häufig gestellte Fragen (FAQ) + +| Frage | Antwort | +|----------|--------| +| **Kann ich eine andere Seite signieren?** | Ändern Sie das Argument `pageNumber` in `signature.Sign` zu einem beliebigen gültigen Seitenindex (1‑basiert). | +| **Was, wenn ich mehrere Signaturen benötige?** | Erstellen Sie für jede Seite oder Position eine neue `Signature`‑Instanz und verwenden Sie dieselbe `pkcsSignature`, falls dasselbe Zertifikat gilt. | +| **Ist das Zuschneiden von Bildern auf Rechtecke beschränkt?** | Ja, Aspose.Pdf’s `AddImage` arbeitet mit rechteckigen Bereichen. Für komplexe Formen müssten Sie das Bild vorher bearbeiten (z. B. mit System.Drawing), bevor Sie es einbetten. | +| **Wie mache ich die Signatur unsichtbar?** | Setzen Sie `isVisible` auf `false` und lassen Sie das `signatureRect` weg. Die Signatur bleibt kryptografisch gültig. | +| **Welche Formate kann ich neben JPEG einbetten?** | PNG, BMP, GIF und TIFF werden alle unterstützt. Ändern Sie einfach den Dateipfad und stellen Sie sicher, dass der Stream die richtigen Bytes liest. | + +## Vollständiges funktionierendes Beispiel + +Unten finden Sie das komplette, eigenständige Programm. Kopieren Sie es in `Program.cs`, passen Sie die Pfade an und führen Sie es aus. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**Erwartetes Ergebnis:** Beim Öffnen von `output_signed.pdf` wird ein Signaturfeld (100 × 100 → 300 × 300 Punkte) und ein 200 × 200‑Punkte‑Bild angezeigt, das aus der oberen linken Ecke von `photo.jpg` stammt. Die Signatur wird gegen das bereitgestellte ECDSA‑Zertifikat validiert. + +## Fazit + +Wir haben behandelt, **how to sign PDF**‑Dateien, wie man **add digital signature pdf** zu einer bestimmten Seite hinzufügt, wie man **crop image for pdf** durchführt und schließlich, wie man **add image to pdf** mit Aspose.Pdf in C# verwendet. Der gesamte Ablauf – vom Laden des Zertifikats bis zum Speichern des finalen Dokuments – passt in eine einzige, leicht lesbare Quelldatei. + +Wenn Sie bereit für die nächste Herausforderung sind, überlegen Sie: + +- **Mehrere Signaturen** auf verschiedenen Seiten hinzufügen (verwenden Sie das Konzept „digital signature pdf page“). +- **QR‑Codes** einbetten, die zu Verifizierungsdiensten verlinken. +- Den Prozess in einer ASP.NET Core‑API zu automatisieren, um PDFs on‑the‑fly zu erzeugen. + +Denken Sie daran, der Schlüssel zu robuster PDF‑Automatisierung ist eine klare Trennung der Verantwortlichkeiten: Signatur‑Handling, Bildverarbeitung und finale Dokumentzusammenstellung. Spielen Sie mit den Koordinaten, tauschen Sie das Bildformat aus oder experimentieren Sie mit Zeitstempeln – Ihr Workflow ist jetzt vollständig erweiterbar. + +Haben Sie Fragen, Randfall‑Szenarien oder einen coolen Anwendungsfall zu teilen? Hinterlassen Sie unten einen Kommentar und 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/german/net/programming-with-security-and-signatures/_index.md b/pdf/german/net/programming-with-security-and-signatures/_index.md index a5ac28225..717a63374 100644 --- a/pdf/german/net/programming-with-security-and-signatures/_index.md +++ b/pdf/german/net/programming-with-security-and-signatures/_index.md @@ -35,6 +35,7 @@ Das Tutorial gibt Ihnen einen detaillierten Überblick über Methoden und Techni | [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. | | [PDF-Dateien reparieren – Vollständiger C#-Leitfaden mit Aspose.Pdf](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | Erfahren Sie, wie Sie beschädigte PDF-Dateien mit Aspose.PDF für .NET in C# reparieren und wiederherstellen. | +| [PDF-Digitale Signatur validieren – Vollständiger C#-Leitfaden](./validate-pdf-digital-signature-complete-c-guide/) | Erfahren Sie, wie Sie mit Aspose.PDF für .NET digitale Signaturen in PDF-Dateien prüfen und validieren – vollständiger C#-Leitfaden. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/german/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/german/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..a625998dd --- /dev/null +++ b/pdf/german/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,262 @@ +--- +category: general +date: 2026-03-29 +description: Validieren Sie digitale PDF-Signaturen schnell. Erfahren Sie, wie Sie + PDF-Signaturen überprüfen, den Signaturstatus von PDFs prüfen und manipulierte PDFs + mit Aspose.Pdf in C# erkennen. +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: de +og_description: Validieren Sie digitale PDF‑Signaturen in C#. Dieses Tutorial zeigt, + wie man PDF‑Signaturen überprüft, die Integrität von PDF‑Signaturen prüft und manipulierte + PDFs mit Aspose.Pdf erkennt. +og_title: PDF‑Digitale Signatur validieren – Vollständiger C#‑Leitfaden +tags: +- C# +- Aspose.Pdf +- PDF Security +title: PDF-Digitalunterschrift validieren – Vollständiger C#‑Leitfaden +url: /de/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF-Digital Signatur validieren – Vollständige C#-Anleitung + +Haben Sie sich jemals gefragt, **wie man eine PDF‑Signatur verifiziert**, ohne sich die Haare zu raufen? Vielleicht haben Sie einen Vertrag erhalten, ihn geöffnet und müssen zu 100 % sicher sein, dass er nicht verändert wurde. Die gute Nachricht: Sie benötigen kein forensisches Labor – ein paar Zeilen C# und Aspose.Pdf reichen aus, um **PDF‑Digitale Signatur zu validieren** im Handumdrehen. + +In diesem Tutorial führen wir Sie durch alles, was Sie wissen müssen: von der Installation der Bibliothek über die Interpretation des Ergebnisses bis hin zur Behandlung von Sonderfällen wie mehreren Signaturen oder einer beschädigten Datei. Am Ende können Sie den **PDF‑Signatur**‑Status programmgesteuert **prüfen** und **manipulierte PDFs** erkennen, bevor sie Probleme verursachen. + +## Was Sie benötigen + +- **.NET 6.0 oder höher** (der Code funktioniert auch unter .NET Framework, aber .NET 6 ist der optimale Punkt). +- **Aspose.Pdf for .NET** – Sie können es von NuGet holen (`Install-Package Aspose.Pdf`). +- Ein **signiertes PDF**, das Sie testen möchten. Wenn Sie keines haben, erstellen Sie ein einfaches signiertes Dokument mit Adobe Acrobat oder einem beliebigen PDF‑Signer. + +> Profi‑Tipp: Bewahren Sie Ihre PDF‑Dateien außerhalb des Projekt‑Root‑Ordners auf; ein relativer Pfad wie `./Samples/signed.pdf` funktioniert einwandfrei und verhindert versehentliche Commits vertraulicher Dateien. + +## Schritt‑für‑Schritt‑Implementierung + +Im Folgenden zerlegen wir die Lösung in logische Abschnitte. Jeder Abschnitt erhält seine eigene H2‑Überschrift – einer davon enthält sogar das Haupt‑Keyword, was die SEO‑Regel erfüllt. + +### ## Schritt 1 – Installieren und Referenzieren von Aspose.Pdf + +Zuerst fügen Sie das NuGet‑Paket zu Ihrem Projekt hinzu: + +```powershell +dotnet add package Aspose.Pdf +``` + +Oder, wenn Sie die Package Manager Console verwenden: + +```powershell +Install-Package Aspose.Pdf +``` + +Nachdem das Paket installiert ist, fügt Visual Studio automatisch den Namespace `using Aspose.Pdf;` hinzu. Kein zusätzliches DLL‑Handling erforderlich. + +### ## Schritt 2 – Laden des signierten PDF‑Dokuments + +Jetzt öffnen wir tatsächlich die Datei. Die `using`‑Anweisung sorgt dafür, dass das Dokument korrekt freigegeben wird, was bei großen PDFs besonders wichtig ist. + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +**Warum das wichtig ist:** Das Laden des Dokuments gibt uns Zugriff auf das Objekt `DigitalSignatureInfo`, den Einstiegspunkt für alle signaturbezogenen Abfragen. + +### ## Schritt 3 – Abrufen der digitalen Signaturinformationen + +Aspose.Pdf kapselt die Low‑Level‑PKI‑Details in einer benutzerfreundlichen API. Holen Sie sich die Eigenschaft `DigitalSignatureInfo` und Sie haben alles, was Sie benötigen, um den **PDF‑Signatur**‑Zustand zu **prüfen**. + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +Enthält das PDF mehrere Signaturen, aggregiert `signatureInfo` diese und stellt Eigenschaften wie `Count`, `Certificates` und `IsCompromised` bereit. Bei einer Datei mit einer einzigen Signatur enthalten diese Sammlungen nur einen Eintrag. + +### ## Schritt 4 – Ermitteln, ob die Signatur kompromittiert ist + +Das Flag `IsCompromised` gibt an, ob das Dokument **nach** der Signatur verändert wurde. Ein Wert `true` bedeutet, dass das PDF manipuliert wurde – genau das, was wir **manipulierte PDFs** erkennen wollen. + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +Wenn Sie die **PDF‑Signatur** gründlicher **verifizieren** müssen (z. B. Validierung der Zertifikatskette), können Sie auch `signatureInfo.Certificates` untersuchen und `Validate()` für jedes aufrufen. Für die meisten Anwendungsfälle reicht `IsCompromised` aus. + +### ## Schritt 5 – Ergebnis in die Konsole ausgeben + +Abschließend informieren wir den Benutzer über das Ergebnis. Wir geben eine freundliche Meldung aus und liefern einen passenden Rückgabecode für Automatisierungsskripte. + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### Erwartete Ausgabe + +``` +Signature compromised: False +``` + +Wenn Sie das PDF absichtlich manipulieren (z. B. ein Zeichen hinzufügen), wechselt die Ausgabe zu `True`. Das ist der Moment, in dem Sie wissen, dass die Integrität des Dokuments verletzt ist. + +### ## Umgang mit Sonderfällen und häufigen Fallstricken + +#### 1. Mehrere Signaturen + +Hat ein PDF mehr als einen Unterzeichner, spiegelt `IsCompromised` den *gesamten* Zustand wider – wenn **irgendeine** Signatur beschädigt ist, wird das Flag `true`. Um zu ermitteln, welcher Unterzeichner fehlerhaft ist: + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. Fehlende Signatur + +Ist das PDF überhaupt nicht signiert, ist `signatureInfo.Count` `0`. Sie sollten sich vor einem falschen Sicherheitsgefühl schützen: + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. Beschädigte PDF‑Datei + +Eine beschädigte Datei löst eine `PdfException` aus. Umhüllen Sie die Lade‑Logik mit einem try‑catch, um eine klare Fehlermeldung zu geben: + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. Zertifikatsvalidierung (Fortgeschritten) + +Wenn Sie sicherstellen müssen, dass das Signaturzertifikat noch gültig ist (nicht widerrufen, innerhalb seines Gültigkeitszeitraums), können Sie aufrufen: + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +Dieser Schritt führt Sie von einem einfachen **PDF‑Signatur‑Check** zu einem vollständigen **Wie‑man‑PDF‑Signatur‑verifiziert**‑Workflow. + +### ## Vollständiges funktionierendes Beispiel + +Wenn wir alles zusammenfügen, erhalten Sie das vollständige, sofort ausführbare Programm: + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +Führen Sie das Programm über die Befehlszeile aus: + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +Sie sollten einen klaren Bericht sehen, der Ihnen mitteilt, ob das PDF intakt ist, welche Unterzeichner beteiligt sind und ob deren Zertifikate noch vertrauenswürdig sind. + +## Visuelle Übersicht + +Unten finden Sie ein kurzes Diagramm, das den Ablauf vom **Laden des PDFs** bis zum **Ausgeben des Validierungsergebnisses** veranschaulicht. Es ist eine praktische Referenz, wenn Sie die Architektur einer größeren Dokumenten‑Verarbeitungspipeline skizzieren. + +![PDF‑Digital‑Signatur‑Validierungs‑Workflow‑Diagramm](image.png "Diagramm zeigt PDF‑Laden → DigitalSignatureInfo → IsCompromised‑Prüfung") + +*Alt-Text: PDF‑Digital‑Signatur‑Workflow‑Diagramm* + +## Fazit + +Wir haben gerade eine **vollständige End‑to‑End‑Lösung zur Validierung von PDF‑Digital‑Signaturen** mit Aspose.Pdf in C# vorgestellt. Die wichtigsten Erkenntnisse: + +- Laden Sie das PDF mit `Document`. +- Holen Sie `DigitalSignatureInfo` und prüfen Sie `IsCompromised`, um **manipulierte PDFs** zu erkennen. +- Behandeln Sie mehrere Signaturen, fehlende Signaturen und beschädigte Dateien elegant. +- Validieren Sie optional das Signaturzertifikat für eine vollständige **Wie‑man‑PDF‑Signatur‑verifiziert**‑Checkliste. + +Ab hier können Sie die Logik erweitern – Validierungsergebnisse in einer Datenbank speichern, unsignierte Uploads in einer Web‑API ablehnen oder in ein Dokumenten‑Management‑System integrieren. Wenn Sie neugierig auf weitere PDF‑Sicherheitsfunktionen sind, schauen Sie sich **PDF‑Signatur‑Zeitstempel prüfen**, **eine neue Signatur hinzufügen** oder **PDFs verschlüsseln** an. + +Haben Sie Fragen zu Sonderfällen oder möchten sehen, wie man **PDF‑Signatur** mit einer anderen Bibliothek wie iText 7 **verifiziert**? Hinterlassen Sie unten einen Kommentar, und wir führen das Gespräch fort. 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/greek/net/conversion-export/_index.md b/pdf/greek/net/conversion-export/_index.md index e06963c9c..318fc8ece 100644 --- a/pdf/greek/net/conversion-export/_index.md +++ b/pdf/greek/net/conversion-export/_index.md @@ -53,85 +53,85 @@ Master Aspose.PDF για .NET για απρόσκοπτη μετατροπή δ ### [Μετατροπή σελίδων PDF σε PNG με το Aspose.PDF .NET: Ένας πλήρης οδηγός](./convert-pdf-pages-to-png-aspose-net/) Μάθετε πώς να μετατρέπετε σελίδες PDF σε εικόνες PNG υψηλής ποιότητας χρησιμοποιώντας το Aspose.PDF για .NET. Ακολουθήστε αυτόν τον οδηγό βήμα προς βήμα για να αυτοματοποιήσετε αποτελεσματικά τη διαδικασία μετατροπής. -### [Μετατροπή PDF σε BMP χρησιμοποιώντας το Aspose.PDF για .NET: Οδηγός βήμα προς βήμα](./convert-pdf-to-bmp-aspose-pdf-net/) +### [Μετροπή PDF σε BMP χρησιμοποιώντας το Aspose.PDF για .NET: Οδηγός βήμα προς βήμα](./convert-pdf-to-bmp-aspose-pdf-net/) Μάθετε πώς να μετατρέπετε σελίδες PDF σε εικόνες BMP υψηλής ποιότητας χρησιμοποιώντας το Aspose.PDF για .NET με αυτόν τον ολοκληρωμένο οδηγό. -### [Μετατροπή PDF σε EMF χρησιμοποιώντας το Aspose.PDF για .NET: Ένας πλήρης οδηγός](./convert-pdf-emf-aspose-net-guide/) +### [Μετροπή PDF σε EMF χρησιμοποιώντας το Aspose.PDF για .NET: Ένας πλήρης οδηγός](./convert-pdf-emf-aspose-net-guide/) Μάθετε πώς να μετατρέπετε σελίδες PDF σε μορφή EMF χρησιμοποιώντας το Aspose.PDF για .NET. Αυτός ο οδηγός καλύπτει την εγκατάσταση, οδηγίες βήμα προς βήμα και βέλτιστες πρακτικές. -### [Μετατροπή PDF σε EMF με το Aspose.PDF για .NET](./convert-pdf-to-emf-aspose-dotnet/) +### [Μετροπή PDF σε EMF με το Aspose.PDF για .NET](./convert-pdf-to-emf-aspose-dotnet/) Ένα σεμινάριο κώδικα για το Aspose.PDF Net -### [Μετατροπή PDF σε HTML χρησιμοποιώντας το Aspose.PDF για .NET: Οδηγός εξόδου ροής](./convert-pdf-html-aspose-dotnet-guide/) +### [Μετροπή PDF σε HTML χρησιμοποιώντας το Aspose.PDF για .NET: Οδηγός εξόδου ροής](./convert-pdf-html-aspose-dotnet-guide/) Μάθετε πώς να μετατρέπετε αρχεία PDF σε HTML με το Aspose.PDF για .NET χρησιμοποιώντας ροή εξόδου. Βελτιώστε την ενσωμάτωση και την προσβασιμότητα του ιστού σας. -### [Μετατροπή PDF σε HTML σε .NET χρησιμοποιώντας το Aspose.PDF χωρίς αποθήκευση εικόνων](./convert-pdf-html-net-asposepdf-no-images/) +### [Μετροπή PDF σε HTML σε .NET χρησιμοποιώντας το Aspose.PDF χωρίς αποθήκευση εικόνων](./convert-pdf-html-net-asposepdf-no-images/) Μάθετε πώς να μετατρέπετε αρχεία PDF σε HTML χρησιμοποιώντας το Aspose.PDF για .NET χωρίς να αποθηκεύετε ξεχωριστά εικόνες. Διατηρήστε την ακεραιότητα της διάταξης με τον λεπτομερή οδηγό μας. -### [Μετατροπή PDF σε HTML σε .NET με προσαρμοσμένες διαδρομές εικόνας χρησιμοποιώντας το Aspose.PDF](./convert-pdf-html-custom-image-paths-dotnet/) +### [Μετροπή PDF σε HTML σε .NET με προσαρμοσμένες διαδρομές εικόνας χρησιμοποιώντας το Aspose.PDF](./convert-pdf-html-custom-image-paths-dotnet/) Μάθετε πώς να μετατρέπετε αρχεία PDF σε μορφή HTML χρησιμοποιώντας το Aspose.PDF για .NET και να προσαρμόζετε αποτελεσματικά τις διαδρομές εικόνας. Ιδανικό για ενσωμάτωση στο web. -### [Μετατροπή PDF σε HTML με το Aspose.PDF για .NET: Διατήρηση γραμματοσειρών σε μορφές TTF και WOFF](./convert-pdf-html-aspose-net-truetype-woff/) +### [Μετροπή PDF σε HTML με το Aspose.PDF για .NET: Διατήρηση γραμματοσειρών σε μορφές TTF και WOFF](./convert-pdf-html-aspose-net-truetype-woff/) Μάθετε πώς να μετατρέπετε PDF σε HTML χρησιμοποιώντας το Aspose.PDF για .NET, διατηρώντας παράλληλα τις γραμματοσειρές σε TrueType (TTF) και Web Open Font Format (WOFF). Οδηγός βήμα προς βήμα με παραδείγματα κώδικα. -### [Μετατροπή PDF σε HTML με προσαρμοσμένες διαστάσεις χρησιμοποιώντας το Aspose.PDF](./convert-pdf-html-custom-dimensions-asposepdf-net/) +### [Μετροπή PDF σε HTML με προσαρμοσμένες διαστάσεις χρησιμοποιώντας το Aspose.PDF](./convert-pdf-html-custom-dimensions-asposepdf-net/) Ένα σεμινάριο κώδικα για το Aspose.PDF Net -### [Μετατροπή PDF σε HTML με προσαρμοσμένες διευθύνσεις URL εικόνων χρησιμοποιώντας το Aspose.PDF .NET: Ένας πλήρης οδηγός](./convert-pdf-html-custom-image-urls-aspose-pdf-net/) +### [Μετροπή PDF σε HTML με προσαρμοσμένες διευθύνσεις URL εικόνων χρησιμοποιώντας το Aspose.PDF .NET: Ένας πλήρης οδηγός](./convert-pdf-html-custom-image-urls-aspose-pdf-net/) Μάθετε πώς να μετατρέπετε έγγραφα PDF σε μορφή HTML χρησιμοποιώντας το Aspose.PDF για .NET, συμπεριλαμβανομένης της προσαρμογής των URL εικόνων και της εφαρμογής μιας προσαρμοσμένης στρατηγικής εξοικονόμησης πόρων. -### [Μετατροπή PDF σε PNG με το Aspose.PDF .NET: Βελτιώστε τις υποδείξεις γραμματοσειράς για ευκρινή απόδοση κειμένου](./convert-pdf-png-aspose-net-font-hinting/) +### [Μετροπή PDF σε PNG με το Aspose.PDF .NET: Βελτιώστε τις υποδείξεις γραμματοσειράς για ευκρινή απόδοση κειμένου](./convert-pdf-png-aspose-net-font-hinting/) Μάθετε πώς να μετατρέπετε έγγραφα PDF σε εικόνες PNG υψηλής ποιότητας χρησιμοποιώντας το Aspose.PDF .NET, εξασφαλίζοντας ευκρινή απόδοση κειμένου μέσω υποδείξεων γραμματοσειράς. -### [Μετατροπή PDF σε PPTX με το Aspose.PDF για .NET: Οδηγός βήμα προς βήμα](./convert-pdf-to-pptx-aspose-dotnet-guide/) +### [Μετροπή PDF σε PPTX με το Aspose.PDF για .NET: Οδηγός βήμα προς βήμα](./convert-pdf-to-pptx-aspose-dotnet-guide/) Μάθετε πώς να μετατρέπετε αποτελεσματικά έγγραφα PDF σε παρουσιάσεις PowerPoint χρησιμοποιώντας το Aspose.PDF για .NET. Αυτός ο οδηγός βήμα προς βήμα καλύπτει τη βασική μετατροπή, προηγμένες λειτουργίες όπως διαφάνειες εικόνων και την παρακολούθηση προόδου. -### [Μετατροπή PDF σε SVG με το Aspose.PDF για .NET: Οδηγός βήμα προς βήμα](./aspose-pdf-net-pdf-to-svg-conversion/) +### [Μετροπή PDF σε SVG με το Aspose.PDF για .NET: Οδηγός βήμα προς βήμα](./aspose-pdf-net-pdf-to-svg-conversion/) Μάθετε πώς να μετατρέπετε PDF σε SVG χρησιμοποιώντας το Aspose.PDF για .NET. Αυτός ο ολοκληρωμένος οδηγός καλύπτει τη ρύθμιση, τα βήματα μετατροπής και συμβουλές βελτιστοποίησης. -### [Μετατροπή PDF σε TIFF χρησιμοποιώντας το Aspose.PDF .NET: Ένας πλήρης οδηγός](./convert-pdf-page-to-tiff-aspose-net/) +### [Μετροπή PDF σε TIFF χρησιμοποιώντας το Aspose.PDF .NET: Ένας πλήρης οδηγός](./convert-pdf-page-to-tiff-aspose-net/) Μάθετε πώς να μετατρέπετε σελίδες PDF σε εικόνες TIFF υψηλής ποιότητας χρησιμοποιώντας το Aspose.PDF για .NET με αυτό το βήμα προς βήμα εκπαιδευτικό βίντεο. -### [Μετατροπή PDF σε TeX χρησιμοποιώντας το Aspose.PDF για .NET: Ένας πλήρης οδηγός](./convert-pdf-to-tex-aspose-dotnet/) +### [Μετροπή PDF σε TeX χρησιμοποιώντας το Aspose.PDF για .NET: Ένας πλήρης οδηγός](./convert-pdf-to-tex-aspose-dotnet/) Μάθετε πώς να μετατρέπετε σύνθετα έγγραφα PDF σε επεξεργάσιμη μορφή TeX χρησιμοποιώντας το Aspose.PDF για .NET. Αυτός ο οδηγός καλύπτει την εγκατάσταση, τα βήματα μετατροπής και τη βελτιστοποίηση της απόδοσης. -### [Μετατροπή PDF σε Word χρησιμοποιώντας το Aspose.PDF .NET: Ένας πλήρης οδηγός](./convert-pdf-word-aspose-net/) +### [Μετροπή PDF σε Word χρησιμοποιώντας το Aspose.PDF .NET: Ένας πλήρης οδηγός](./convert-pdf-word-aspose-net/) Μάθετε πώς να μετατρέπετε απρόσκοπτα αρχεία PDF σε μορφές DOC και DOCX χρησιμοποιώντας το Aspose.PDF για .NET. Κατακτήστε τις προηγμένες τεχνικές μετατροπής με τον αναλυτικό οδηγό μας. -### [Μετατροπή PDF σε XML χρησιμοποιώντας το Aspose.PDF για .NET: Οδηγός βήμα προς βήμα](./convert-pdf-to-xml-aspose-pdf-net/) +### [Μετροπή PDF σε XML χρησιμοποιώντας το Aspose.PDF για .NET: Οδηγός βήμα προς βήμα](./convert-pdf-to-xml-aspose-pdf-net/) Μάθετε πώς να μετατρέπετε αρχεία PDF σε μορφή XML με το Aspose.PDF για .NET. Βελτιώστε τις δυνατότητες ενοποίησης και επεξεργασίας δεδομένων. -### [Μετατροπή PDF/A σε τυπικό PDF χρησιμοποιώντας το Aspose.PDF .NET: Ένας πλήρης οδηγός](./convert-pdf-a-standard-pdf-aspose-net/) +### [Μετροπή PDF/A σε τυπικό PDF χρησιμοποιώντας το Aspose.PDF .NET: Ένας πλήρης οδηγός](./convert-pdf-a-standard-pdf-aspose-net/) Μάθετε πώς να μετατρέπετε απρόσκοπτα έγγραφα PDF/A σε τυπικά PDF χρησιμοποιώντας το Aspose.PDF για .NET με αυτόν τον οδηγό βήμα προς βήμα. -### [Μετατροπή PDF σε διαδραστική HTML με προσαρμοσμένο CSS χρησιμοποιώντας το Aspose.PDF .NET](./convert-pdfs-to-html-custom-css-aspose-pdf-net/) +### [Μετροπή PDF σε διαδραστική HTML με προσαρμοσμένο CSS χρησιμοποιώντας το Aspose.PDF .NET](./convert-pdfs-to-html-custom-css-aspose-pdf-net/) Μάθετε πώς να μετατρέπετε έγγραφα PDF σε διαδραστικές, φιλικές προς το web μορφές HTML χρησιμοποιώντας το Aspose.PDF .NET, με προσαρμοσμένο στυλ CSS. -### [Μετατροπή PS σε PDF σε C# χρησιμοποιώντας Aspose.PDF .NET: Οδηγός βήμα προς βήμα](./convert-ps-to-pdf-aspose-dotnet-csharp/) +### [Μετροπή PS σε PDF σε C# χρησιμοποιώντας Aspose.PDF .NET: Οδηγός βήμα προς βήμα](./convert-ps-to-pdf-aspose-dotnet-csharp/) Μάθετε πώς να μετατρέπετε αποτελεσματικά αρχεία PostScript σε PDF μέσα στις εφαρμογές .NET σας χρησιμοποιώντας το Aspose.PDF. Ακολουθήστε αυτόν τον ολοκληρωμένο οδηγό με παραδείγματα κώδικα. -### [Μετατροπή αρχείων PDF RGB σε κλίμακα του γκρι χρησιμοποιώντας το Aspose.PDF για .NET | Πλήρης οδηγός](./convert-rgb-pdfs-to-grayscale-aspose-pdf-net/) +### [Μετροπή αρχείων PDF RGB σε κλίμακα του γκρι χρησιμοποιώντας το Aspose.PDF για .NET | Πλήρης οδηγός](./convert-rgb-pdfs-to-grayscale-aspose-pdf-net/) Μάθετε πώς να μετατρέπετε αποτελεσματικά αρχεία PDF RGB σε κλίμακα του γκρι με το Aspose.PDF για .NET. Αυτός ο οδηγός βήμα προς βήμα διασφαλίζει τη συνέπεια του σχεδιασμού και τη μείωση του μεγέθους του αρχείου. -### [Μετατροπή TeX σε PDF χρησιμοποιώντας το Aspose.PDF για .NET: Οδηγός βήμα προς βήμα](./convert-tex-to-pdf-aspose-dotnet-guide/) -Μάθετε πώς να μετατρέπετε απρόσκοπτα αρχεία TeX σε PDF χρησιμοποιώντας το Aspose.PDF για .NET με αυτόν τον λεπτομερή οδηγό. Ανακαλύψτε συμβουλές και βέλτιστες πρακτικές για αποτελεσματική μετατροπή. +### [Μετροπή TeX σε PDF χρησιμοποιώντας το Aspose.PDF για .NET: Οδηγός βήμα προς βήμα](./convert-tex-to-pdf-aspose-dotnet-guide/) +Μάθετε πώς να μετατρέπετε απρόσκοπτα αρχεία TeX σε PDF χρησιμοποιώντας το Aspose.PDF για .NET με αυτόν τον λεπτομερής οδηγό. Ανακαλύψτε συμβουλές και βέλτιστες πρακτικές για αποτελεσματική μετατροπή. -### [Μετατροπή αρχείων κειμένου σε PDF χρησιμοποιώντας το Aspose.PDF για .NET: Οδηγός βήμα προς βήμα](./convert-text-files-to-pdf-aspose-dotnet/) +### [Μετροπή αρχείων κειμένου σε PDF χρησιμοποιώντας το Aspose.PDF για .NET: Οδηγός βήμα προς βήμα](./convert-text-files-to-pdf-aspose-dotnet/) Μάθετε πώς να μετατρέπετε απρόσκοπτα αρχεία κειμένου σε επαγγελματικά έγγραφα PDF χρησιμοποιώντας το Aspose.PDF για .NET. Ακολουθήστε αυτόν τον αναλυτικό οδηγό με παραδείγματα κώδικα και συμβουλές βελτιστοποίησης. -### [Μετατροπή XML σε PDF σε C# χρησιμοποιώντας το Aspose.PDF: Ένας πλήρης οδηγός για προγραμματιστές .NET](./convert-xml-to-pdf-csharp-aspose-pdf-guide/) +### [Μετροπή XML σε PDF σε C# χρησιμοποιώντας το Aspose.PDF: Ένας πλήρης οδηγός για προγραμματιστές .NET](./convert-xml-to-pdf-csharp-aspose-pdf-guide/) Μάθετε πώς να μετατρέπετε αποτελεσματικά αρχεία XML σε επαγγελματικά PDF χρησιμοποιώντας το Aspose.PDF και το C#. Ακολουθήστε αυτόν τον οδηγό βήμα προς βήμα, ειδικά σχεδιασμένο για προγραμματιστές .NET. -### [Μετατροπή XML σε PDF με το Aspose.PDF για .NET: Οδηγός βήμα προς βήμα](./convert-xml-pdf-aspose-dotnet/) +### [Μετροπή XML σε PDF με το Aspose.PDF για .NET: Οδηγός βήμα προς βήμα](./convert-xml-pdf-aspose-dotnet/) Μάθετε πώς να μετατρέψετε τα δεδομένα XML σας σε PDF με στυλ χρησιμοποιώντας Aspose.PDF και XSLT σε .NET. Αυτός ο οδηγός καλύπτει την εγκατάσταση, τα βήματα μετατροπής και τις εφαρμογές του πραγματικού κόσμου. -### [Μετατροπή XML σε PDF με δυναμικές εικόνες χρησιμοποιώντας το Aspose.PDF για .NET](./convert-xml-to-pdf-dynamic-images-aspose-net/) +### [Μετροπή XML σε PDF με δυναμικές εικόνες χρησιμοποιώντας το Aspose.PDF για .NET](./convert-xml-to-pdf-dynamic-images-aspose-net/) Μάθετε πώς να μετατρέπετε δεδομένα XML σε ένα έγγραφο PDF επαγγελματικής εμφάνισης χρησιμοποιώντας το Aspose.PDF για .NET, συμπεριλαμβανομένης της δυναμικής εισαγωγής εικόνας. -### [Μετατροπή XPS σε PDF χρησιμοποιώντας το Aspose.PDF .NET: Οδηγός βήμα προς βήμα](./convert-xps-to-pdf-aspose-net/) +### [Μετροπή XPS σε PDF χρησιμοποιώντας το Aspose.PDF .NET: Οδηγός βήμα προς βήμα](./convert-xps-to-pdf-aspose-net/) Μάθετε πώς να μετατρέψετε αρχεία XPS σε PDF με το Aspose.PDF για .NET. Αυτός ο οδηγός βήμα προς βήμα καλύπτει την εγκατάσταση, τη διαδικασία μετατροπής και συμβουλές αντιμετώπισης προβλημάτων. -### [Μετατροπή και σχολιασμός PDF με το Aspose.PDF για .NET: Ένας πλήρης οδηγός](./convert-annotate-pdfs-aspose-pdf-net-guide/) +### [Μετροπή και σχολιασμός PDF με το Aspose.PDF για .NET: Ένας πλήρης οδηγός](./convert-annotate-pdfs-aspose-pdf-net-guide/) Μάθετε πώς να μετατρέπετε PDF σε εικόνες και να επισημαίνετε κείμενο χρησιμοποιώντας το Aspose.PDF για .NET. Αυτός ο οδηγός καλύπτει την εγκατάσταση, παραδείγματα κώδικα και βέλτιστες πρακτικές. ### [Περικοπή σελίδας PDF και μετατροπή σε εικόνα χρησιμοποιώντας το Aspose.PDF για .NET](./crop-pdf-page-convert-image-aspose-dotnet/) @@ -159,7 +159,7 @@ Master Aspose.PDF για .NET για απρόσκοπτη μετατροπή δ Μάθετε πώς να μετατρέπετε εικόνες μετααρχείων γραφικών υπολογιστή (CGM) σε μορφή PDF χρησιμοποιώντας το Aspose.PDF για .NET. Αυτός ο οδηγός καλύπτει τη ρύθμιση, τα βήματα μετατροπής και συμβουλές αντιμετώπισης προβλημάτων. ### [Πώς να μετατρέψετε EPUB σε PDF χρησιμοποιώντας το Aspose.PDF .NET: Οδηγός βήμα προς βήμα](./convert-epub-pdf-aspose-pdf-net-guide/) -Μάθετε πώς να μετατρέπετε αρχεία EPUB σε PDF χρησιμοποιώντας το Aspose.PDF για .NET με αυτόν τον λεπτομερή οδηγό. Ιδανικό για προγραμματιστές που χρειάζονται απρόσκοπτη μετατροπή εγγράφων. +Μάθετε πώς να μετατρέπετε αρχεία EPUB σε PDF χρησιμοποιώντας το Aspose.PDF για .NET με αυτόν τον λεπτομερές οδηγό. Ιδανικό για προγραμματιστές που χρειάζονται απρόσκοπτη μετατροπή εγγράφων. ### [Πώς να μετατρέψετε HTML σε PDF με το Aspose.PDF .NET: Ένας πλήρης οδηγός](./convert-html-pdf-aspose-dotnet-guide/) Μάθετε πώς να μετατρέπετε αποτελεσματικά έγγραφα HTML σε PDF επαγγελματικής εμφάνισης χρησιμοποιώντας το Aspose.PDF .NET. Ανακαλύψτε τεχνικές για τον χειρισμό εξωτερικών πόρων και την απόδοση σύνθετου περιεχομένου. @@ -183,16 +183,16 @@ Master Aspose.PDF για .NET για απρόσκοπτη μετατροπή δ Μάθετε πώς να μετατρέψετε ένα έγγραφο PDF σε δυαδική εικόνα TIFF χρησιμοποιώντας το Aspose.PDF για .NET. Αυτό το σεμινάριο καλύπτει την εγκατάσταση, τη διαμόρφωση και τις πρακτικές εφαρμογές. ### [Πώς να μετατρέψετε PDF σε EPUB με το Aspose.PDF για .NET: Οδηγός προγραμματιστή](./convert-pdf-to-epub-aspose-dotnet/) -Μάθετε πώς να μετατρέπετε αρχεία PDF σε μορφή EPUB χρησιμοποιώντας το Aspose.PDF για .NET. Ακολουθήστε αυτόν τον αναλυτικό οδηγό για να βελτιώσετε την ψηφιακή δημοσίευση και την προσβασιμότητα περιεχομένου. +Μάθετε πώς να μετατρέψετε αρχεία PDF σε μορφή EPUB χρησιμοποιώντας το Aspose.PDF για .NET. Ακολουθήστε αυτόν τον αναλυτικό οδηγό για να βελτιώσετε την ψηφιακή δημοσίευση και την προσβασιμότητα περιεχομένου. ### [Πώς να μετατρέψετε PDF σε TIFF πολλαπλών σελίδων χρησιμοποιώντας το Aspose.PDF .NET - Οδηγός βήμα προς βήμα](./convert-pdf-to-multi-page-tiff-aspose-dotnet/) -Μάθετε πώς να μετατρέπετε αρχεία PDF σε εικόνες TIFF πολλαπλών σελίδων υψηλής ποιότητας χρησιμοποιώντας το Aspose.PDF για .NET. Ακολουθήστε αυτόν τον οδηγό βήμα προς βήμα για εύκολη εφαρμογή σε C#. +Μάθετε πώς να μετατρέψετε αρχεία PDF σε εικόνες TIFF πολλαπλών σελίδων υψηλής ποιότητας χρησιμοποιώντας το Aspose.PDF για .NET. Ακολουθήστε αυτόν τον οδηγό βήμα προς βήμα για εύκολη εφαρμογή σε C#. ### [Πώς να μετατρέψετε PDF σε PostScript σε C# χρησιμοποιώντας το Aspose.PDF: Ένας πλήρης οδηγός](./convert-pdf-to-postscript-aspose-csharp/) -Μάθετε πώς να μετατρέπετε αρχεία PDF σε μορφή PostScript χρησιμοποιώντας το Aspose.PDF για .NET με αυτόν τον οδηγό βήμα προς βήμα. Ιδανικό για ανάγκες εκτύπωσης υψηλής ποιότητας. +Μάθετε πώς να μετατρέψετε αρχεία PDF σε μορφή PostScript χρησιμοποιώντας το Aspose.PDF για .NET με αυτόν τον οδηγό βήμα προς βήμα. Ιδανικό για ανάγκες εκτύπωσης υψηλής ποιότητας. ### [Πώς να μετατρέψετε PDF σε TIFF χρησιμοποιώντας το Aspose.PDF για .NET: Οδηγός βήμα προς βήμα](./convert-pdf-to-tiff-aspose-net/) -Μάθετε πώς να μετατρέπετε αρχεία PDF σε εικόνες TIFF υψηλής ποιότητας χρησιμοποιώντας το Aspose.PDF για .NET. Ακολουθήστε τον αναλυτικό οδηγό μας με παραδείγματα κώδικα και συμβουλές διαμόρφωσης. +Μάθετε πώς να μετατρέψετε αρχεία PDF σε εικόνες TIFF υψηλής ποιότητας χρησιμοποιώντας το Aspose.PDF για .NET. Ακολουθήστε τον αναλυτικό οδηγό μας με παραδείγματα κώδικα και συμβουλές διαμόρφωσης. ### [Πώς να μετατρέψετε PDF σε XML χρησιμοποιώντας το Aspose.PDF για .NET: Οδηγός βήμα προς βήμα](./pdf-to-xml-conversion-aspose-pdf-net/) Κατακτήστε την τέχνη της μετατροπής εγγράφων PDF σε XML με το Aspose.PDF για .NET. Ακολουθήστε αυτόν τον ολοκληρωμένο οδηγό και βελτιώστε τη διαχείριση εγγράφων σας. @@ -224,16 +224,11 @@ Master Aspose.PDF για .NET για απρόσκοπτη μετατροπή δ ### [Μετατροπή PDF σε HTML με το Aspose.PDF για .NET](./pdf-to-html-conversion-aspose-dot-net/) Ένα σεμινάριο κώδικα για το Aspose.PDF Net -### [Μετατροπή PDF σε TIFF σε .NET χρησιμοποιώντας το Aspose.PDF: Οδηγός βήμα προς βήμα](./pdf-to-tiff-conversion-aspose-pdf-net/) -Μάθετε πώς να μετατρέπετε έγγραφα PDF σε εικόνες TIFF χρησιμοποιώντας το Aspose.PDF για .NET. Κατακτήστε τα προσαρμοσμένα βάθη χρωμάτων και τις προηγμένες τεχνικές επεξεργασίας εικόνας. +### [Αποθήκευση PDF ως HTML με το Aspose – Πλήρης οδηγός C#](./save-pdf-as-html-with-aspose-complete-c-guide/) +Μάθετε πώς να αποθηκεύετε PDF ως HTML με το Aspose, ακολουθώντας έναν ολοκληρωμένο οδηγό C#. -## Πρόσθετοι Πόροι - -- [Aspose.PDF για τεκμηρίωση δικτύου](https://docs.aspose.com/pdf/net/) -- [Aspose.PDF για αναφορά Net API](https://reference.aspose.com/pdf/net/) -- [Λήψη Aspose.PDF για το Διαδίκτυο](https://releases.aspose.com/pdf/net/) -- [Δωρεάν Υποστήριξη](https://forum.aspose.com/) -- [Προσωρινή Άδεια](https://purchase.aspose.com/temporary-license/) +### [Αποθήκευση PDF ως HTML με C# – Πλήρης οδηγός βήμα προς βήμα](./save-pdf-as-html-with-c-complete-step-by-step-guide/) +Μάθετε πώς να αποθηκεύσετε αρχεία PDF ως HTML χρησιμοποιώντας C# με αναλυτικές οδηγίες βήμα προς βήμα. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/greek/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/greek/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..1b81d36e1 --- /dev/null +++ b/pdf/greek/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-03-29 +description: Μετατροπή PDF σε PDF/X‑1a και εξαγωγή σελίδας PDF ως PNG σε μία ροή – + επίσης μάθετε πώς να προσθέτετε σφραγίδα κειμένου σε PDF χρησιμοποιώντας το Aspose.Pdf + (C#). +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: el +og_description: μετατροπή pdf σε pdf/x-1a και εξαγωγή σελίδας pdf ως png ενώ προστίθεται + σφραγίδα κειμένου pdf – πλήρης οδηγός C# με Aspose.Pdf. +og_title: Μετατροπή PDF σε PDF/X-1a, εξαγωγή σελίδας PNG & προσθήκη κειμενικής σφραγίδας +tags: +- Aspose.Pdf +- C# +- PDF processing +title: μετατροπή pdf σε pdf/x-1a, εξαγωγή σελίδας png & προσθήκη κειμενικής σφραγίδας +url: /el/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Μετατροπή pdf σε pdf/x-1a, εξαγωγή σελίδας png & προσθήκη σήματος κειμένου – Πλήρης Οδηγός C# + +Έχετε ποτέ χρειαστεί να **μετατρέψετε pdf σε pdf/x-1a** αλλά επίσης θέλετε μια γρήγορη προεπισκόπηση PNG της πρώτης σελίδας και ένα προσαρμοσμένο σήμα κειμένου στο ίδιο έγγραφο; Δεν είστε μόνοι. Σε πολλές παραγωγικές αλυσίδες—σκεφτείτε προετοιμασία για εκτύπωση ή αυτόματη δημιουργία αναφορών—συχνά θα αντιμετωπίσετε αυτόν ακριβώς τον συνδυασμό απαιτήσεων. + +Σε αυτό το tutorial θα περάσουμε από μια ενιαία, συνεκτική ροή εργασίας που κάνει τρία πράγματα διαδοχικά: **μετατροπή pdf σε pdf/x-1a**, **εξαγωγή σελίδας pdf png**, και **προσθήκη σήματος κειμένου pdf**. Ο κώδικας χρησιμοποιεί τη βιβλιοθήκη Aspose.Pdf για .NET, ώστε να έχετε μια επαγγελματική λύση χωρίς να ασχοληθείτε με τα χαμηλού επιπέδου εσωτερικά του PDF. Στο τέλος θα έχετε ένα εκτελέσιμο πρόγραμμα C# που μπορείτε να ενσωματώσετε σε οποιαδήποτε εφαρμογή κονσόλας, Azure Function ή βήμα CI. + +> **Τι θα πάρετε** – ένα πλήρες αρχείο πηγαίου κώδικα, εξηγήσεις βήμα‑βήμα, συμβουλές για κοινά προβλήματα και έναν γρήγορο τρόπο επαλήθευσης του αποτελέσματος. + +## Προαπαιτούμενα + +- .NET 6.0 ή νεότερο (το API λειτουργεί επίσης με .NET Framework 4.x). +- Πακέτο NuGet Aspose.Pdf for .NET (`Aspose.Pdf`) – η έκδοση 23.10 είναι η τρέχουσα τη στιγμή της συγγραφής. +- Ένα αρχείο PDF εισόδου (`input.pdf`) και ένα αρχείο προφίλ ICC (`Coated_Fogra39L_VIGC_300.icc`) τοποθετημένα σε φάκελο που ελέγχετε. +- Βασική εξοικείωση με C# και Visual Studio (ή το αγαπημένο σας IDE). + +Αν κάποιο από αυτά σας φαίνεται άγνωστο, απλώς εγκαταστήστε το πακέτο NuGet με: + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +Τώρα ας βουτήξουμε. + +## Step 1: Load the source PDF document + +Το πρώτο που κάνουμε είναι να ανοίξουμε το PDF στο οποίο θέλουμε να εργαστούμε. Η κλάση `Document` του Aspose.Pdf αντιπροσωπεύει ολόκληρο το αρχείο και φορτώνει το περιεχόμενο αργά, ώστε να μην πληρώσετε ποινή απόδοσης μέχρι να αγγίξετε πραγματικά τις σελίδες. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*Γιατί είναι σημαντικό*: Η έγκαιρη φόρτωση του εγγράφου μας δίνει ένα μοναδικό αντικείμενο για μετατροπή, απόδοση και σήμανση. Αν παραλείψετε τη ρητή φόρτωση και προσπαθήσετε να εργαστείτε σε ένα ανύπαρκτο αρχείο, θα λάβετε ένα ασαφές `FileNotFoundException` αργότερα. + +## Step 2: Convert the document to PDF/X‑1a using a custom ICC profile + +Το PDF/X‑1a είναι το de‑facto πρότυπο για έγγραφα έτοιμα για εκτύπωση. Το βήμα μετατροπής σας επιτρέπει επίσης να ενσωματώσετε ένα **Output Intent** (το προφίλ ICC) ώστε τα downstream RIP να γνωρίζουν ακριβώς πώς πρέπει να ερμηνευτούν τα χρώματα. + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*Pro tip*: Αν χρειάζεστε πιο αυστηρό χειρισμό σφαλμάτων, αντικαταστήστε το `ConvertErrorAction.Delete` με `ConvertErrorAction.Throw`. Με αυτόν τον τρόπο η μετατροπή θα διακόπτεται στο πρώτο ζήτημα συμμόρφωσης, κάτι χρήσιμο για αυτοματοποιημένες γραμμές QA. + +## Step 3: Export the first page as a PNG while analyzing fonts + +Μια προεπισκόπηση PNG συχνά απαιτείται για γρήγορους οπτικούς ελέγχους ή δημιουργία μικρογραφιών. Ενεργοποιώντας το `AnalyzeFonts`, το Aspose διασφαλίζει ότι τυχόν ενσωματωμένες γραμματοσειρές rasterize σωστά, αποφεύγοντας εκπλήξεις με ελλείποντα glyphs. + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +Μετά την εκτέλεση θα βρείτε το `page1.png` δίπλα στα αρχεία πηγής. Ανοίξτε το σε οποιονδήποτε προβολέα εικόνων για να επιβεβαιώσετε ότι η μετατροπή φαίνεται σωστή. + +## Step 4: Add a text stamp that automatically adjusts its font size + +Ένα **text stamp** είναι ένας βολικός τρόπος να προσθέσετε υδατογράφημα ή σημείωση σε PDF χωρίς να τροποποιήσετε τα υποκείμενα streams περιεχομένου. Ορίζοντας `AutoAdjustFontSizeToFitStampRectangle` η βιβλιοθήκη θα μειώσει ή θα αυξήσει το κείμενο ώστε να μην υπερβαίνει ποτέ το ορθογώνιο που ορίζετε. + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*Γιατί αυτόματο μέγεθος;* Αν αργότερα αλλάξετε το κείμενο του σήματος σε κάτι πιο μακρύ (π.χ. δυναμική χρονική σήμανση), δεν θα χρειαστεί να υπολογίσετε ξανά τα μεγέθη γραμματοσειράς—το σήμα προσαρμόζεται αυτόματα. + +## Step 5: Save the updated PDF document + +Τέλος, γράψτε όλα τα δεδομένα πίσω στο δίσκο. Μπορείτε είτε να αντικαταστήσετε το αρχικό αρχείο είτε να δημιουργήσετε ένα ολοκαίνουργιο· το παρακάτω παράδειγμα δημιουργεί το `output.pdf`. + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +Όταν ολοκληρωθεί η αποθήκευση, έχετε: + +1. Ένα **συμμορφωμένο PDF/X‑1a** αρχείο (`output.pdf`). +2. Μια **προεπισκόπηση PNG** της πρώτης σελίδας (`page1.png`). +3. Ένα **σήμα κειμένου** που ταιριάζει τέλεια μέσα στο ορθογώνιο του. + +### Λίστα γρήγορης επαλήθευσης + +| ✅ Έλεγχος | Πώς να επαληθεύσετε | +|-----------|----------------------| +| Συμμόρφωση PDF/X‑1a | Ανοίξτε το `output.pdf` στο Adobe Acrobat → *Print Production* → *Preflight* και επιλέξτε “PDF/X‑1a:2001”. | +| Το PNG φαίνεται σωστό | Ανοίξτε το `page1.png` στο Windows Photo Viewer ή σε οποιονδήποτε επεξεργαστή εικόνας. | +| Εμφανίζεται το σήμα | Περιηγηθείτε στο `output.pdf` – το κείμενο “Auto‑size” πρέπει να είναι κεντραρισμένο στη σελίδα 1. | + +![προεπισκόπηση μετατροπής pdf σε pdf/x-1a](image.png "προεπισκόπηση μετατροπής pdf σε pdf/x-1a που δείχνει τη σελίδα με σήμα") + +*Κείμενο alt εικόνας*: **προεπισκόπηση μετατροπής pdf σε pdf/x-1a με σήμα κειμένου αυτόματου μεγέθους** – δείχνει το τελικό PDF μετά από όλα τα βήματα. + +## Common Variations & Edge Cases + +- **Πολλαπλές σελίδες** – Αν χρειάζεται να σήμανετε κάθε σελίδα, κάντε βρόχο πάνω στο `pdfDoc.Pages` και καλέστε `AddStamp` μέσα στον βρόχο. +- **Διαφορετική μορφή εξόδου** – Αλλάξτε το `PdfFormat.PDF_X_1A` σε `PdfFormat.PDF_A_1B` για αρχειοθετημένα PDFs. +- **PNG υψηλότερης ανάλυσης** – Ορίστε `Resolution = 600` στις `RenderingOptions` για μικρογραφίες εκτύπωσης. +- **Προσαρμοσμένη γραμματοσειρά για το σήμα** – Αναθέστε `autoSizeStamp.Font = FontRepository.FindFont("Arial")` πριν προσθέσετε το σήμα. +- **Χειρισμός σφαλμάτων** – Τυλίξτε κάθε κύριο βήμα σε `try/catch` και καταγράψτε `ConversionException` ή `FileNotFoundException` για ευκολότερη αποσφαλμάτωση. + +## Full Working Example (Copy‑Paste Ready) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Setup paths + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Load the source document + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Convert to PDF/X‑1a (print‑ready) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Export first page as PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Add auto‑sizing text stamp (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/greek/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..0a7e6cd7c --- /dev/null +++ b/pdf/greek/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,270 @@ +--- +category: general +date: 2026-03-29 +description: Αποθήκευση PDF ως HTML χρησιμοποιώντας το Aspose.PDF σε C#. Μάθετε πώς + να μετατρέπετε PDF σε HTML, να παραλείπετε τις εικόνες και να επαληθεύετε την υπογραφή + PDF σε ένα ενιαίο σεμινάριο. +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: el +og_description: Αποθήκευση PDF ως HTML με το Aspose.PDF σε C#. Αυτός ο οδηγός δείχνει + πώς να μετατρέψετε PDF σε HTML, να παραλείψετε τις εικόνες και να επικυρώσετε την + ψηφιακή υπογραφή του PDF. +og_title: Αποθήκευση PDF ως HTML με το Aspose – Πλήρης Οδηγός C# +tags: +- Aspose.PDF +- C# +- PDF processing +title: Αποθήκευση PDF ως HTML με το Aspose – Πλήρης Οδηγός C# +url: /el/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Αποθήκευση PDF ως HTML με Aspose – Πλήρης Οδηγός C# + +Έχετε αναρωτηθεί ποτέ πώς να **αποθηκεύσετε PDF ως HTML** χωρίς να ενσωματώνονται όλες οι εικόνες; Ίσως δημιουργείτε μια ελαφριά προεπισκόπηση στο web και το επιπλέον βάρος των εικόνων μειώνει την ταχύτητα της σελίδας. Τα καλά νέα είναι ότι δεν χρειάζεται να γράψετε έναν προσαρμοσμένο parser—το Aspose.PDF κάνει τη σκληρή δουλειά για εσάς. Σε αυτό το tutorial θα **μετατρέψουμε PDF σε HTML**, θα αφαιρέσουμε τις εικόνες και στη συνέχεια θα **επαληθεύσουμε την υπογραφή PDF** για να βεβαιωθούμε ότι το έγγραφο δεν έχει παραποιηθεί. + +Θα περάσουμε από κάθε γραμμή κώδικα, θα εξηγήσουμε *γιατί* κάθε ρύθμιση είναι σημαντική, και θα αγγίξουμε σενάρια όπως μεγάλα PDF ή ελλιπείς υπογραφές. Στο τέλος θα έχετε μια έτοιμη για εκτέλεση εφαρμογή C# console που παράγει ένα καθαρό αρχείο HTML και σας δίνει ένα σαφές αποτέλεσμα true/false για την ψηφιακή υπογραφή. + +## Τι Θα Μάθετε + +- Φόρτωση αρχείου PDF με Aspose.PDF. +- Χρήση του `HtmlSaveOptions` για **μετατροπή PDF σε HTML** χωρίς εικόνες. +- Αποθήκευση του παραγόμενου HTML στο δίσκο. +- Ρύθμιση ενός αντικειμένου `PdfFileSignature` για **επαλήθευση υπογραφής PDF**. +- Ερμηνεία του boolean αποτελέσματος και αντιμετώπιση κοινών προβλημάτων. +- Επιπλέον συμβουλές για απόδοση και troubleshooting. + +### Προαπαιτήσεις + +- .NET 6.0 ή νεότερο (ο κώδικας λειτουργεί επίσης σε .NET Framework 4.7+). +- Πακέτο NuGet Aspose.PDF for .NET (έκδοση 23.12 ή νεότερη). +- Ένα υπογεγραμμένο PDF (`input.pdf`) που περιέχει υπογραφή με όνομα “Sig1”. +- Βασική εξοικείωση με C# και εφαρμογές console. + +> **Pro tip:** Αν δεν έχετε εγκαταστήσει ακόμη το πακέτο Aspose.PDF, τρέξτε `dotnet add package Aspose.PDF` από το φάκελο του project σας. + +--- + +## Βήμα 1: Φόρτωση του Πηγαίου Εγγράφου PDF + +Πριν κάνουμε οτιδήποτε, χρειαζόμαστε μια αναπαράσταση του PDF στη μνήμη. Η κλάση `Document` του Aspose.PDF διαβάζει το αρχείο και δημιουργεί ένα δέντρο σελίδων, πόρων και σχολίων. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**Γιατί είναι σημαντικό:** Η φόρτωση του εγγράφου μία φορά κρατά τη χρήση μνήμης προβλέψιμη. Αν σκοπεύετε να επεξεργαστείτε πολλά PDF σε βρόχο, σκεφτείτε να επαναχρησιμοποιήσετε το ίδιο αντικείμενο `Document` μετά το `pdfDocument.Dispose()`. + +--- + +## Βήμα 2: Διαμόρφωση Επιλογών Αποθήκευσης HTML – Παράλειψη Εικόνων + +Θέλουμε να **αποθηκεύσουμε PDF ως HTML** αλλά χωρίς τα βαριά δεδομένα εικόνων. Το `HtmlSaveOptions` μας δίνει λεπτομερή έλεγχο, και η σημαία `SkipImages` λέει στο Aspose να παραλείψει εντελώς τις ετικέτες ``. + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**Γιατί μπορεί να παραλείψετε τις εικόνες:** Σε portal προεπισκόπησης ή σχεδιασμούς mobile‑first, κάθε kilobyte μετράει. Η αφαίρεση των εικόνων αποφεύγει επίσης ζητήματα αδειοδότησης αν το πηγαίο PDF περιέχει προστατευμένα γραφικά. + +--- + +## Βήμα 3: Εξαγωγή του PDF ως Αρχείο HTML Χωρίς Εικόνες + +Τώρα γράφουμε πραγματικά το αρχείο HTML. Η μέθοδος `Save` σέβεται τις επιλογές που ορίσαμε παραπάνω. + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**Αποτέλεσμα που θα δείτε:** Ένα αρχείο `.html` που περιέχει το κειμενικό περιεχόμενο, πίνακες και διανυσματικά γραφικά (αν υπάρχουν), αλλά χωρίς ετικέτες ``. Ανοίξτε το σε έναν browser και θα δείτε μια καθαρή, χωρίς εικόνες, απόδοση του αρχικού PDF. + +--- + +## Βήμα 4: Προετοιμασία Επαληθευτή Υπογραφής για το Ίδιο Έγγραφο + +Η κλάση `PdfFileSignature` του Aspose.PDF μας επιτρέπει να εξετάσουμε τις ψηφιακές υπογραφές που είναι ενσωματωμένες στο PDF. Θα δημιουργήσουμε μια παρουσία που δείχνει στο ίδιο `Document` που έχουμε ήδη φορτώσει. + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**Σημείωση για τη διαχείριση πόρων:** Η δήλωση `using` εξασφαλίζει ότι ο επαληθευτής απελευθερώνει τυχόν εγγενείς χειριστές μόλις τελειώσουμε, αποτρέποντας προβλήματα κλειδώματος αρχείων στα Windows. + +--- + +## Βήμα 5: Επαλήθευση της Υπογραφής με Όνομα “Sig1” Χρησιμοποιώντας SHA‑3‑256 + +Τα περισσότερα PDF χρησιμοποιούν SHA‑256 ή SHA‑1, αλλά το Aspose υποστηρίζει επίσης τη νεότερη οικογένεια SHA‑3. Εδώ ζητάμε ρητά `Sha3_256`. Αν η υπογραφή λείπει ή ο αλγόριθμος δεν ταιριάζει, η μέθοδος επιστρέφει `false`. + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Τι μπορεί να σημαίνει το “false”:** + +1. **Η υπογραφή δεν βρέθηκε** – ίσως το PDF χρησιμοποιεί διαφορετικό όνομα· δείτε τις υπογραφές με `signatureVerifier.GetSignatureNames()`. +2. **Ασυμφωνία αλγορίθμου** – το PDF μπορεί να έχει υπογραφεί με SHA‑256· δοκιμάστε `DigestHashAlgorithm.Sha256`. +3. **Τροποποίηση εγγράφου** – οποιαδήποτε αλλαγή μετά την υπογραφή ακυρώνει το hash, οδηγώντας σε `false`. + +--- + +## Διαχείριση Συνηθισμένων Edge Cases + +### Μεγάλα PDF + +Αν το πηγαίο PDF ξεπερνά μερικές εκατοντάδες megabytes, εξετάστε την ενεργοποίηση **λειτουργίας εξοικονόμησης μνήμης**: + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +Αυτό ροές σελίδων κατά απαίτηση, μειώνοντας την πίεση στη RAM. + +### Ελλιπής Υπογραφή + +Όταν δεν είστε σίγουροι για το όνομα της υπογραφής, απαριθμήστε τις: + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +Επιλέξτε το σωστό όνομα από τη λίστα πριν καλέσετε `VerifySignature`. + +### Συμβατότητα με Browser + +Μερικοί browsers αντιμετωπίζουν προβλήματα με HTML που περιέχει το προεπιλεγμένο CSS του Aspose. Ορίζοντας `htmlSaveOptions.EmbedCss = true` (όπως φαίνεται παραπάνω) ενσωματώνει τα στυλ, κάνοντας το αρχείο πιο φορητό. + +--- + +## Πλήρες Παράδειγμα Λειτουργικού Κώδικα + +Παρακάτω βρίσκεται το πλήρες, αντιγραφή‑και‑επικόλληση πρόγραμμα που περιλαμβάνει όλα τα βήματα, τον χειρισμό σφαλμάτων και προαιρετική διάγνωση. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Αναμενόμενη έξοδος στην κονσόλα** (οι διαδρομές θα διαφέρουν): + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +Αν η υπογραφή είναι μη έγκυρη, η τελευταία γραμμή θα εμφανίσει `Signature valid: False`. + +--- + +## Συχνές Ερωτήσεις + +**Ε: Μπορώ να μετατρέψω PDF σε HTML *με* εικόνες;** +Α: Φυσικά. Απλώς ορίστε `SkipImages = false` (ή παραλείψτε την ιδιότητα). Το Aspose θα ενσωματώσει κάθε εικόνα ως ξεχωριστό αρχείο σε υποφάκελο δίπλα στο HTML. + +**Ε: Λειτουργεί αυτό σε Linux;** +Α: Ναι. Το Aspose.PDF είναι cross‑platform· απλώς βεβαιωθείτε ότι οι διαδρομές `YOUR_DIRECTORY` χρησιμοποιούν forward slashes ή `Path.Combine`. + +**Ε: Τι γίνεται αν χρειαστώ επικύρωση της ψηφιακής υπογραφής PDF με προσαρμοσμένο πιστοποιητικό;** +Α: Χρησιμοποιήστε την υπερφόρτωση `PdfFileSignature.ValidateSignature` που δέχεται αντικείμενο `X509Certificate2`. Αυτή η μέθοδος επιστρέφει επίσης ένα λεπτομερές `SignatureInfo` που μπορείτε να εξετάσετε. + +**Ε: Είναι το `aspose convert pdf` περιορισμένο μόνο σε C#;** +Α: Όχι. Το ίδιο API υπάρχει για Java, Python και άλλες γλώσσες .NET. Οι έννοιες—φόρτωση, ρύθμιση επιλογών, αποθήκευση, επαλήθευση—παραμένουν ίδιες. + +--- + +## Συμπέρασμα + +Τώρα γνωρίζετε ακριβώς πώς να **αποθηκεύσετε PDF ως HTML** χρησιμοποιώντας το Aspose.PDF, να αφαιρέσετε τις περιττές εικόνες και να **επαληθεύσετε την υπογραφή PDF** σε ένα ενιαίο, απλοποιημένο πρόγραμμα C#. Η διαδικασία είναι απλή: φόρτωση, διαμόρφωση, εξαγωγή και επικύρωση. Με τις προαιρετικές διαγνώσεις και τη διαχείριση edge‑cases, μπορείτε να προσαρμόσετε αυτό το μοτίβο σε batch jobs, web services ή desktop utilities. + +Έτοιμοι για το επόμενο βήμα; Δοκιμάστε **μετατροπή PDF σε HTML** διατηρώντας τις εικόνες, ή πειραματιστείτε με διαφορετικούς αλγόριθμους hash για **επικύρωση ψηφιακής υπογραφής PDF** ενάντια στο δικό σας PKI. Μπορείτε επίσης να εξερευνήσετε τη μετατροπή PDF σε DOCX ή τη συγχώνευση πολλαπλών PDF πριν την εξαγωγή—κάθε μια φυσική επέκταση της ροής εργασίας που μόλις δημιουργήσαμε. + +Καλή προγραμματιστική δουλειά, και εύχομαι οι προεπισκοπήσεις HTML να παραμείνουν ελαφριές και οι υπογραφές σας αξιόπιστες! + +![αποθήκευση pdf ως html παράδειγμα](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/greek/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..c0a96888b --- /dev/null +++ b/pdf/greek/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,258 @@ +--- +category: general +date: 2026-03-29 +description: Αποθήκευση PDF ως HTML χρησιμοποιώντας C# και Aspose.PDF. Μάθετε πώς + να εισάγετε σελίδα σε PDF, να προσθέσετε κενή σελίδα PDF και να δημιουργήσετε αποσπαστική + υπογραφή PKCS7 σε μία ροή. +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: el +og_description: Αποθηκεύστε το PDF ως HTML σε C# με το Aspose.PDF. Αυτός ο οδηγός + δείχνει πώς να φορτώσετε PDF, να εισάγετε σελίδα, να προσθέσετε κενή σελίδα, να + υπογράψετε με PKCS7 και να εξάγετε σε HTML. +og_title: Αποθήκευση PDF ως HTML με C# – Πλήρες Μάθημα Προγραμματισμού +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: Αποθήκευση PDF ως HTML με C# – Πλήρης Οδηγός Βήμα‑Βήμα +url: /el/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Αποθήκευση PDF ως HTML με C# – Πλήρης Οδηγός Βήμα‑βήμα + +Κάποτε χρειάστηκε να **αποθηκεύσετε PDF ως HTML** αλλά δεν ήσασταν σίγουροι πώς να διατηρήσετε το layout αμετάβλητο ενώ ταυτόχρονα τροποποιείτε το αρχικό έγγραφο; Δεν είστε οι μόνοι—οι προγραμματιστές συχνά αντιμετωπίζουν προβλήματα σελιδοποίησης, κενές σελίδες και ψηφιακές υπογραφές πριν από τη μετατροπή. Σε αυτό το tutorial θα περάσουμε από μια ενιαία, συνεκτική ροή εργασίας που κάνει ακριβώς αυτό, και θα ενσωματώσουμε πώς να **εισάγετε σελίδα σε PDF**, **προσθέσετε κενή σελίδα PDF** και **δημιουργήσετε αποσπασματική υπογραφή PKCS7** κατά τη διάρκεια. + +Στο τέλος αυτού του οδηγού θα έχετε ένα έτοιμο‑για‑εκτέλεση πρόγραμμα C# που φορτώνει ένα υπάρχον PDF, αναδιαμορφώνει τις σελίδες του, υπογράφει την πρώτη σελίδα και, τέλος, εξάγει όλο το αρχείο σε HTML με προτεραιότητα Unicode CMap. Χωρίς κρεμασμένες αναφορές, μόνο μια αυτόνομη λύση που μπορείτε να ενσωματώσετε σε οποιοδήποτε έργο .NET. + +## Τι Θα Χρειαστείτε + +- **Aspose.PDF for .NET** (τελευταία έκδοση, 23.x τη στιγμή της συγγραφής). +- **.NET 6.0** ή νεότερο – ο κώδικας μεταγλωττίζεται και με .NET Framework 4.7, αλλά το .NET 6 προσφέρει την καλύτερη απόδοση. +- Ένα **αρχείο πιστοποιητικού** (`.pfx`) και ο κωδικός του για την υπογραφή PKCS7. +- Ένα αρχείο εισόδου PDF (`input.pdf`) που θέλετε να επεξεργαστείτε. + +Αν έχετε όλα αυτά, μπορούμε να περάσουμε κατευθείαν στον κώδικα. Διαφορετικά, κατεβάστε μια δωρεάν δοκιμαστική έκδοση 30 ημερών του Aspose από την επίσημη ιστοσελίδα· το API είναι ταυτόσημο με την επί πληρωμή έκδοση. + +--- + +## Step 1 – Load PDF Document in C# (Primary Action) + +Το πρώτο βήμα είναι να φορτώσετε το PDF στη μνήμη. Η κλάση `Document` της Aspose κάνει όλη τη βαριά δουλειά. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*Γιατί είναι σημαντικό:* Η φόρτωση του αρχείου σας δίνει ένα μεταβλητό αντικειμενικό μοντέλο. Από εδώ μπορείτε **να εισάγετε σελίδα σε PDF**, να προσθέσετε κενές σελίδες ή να εφαρμόσετε υπογραφές χωρίς να αγγίξετε το αρχικό αρχείο στο δίσκο. + +--- + +## Step 2 – Insert a Page and Add a Blank PDF Page + +Μερικές φορές το αρχικό PDF περιέχει ελαττώματα σελιδοποίησης—ίσως λείπει μια σελίδα ή υπάρχει διπλότυπη. Παρακάτω αντιγράφουμε τη σελίδα 2 αμέσως μετά τη σελίδα 1, και στη συνέχεια προσθέτουμε μια εντελώς κενή σελίδα στο τέλος. + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*Pro tip:* Η μέθοδος `UpdatePagination()` επαναϋπολογίζει τους αριθμούς σελίδων που εμφανίζονται σε υποσέλιδα ή κεφαλίδες που δημιουργεί η Aspose. Η παράλειψη αυτού του βήματος μπορεί να αφήσει παλιούς αριθμούς στο τελικό HTML. + +--- + +## Step 3 – Create a PKCS7 Detached Signature (SHA‑512) + +Μια αποσπασματική υπογραφή PKCS7 αποδεικνύει την ακεραιότητα του εγγράφου χωρίς να ενσωματώνει τα δεδομένα της υπογραφής απευθείας στο ρεύμα περιεχομένου του PDF. Θα χρησιμοποιήσουμε ένα πιστοποιητικό αποθηκευμένο σε αρχείο PFX. + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*Γιατί SHA‑512;* Προσφέρει ισχυρότερο hash από το SHA‑256 ενώ παραμένει ευρέως υποστηριζόμενο. Αν χρειάζεστε συμμόρφωση με παλαιότερα πρότυπα, αντικαταστήστε το `Sha512` με `Sha256`. + +--- + +## Step 4 – Apply the Digital Signature to Page 1 with a Visible Rectangle + +Θα τοποθετήσουμε ένα ορατό πεδίο υπογραφής στην πρώτη σελίδα. Το ορθογώνιο καθορίζει πού εμφανίζεται η εικόνα της υπογραφής (ή το placeholder). + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*Edge case:* Αν η στοχευόμενη σελίδα περιέχει ήδη ένα πεδίο φόρμας με το ίδιο όνομα, το API θα πετάξει εξαίρεση. Διασφαλίστε μοναδικά ονόματα πεδίων ή καθαρίστε τα υπάρχοντα πεδία πριν την υπογραφή. + +--- + +## Step 5 – Configure HTML Save Options to Prioritize Unicode CMap + +Κατά τη μετατροπή σε HTML, η Aspose μπορεί να ενσωματώνει γραμματοσειρές ως base‑64, να χρησιμοποιεί υποσύνολα ή να βασίζεται σε Unicode CMaps. Η προτεραιότητα στο Unicode μειώνει το μέγεθος του αρχείου και βελτιώνει την δυνατότητα αναζήτησης κειμένου. + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*Τι κάνει αυτό;* Λέει στον μετατροπέα να προτιμά Unicode CMaps αντί για προσαρμοσμένη ενσωμάτωση γραμματοσειρών όποτε είναι δυνατόν, κάτι ιδανικό για πολυγλωσσικά PDFs. + +--- + +## Step 6 – Save the Signed Document as HTML + +Τέλος, γράψτε το επεξεργασμένο PDF ως φάκελο HTML (η Aspose δημιουργεί έναν κατάλογο με αρχεία υποστήριξης όπως CSS και εικόνες). + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +Αν ανοίξετε το `cmap.html` σε έναν περιηγητή, θα δείτε το αρχικό layout του PDF να αποδίδεται ως HTML, με την ορατή εικόνα υπογραφής στην πρώτη σελίδα. + +--- + +## Full Working Example (All Steps Combined) + +Παρακάτω βρίσκεται το πλήρες πρόγραμμα που μπορείτε να αντιγράψετε‑και‑επικολλήσετε σε μια εφαρμογή console. Περιλαμβάνει όλες τις απαραίτητες οδηγίες `using` και διαχείριση σφαλμάτων. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**Αναμενόμενο αποτέλεσμα:** +- `cmap.html` (το κύριο αρχείο HTML) +- φάκελος `cmap_files` που περιέχει CSS, εικόνες και πόρους γραμματοσειρών. +- Η πρώτη σελίδα εμφανίζει ένα ορατό κουτί υπογραφής στις συντεταγμένες που ορίσατε. + +--- + +## Frequently Asked Questions & Edge Cases + +| Ερώτηση | Απάντηση | +|----------|--------| +| *Μπορώ να χρησιμοποιήσω αυτο‑υπογεγραμμένο πιστοποιητικό;* | Ναι, το Aspose.PDF δέχεται οποιοδήποτε έγκυρο PFX. Απλώς θυμηθείτε ότι οι περιηγητές μπορεί να επισημάνουν την υπογραφή ως μη αξιόπιστη. | +| *Τι γίνεται αν χρειαστεί να υπογράψω πολλές σελίδες;* | Δημιουργήστε ξεχωριστές κλήσεις `PdfFileSignature` για κάθε σελίδα, ή χρησιμοποιήστε έναν βρόχο που ενημερώνει το `pageNumber`. | +| *Υπάρχει τρόπος να ενσωματώσω την εικόνα της υπογραφής αντί για ορθογώνιο;* | Παρέχετε ένα αντικείμενο `SignatureAppearance` με ροή εικόνας στο `PdfFileSignature.Sign`. | +| *Το PDF μου έχει κρυπτογραφημένο περιεχόμενο—μπορώ ακόμα να το μετατρέψω;* | Αποκρυπτογραφήστε το πρώτα χρησιμοποιώντας `pdfDoc.Decrypt("ownerPassword")`, έπειτα εκτελέστε τα βήματα. | +| *Θα διατηρήσει το HTML τους υπερσυνδέσμους από το αρχικό PDF;* | Το Aspose διατηρεί τις σημειώσεις συνδέσμων από προεπιλογή. Αν δείτε ελλιπείς συνδέσμους, ορίστε `htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;` | + +--- + +## Wrapping Up + +Μόλις δείξαμε πώς να **αποθηκεύσετε PDF ως HTML** ενώ ταυτόχρονα **εισάγετε σελίδα σε PDF**, **προσθέτετε κενή σελίδα PDF** και **δημιουργείτε αποσπασματική υπογραφή PKCS7**—όλα με C#. Η ροή εργασίας είναι γραμμική, εύκολη στην αποσφαλμάτωση και πλήρως προσαρμόσιμη για μεγαλύτερα έργα. + +Στη συνέχεια, ίσως θελήσετε να εξερευνήσετε: + +- **Batch processing** – επανάληψη σε φάκελο PDF και μετατροπή του καθενός. +- **Custom CSS** – προσαρμόστε το `HtmlSaveOptions.CustomCss` ώστε να ταιριάζει με το στυλ του ιστότοπού σας. +- **Advanced signatures** – χρησιμοποιήστε διακομιστές χρονικής σήμανσης ή LTV (Long‑Term Validation) για υπογραφές συμμορφωμένες με πρότυπα. + +Δοκιμάστε τα και θα έχετε μια ισχυρή γραμμή εργασίας PDF‑σε‑HTML που είναι φιλική στο SEO και αξιόπιστη για παραπομπές σε βοηθούς AI. Καλή προγραμματιστική! + +--- + +![Διάγραμμα που δείχνει το PDF φορτωμένο, τις σελίδες που εισήχθησαν, την υπογραφή που εφαρμόστηκε και το τελικό HTML](/images/save-pdf-as-html-workflow.png "ροή εργασίας αποθήκευσης pdf ως html") + +*Κείμενο alt εικόνας:* **διάγραμμα ροής αποθήκευσης pdf ως html** + +{{< /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 e08abd976..1a2d5e340 100644 --- a/pdf/greek/net/digital-signatures/_index.md +++ b/pdf/greek/net/digital-signatures/_index.md @@ -36,7 +36,7 @@ Μάθετε πώς να εξάγετε πληροφορίες ψηφιακής υπογραφής από PDF χρησιμοποιώντας το Aspose.PDF για .NET. Αυτός ο οδηγός βήμα προς βήμα καλύπτει την εγκατάσταση, την υλοποίηση και τις πρακτικές εφαρμογές. ### [Πώς να εφαρμόσετε ψηφιακές υπογραφές σε .NET με το Aspose.PDF: Ένας πλήρης οδηγός](./implement-pdf-signatures-dotnet-aspose-pdf-guide/) -Μάθετε πώς να εφαρμόζετε ασφαλείς ψηφιακές υπογραφές σε PDF χρησιμοποιώντας το Aspose.PDF για .NET, συμπεριλαμβανομένης της απόκρυψης προαιρετικών πεδίων. +Μάθετε πώς να εφαρμόζετε ασφαλείς ψηφιακές υπογραφές σε PDF χρησιμοποιώντας το Aspose.PDF για .NET, συμπερια ### [Πώς να αφαιρέσετε ψηφιακές υπογραφές PDF χρησιμοποιώντας το Aspose.PDF .NET | Πλήρης οδηγός](./remove-pdf-digital-signatures-aspose-pdf-net/) Μάθετε πώς να αφαιρείτε αποτελεσματικά τις ψηφιακές υπογραφές από PDF χρησιμοποιώντας το Aspose.PDF .NET. Αυτός ο ολοκληρωμένος οδηγός καλύπτει την αφαίρεση μίας και πολλαπλών υπογραφών, με οδηγίες βήμα προς βήμα. @@ -59,6 +59,9 @@ ### [Επικύρωση υπογραφής PDF με το Aspose – Μετατροπή PDF σε HTML](./validate-pdf-signature-with-aspose-convert-pdf-to-html/) Μάθετε πώς να επικυρώνετε υπογραφές PDF και να μετατρέπετε PDF σε HTML με το Aspose.PDF για .NET. +### [Πώς να υπογράψετε PDF και να προσθέσετε εικόνες – Πλήρης οδηγός C#](./how-to-sign-pdf-and-add-images-complete-c-guide/) +Μάθετε πώς να υπογράψετε PDF και να ενσωματώσετε εικόνες χρησιμοποιώντας C# και Aspose.PDF. + ## Πρόσθετοι Πόροι - [Aspose.PDF για τεκμηρίωση δικτύου](https://docs.aspose.com/pdf/net/) diff --git a/pdf/greek/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/greek/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..5469956b4 --- /dev/null +++ b/pdf/greek/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-03-29 +description: Πώς να υπογράψετε PDF με ψηφιακή υπογραφή και να προσθέσετε μια περικομμένη + εικόνα σε C#. Μάθετε πώς να προσθέτετε ψηφιακή υπογραφή σε PDF, να περικόπτετε εικόνα + για PDF και να προσθέτετε εικόνα σε PDF εύκολα. +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: el +og_description: Πώς να υπογράψετε PDF με ψηφιακή υπογραφή και να ενσωματώσετε μια + περικομμένη εικόνα χρησιμοποιώντας το Aspose.Pdf σε C#. Ακολουθήστε αυτόν τον οδηγό + για μια πλήρη λύση. +og_title: Πώς να υπογράψετε PDF και να προσθέσετε εικόνες – Βήμα‑βήμα οδηγός C# +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: Πώς να υπογράψετε PDF και να προσθέσετε εικόνες – Πλήρης οδηγός C# +url: /el/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να Υπογράψετε PDF και να Προσθέσετε Εικόνες – Πλήρης Οδηγός C# + +Έχετε αναρωτηθεί ποτέ **πώς να υπογράψετε PDF** αρχεία προγραμματιστικά ενώ ταυτόχρονα ενσωματώνετε μια προσαρμοσμένη εικόνα; Ίσως χτίζετε μια ροή έγκρισης και χρειάζεστε μια νομικά δεσμευτική υπογραφή *και* μια μικρογραφία της φωτογραφίας του υπογράφοντα στην ίδια σελίδα. Συνοπτικά, θέλετε **να προσθέσετε ψηφιακή υπογραφή pdf** στο περιεχόμενο, να περικόψετε αυτήν τη φωτογραφία και στη συνέχεια **να προσθέσετε εικόνα στο pdf** χωρίς κόπο. + +Αυτό το tutorial σας οδηγεί βήμα‑βήμα—από τη φόρτωση ενός πιστοποιητικού ECDSA PKCS#7 μέχρι το κόψιμο ενός JPEG και την τοποθέτησή του στην υπογεγραμμένη σελίδα. Στο τέλος θα έχετε ένα ενιαίο, εκτελέσιμο αρχείο C# που υπογράφει τη σελίδα 1, περικόπτει μια φωτογραφία σε 400 × 400 px και την τοποθετεί σε ακριβή θέση. Χωρίς εξωτερικά scripts, χωρίς μαγεία, μόνο καθαρός κώδικας και εξηγήσεις. + +## Προαπαιτούμενα + +- .NET 6.0 ή νεότερο (ο κώδικας λειτουργεί επίσης με .NET Framework 4.7+) +- Πακέτο NuGet **Aspose.Pdf for .NET** (έκδοση 23.9 ή νεότερη) +- Πιστοποιητικό ECDSA P‑256 σε μορφή PKCS#7 (`.pfx`) και ο κωδικός του +- Μια εικόνα JPEG που θέλετε να ενσωματώσετε (π.χ. `photo.jpg`) + +> **Pro tip:** Κρατήστε το αρχείο πιστοποιητικού εκτός ελέγχου έκδοσης και προστατέψτε τον κωδικό με έναν διαχειριστή μυστικών. + +--- + +## Βήμα 1: Ρύθμιση του Έργου και Εισαγωγών + +Πρώτα, δημιουργήστε μια εφαρμογή console (ή ενσωματώστε το σε υπάρχουσα υπηρεσία). Προσθέστε την αναφορά Aspose.Pdf: + +```bash +dotnet add package Aspose.Pdf +``` + +Στη συνέχεια, συμπεριλάβετε τα απαιτούμενα namespaces: + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +Αυτές οι δηλώσεις `using` σας δίνουν πρόσβαση στις κλάσεις `Document`, `Signature` και `Rectangle` που θα χρειαστούμε αργότερα. + +## Βήμα 2: Φόρτωση του PDF και Προετοιμασία της Υπογραφής + +Θα ανοίξουμε ένα υπάρχον PDF (`source.pdf`) και θα δημιουργήσουμε ένα αντικείμενο **digital signature pdf** που χρησιμοποιεί μια αποσπασμένη υπογραφή PKCS#7. Το πιστοποιητικό είναι κλειδί ECDSA P‑256, το οποίο είναι ευρέως αποδεκτό για συμμόρφωση. + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**Γιατί είναι σημαντικό:** Η χρήση αποσπασμένης υπογραφής PKCS#7 διατηρεί το αρχικό περιεχόμενο του PDF αμετάβλητο ενώ ενσωματώνει ένα κρυπτογραφικό hash. Αυτή είναι η βιομηχανική προδιαγραφή για νομικά δεσμευτικά PDFs. + +## Βήμα 3: Εφαρμογή της Ψηφιακής Υπογραφής σε Συγκεκριμένη Σελίδα + +Τώρα θα τοποθετήσουμε το ορατό πεδίο υπογραφής στη **σελίδα 1**. Το rectangle ορίζει πού εμφανίζεται το κουτί υπογραφής (συντεταγμένες σε points, όπου 1 inch = 72 points). + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +Αν δεν χρειάζεστε ορατό κουτί, ορίστε `isVisible` σε `false`. Το `signatureRect` μπορεί να προσαρμοστεί ώστε να ταιριάζει στη διάταξη του εγγράφου σας. + +## Βήμα 4: Άνοιγμα του Ροής Εικόνας και Ορισμός Περιοχών Κοπής + +Θα διαβάσουμε το αρχείο JPEG σε stream και θα ορίσουμε ένα **source rectangle** που επιλέγει τα πάνω‑αριστερά 400 × 400 pixel. Αυτή είναι η λειτουργία **crop image for pdf**. + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **Edge case:** Αν η εικόνα σας είναι μικρότερη από 400 × 400, η κοπή θα περιοριστεί αυτόματα στις πραγματικές διαστάσεις της εικόνας—δεν θα προκληθεί εξαίρεση. + +## Βήμα 5: Ορισμός του Προορισμού για την Περικομμένη Εικόνα + +Στη συνέχεια, ορίστε το **destination rectangle** στη σελίδα PDF. Στο παράδειγμα τοποθετούμε την εικόνα στο (50, 50) με μέγεθος 200 × 200 points (≈2,78 ίντσες τετράγωνο). + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +Αισθανθείτε ελεύθεροι να πειραματιστείτε: αλλάξτε τις συντεταγμένες X/Y για να μετακινήσετε τη φωτογραφία ή προσαρμόστε το πλάτος/ύψος για κλιμάκωση. + +## Βήμα 6: Εισαγωγή της Περικομμένης Εικόνας στην Υπογεγραμμένη Σελίδα + +Τέλος, προσθέτουμε την εικόνα στη **σελίδα 1** (την ίδια σελίδα που τώρα περιέχει την υπογραφή). Η υπερφόρτωση `AddImage` που χρησιμοποιούμε δέχεται τα source και destination rectangles, εκτελώντας ουσιαστικά την κοπή και την τοποθέτηση με μία κλήση. + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +Στο παρασκήνιο, το Aspose.Pdf εξάγει την περιοχή 400 × 400 pixel, την κλιμακώνει σε 200 × 200 points και την γράφει στο content stream του PDF. + +## Βήμα 7: Αποθήκευση του Υπογεγραμμένου και Εμπλουτισμένου με Εικόνα PDF + +Μετά από όλες τις τροποποιήσεις, αποθηκεύστε το έγγραφο. Μπορείτε να αντικαταστήσετε το αρχικό ή να γράψετε σε νέο αρχείο. + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +Όταν ανοίξετε το `output_signed.pdf` σε Adobe Acrobat ή οποιονδήποτε PDF viewer, θα δείτε: + +- Ένα ορατό πεδίο υπογραφής στις συντεταγμένες που καθορίσατε. +- Τη περικομμένη φωτογραφία τοποθετημένη στο (50, 50) στη σελίδα 1. +- Την ψηφιακή υπογραφή επαληθευμένη (εφόσον ο viewer εμπιστεύεται το πιστοποιητικό σας). + +--- + +## Συχνές Ερωτήσεις (FAQ) + +| Ερώτηση | Απάντηση | +|----------|--------| +| **Μπορώ να υπογράψω διαφορετική σελίδα;** | Αλλάξτε το όρισμα `pageNumber` στην `signature.Sign` σε οποιονδήποτε έγκυρο αριθμό σελίδας (αριθμός‑βάση‑1). | +| **Τι γίνεται αν χρειάζομαι πολλαπλές υπογραφές;** | Δημιουργήστε ένα νέο αντικείμενο `Signature` για κάθε σελίδα ή θέση, επαναχρησιμοποιώντας το ίδιο `pkcsSignature` αν ισχύει το ίδιο πιστοποιητικό. | +| **Η κοπή εικόνας περιορίζεται σε ορθογώνια;** | Ναι, το `AddImage` του Aspose.Pdf λειτουργεί με ορθογώνιες περιοχές. Για πιο σύνθετα σχήματα χρειάζεται προεπεξεργασία της εικόνας (π.χ. με System.Drawing) πριν την ενσωμάτωση. | +| **Πώς κάνω την υπογραφή αόρατη;** | Ορίστε `isVisible` σε `false` και παραλείψτε το `signatureRect`. Η υπογραφή θα παραμείνει κρυπτογραφικά έγκυρη. | +| **Τι μορφές μπορώ να ενσωματώσω εκτός JPEG;** | Υποστηρίζονται PNG, BMP, GIF και TIFF. Απλώς αλλάξτε τη διαδρομή αρχείου και βεβαιωθείτε ότι το stream διαβάζει τα σωστά bytes. | + +--- + +## Πλήρες Παράδειγμα Εφαρμογής + +Ακολουθεί το ολοκληρωμένο, αυτόνομο πρόγραμμα. Αντιγράψτε‑και‑επικολλήστε το στο `Program.cs`, προσαρμόστε τις διαδρομές και τρέξτε. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**Αναμενόμενο αποτέλεσμα:** Το άνοιγμα του `output_signed.pdf` εμφανίζει ένα πεδίο υπογραφής (100 × 100 → 300 × 300 points) και μια εικόνα 200 × 200‑point προερχόμενη από την πάνω‑αριστερή γωνία του `photo.jpg`. Η υπογραφή επαληθεύεται με το παρεχόμενο πιστοποιητικό ECDSA. + +--- + +## Συμπεράσματα + +Καλύψαμε **πώς να υπογράψετε PDF** αρχεία, πώς να **προσθέσετε digital signature pdf** σε συγκεκριμένη σελίδα, πώς να **crop image for pdf**, και τελικά πώς να **add image to pdf** χρησιμοποιώντας το Aspose.Pdf σε C#. Η πλήρης ροή—από τη φόρτωση του πιστοποιητικού μέχρι την αποθήκευση του τελικού εγγράφου—συμπεριλαμβάνεται σε ένα μόνο, εύκολο στην ανάγνωση αρχείο πηγαίου κώδικα. + +Αν είστε έτοιμοι για την επόμενη πρόκληση, σκεφτείτε: + +- Προσθήκη **πολλαπλών υπογραφών** σε διαφορετικές σελίδες (χρησιμοποιήστε την έννοια “digital signature pdf page”). +- Ενσωμάτωση **QR codes** που συνδέουν σε υπηρεσίες επαλήθευσης. +- Αυτοματοποίηση της διαδικασίας σε ASP.NET Core API για δημιουργία PDF «on‑the‑fly». + +Θυμηθείτε, το κλειδί για αξιόπιστη αυτοματοποίηση 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-security-and-signatures/_index.md b/pdf/greek/net/programming-with-security-and-signatures/_index.md index 466664068..29a417c5a 100644 --- a/pdf/greek/net/programming-with-security-and-signatures/_index.md +++ b/pdf/greek/net/programming-with-security-and-signatures/_index.md @@ -35,6 +35,7 @@ | [Υπογραφή με έξυπνη κάρτα χρησιμοποιώντας το πεδίο υπογραφής](./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.Pdf](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | Μάθετε πώς να επισκευάσετε αρχεία PDF χρησιμοποιώντας το Aspose.PDF για .NET με οδηγίες βήμα προς βήμα. | +| [Επικύρωση ψηφιακής υπογραφής PDF – Πλήρης οδηγός C#](./validate-pdf-digital-signature-complete-c-guide/) | Μάθετε πώς να επικυρώνετε ψηφιακές υπογραφές PDF χρησιμοποιώντας C# και Aspose.PDF, βήμα προς βήμα οδηγός. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/greek/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/greek/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..0834347ba --- /dev/null +++ b/pdf/greek/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,262 @@ +--- +category: general +date: 2026-03-29 +description: Επικυρώστε γρήγορα την ψηφιακή υπογραφή PDF. Μάθετε πώς να επαληθεύετε + την υπογραφή PDF, να ελέγχετε την κατάσταση της υπογραφής PDF και να εντοπίζετε + παραποιημένα PDF με το Aspose.Pdf σε C#. +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: el +og_description: Επικυρώστε την ψηφιακή υπογραφή PDF σε C#. Αυτό το εκπαιδευτικό υλικό + δείχνει πώς να επαληθεύσετε την υπογραφή PDF, να ελέγξετε την ακεραιότητα της υπογραφής + PDF και να εντοπίσετε παραποιημένο PDF χρησιμοποιώντας το Aspose.Pdf. +og_title: Επικύρωση Ψηφιακής Υπογραφής PDF – Πλήρης Οδηγός C# +tags: +- C# +- Aspose.Pdf +- PDF Security +title: Επικύρωση Ψηφιακής Υπογραφής PDF – Πλήρης Οδηγός C# +url: /el/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Επικύρωση Ψηφιακής Υπογραφής PDF – Πλήρης Οδηγός C# + +Αναρωτηθήκατε ποτέ **πώς να επαληθεύσετε μια υπογραφή PDF** χωρίς να τσακίζετε τα μαλλιά σας; Ίσως λάβατε ένα συμβόλαιο, το ανοίξατε, και χρειάζεστε 100 % βεβαιότητα ότι δεν έχει τροποποιηθεί. Τα καλά νέα είναι ότι δεν χρειάζεστε εργαστήριο εγκληματολογίας—απλώς μερικές γραμμές C# και Aspose.Pdf μπορούν να **επικυρώσουν την ψηφιακή υπογραφή PDF** σε μια στιγμή. + +Σε αυτό το tutorial θα περάσουμε από όλα όσα χρειάζεται να γνωρίζετε: από την εγκατάσταση της βιβλιοθήκης μέχρι την ερμηνεία του αποτελέσματος, και ακόμη και τη διαχείριση ειδικών περιπτώσεων όπως πολλαπλές υπογραφές ή ένα κατεστραμμένο αρχείο. Στο τέλος, θα μπορείτε να **ελέγξετε την κατάσταση της υπογραφής PDF** προγραμματιστικά και να **ανιχνεύσετε παραποιημένα PDF** αρχεία πριν προκαλέσουν προβλήματα. + +## Τι Θα Χρειαστείτε + +- **.NET 6.0 ή νεότερο** (ο κώδικας λειτουργεί και σε .NET Framework, αλλά το .NET 6 είναι η ιδανική επιλογή). +- **Aspose.Pdf for .NET** – μπορείτε να το κατεβάσετε από το NuGet (`Install-Package Aspose.Pdf`). +- Ένα **υπογεγραμμένο PDF** που θέλετε να δοκιμάσετε. Αν δεν έχετε κάποιο, δημιουργήστε ένα απλό υπογεγραμμένο έγγραφο με το Adobe Acrobat ή οποιονδήποτε υπογράφοντα PDF. + +> **Pro tip:** Κρατήστε τα PDF αρχεία σας εκτός του ριζικού φακέλου του έργου· μια σχετική διαδρομή όπως `./Samples/signed.pdf` λειτουργεί καλά και αποτρέπει τυχαίες δεσμεύσεις εμπιστευτικών αρχείων. + +## Υλοποίηση Βήμα‑Βήμα + +Παρακάτω χωρίζουμε τη λύση σε λογικά τμήματα. Κάθε τμήμα παίρνει το δικό του H2 header—ένα από αυτά περιέχει ακόμη και τη βασική λέξη‑κλειδί, ικανοποιώντας τον κανόνα SEO. + +### ## Step 1 – Install and Reference Aspose.Pdf + +Πρώτα, προσθέστε το πακέτο NuGet στο έργο σας: + +```powershell +dotnet add package Aspose.Pdf +``` + +Ή, αν χρησιμοποιείτε το Package Manager Console: + +```powershell +Install-Package Aspose.Pdf +``` + +Αφού εγκατασταθεί το πακέτο, το Visual Studio θα προσθέσει αυτόματα το namespace `using Aspose.Pdf;`. Δεν απαιτείται επιπλέον διαχείριση DLL. + +### ## Step 2 – Load the Signed PDF Document + +Τώρα ανοίγουμε πραγματικά το αρχείο. Η δήλωση `using` εξασφαλίζει ότι το έγγραφο θα απελευθερωθεί σωστά, κάτι που είναι ιδιαίτερα σημαντικό για μεγάλα PDF. + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +> **Why this matters:** Η φόρτωση του εγγράφου μας δίνει πρόσβαση στο αντικείμενο `DigitalSignatureInfo`, το σημείο εισόδου για όλα τα ερωτήματα σχετιζόμενα με υπογραφές. + +### ## Step 3 – Retrieve Digital Signature Information + +Το Aspose.Pdf περιτυλίγει τις χαμηλού επιπέδου λεπτομέρειες PKI σε ένα φιλικό API. Πάρτε την ιδιότητα `DigitalSignatureInfo` και θα έχετε όλα όσα χρειάζεστε για να **ελέγξετε την υγεία της υπογραφής PDF**. + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +Αν το PDF περιέχει πολλαπλές υπογραφές, το `signatureInfo` τις συγκεντρώνει, εκθέτοντας ιδιότητες όπως `Count`, `Certificates` και `IsCompromised`. Για αρχείο με μία μόνο υπογραφή, αυτές οι συλλογές θα έχουν μόνο ένα στοιχείο. + +### ## Step 4 – Determine Whether the Signature Is Compromised + +Η σημαία `IsCompromised` σας λέει αν το έγγραφο έχει τροποποιηθεί **μετά** την υπογραφή. Μια τιμή `true` σημαίνει ότι το PDF είναι παραποιημένο—ακριβώς αυτό που θέλουμε για **ανίχνευση παραποιημένου PDF**. + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +Αν χρειάζεστε πιο διεξοδική **επαλήθευση υπογραφής PDF** (π.χ. έλεγχο αλυσίδας πιστοποιητικών), μπορείτε επίσης να εξετάσετε το `signatureInfo.Certificates` και να καλέσετε `Validate()` σε καθένα. Για τις περισσότερες περιπτώσεις, το `IsCompromised` είναι αρκετό. + +### ## Step 5 – Output the Result to the Console + +Τέλος, ενημερώστε τον χρήστη τι συνέβη. Θα εκτυπώσουμε ένα φιλικό μήνυμα και θα επιστρέψουμε έναν κατάλληλο κωδικό εξόδου για σενάρια αυτοματοποίησης. + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### Expected Output + +``` +Signature compromised: False +``` + +Αν παραποιήσετε σκόπιμα το PDF (π.χ. προσθέσετε έναν τυχαίο χαρακτήρα), η έξοδος θα αλλάξει σε `True`. Αυτό είναι το σημείο που γνωρίζετε ότι η ακεραιότητα του εγγράφου έχει παραβιαστεί. + +### ## Handling Edge Cases and Common Pitfalls + +#### 1. Multiple Signatures + +Όταν ένα PDF έχει περισσότερους από έναν υπογράφοντα, το `IsCompromised` αντανακλά την *συνολική* κατάσταση—αν **οποιαδήποτε** υπογραφή είναι σπασμένη, η σημαία γίνεται `true`. Για να εντοπίσετε ποιος υπογράφων είναι σε πρόβλημα: + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. Missing Signature + +Αν το PDF δεν είναι υπογεγραμμένο καθόλου, το `signatureInfo.Count` θα είναι `0`. Πρέπει να προστατευτείτε από ψευδή αίσθηση ασφάλειας: + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. Corrupted PDF File + +Ένα κατεστραμμένο αρχείο προκαλεί `PdfException`. Τυλίξτε τη λογική φόρτωσης σε try‑catch για να δώσετε καθαρό μήνυμα σφάλματος: + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. Certificate Validation (Advanced) + +Αν χρειάζεται να διασφαλίσετε ότι το πιστοποιητικό υπογραφής είναι ακόμη έγκυρο (δεν έχει ανακληθεί, βρίσκεται εντός της περιόδου ισχύος), μπορείτε να καλέσετε: + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +Αυτό το βήμα σας μεταφέρει από έναν απλό **έλεγχο υπογραφής PDF** σε μια πλήρη ροή **πώς να επαληθεύσετε υπογραφή PDF**. + +### ## Full Working Example + +Συνδυάζοντας όλα, εδώ είναι το πλήρες, έτοιμο‑για‑εκτέλεση πρόγραμμα: + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +Τρέξτε το πρόγραμμα από τη γραμμή εντολών: + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +Θα πρέπει να δείτε μια σαφή αναφορά που σας λέει αν το PDF είναι άθικτο, ποιοι υπογράφοντες εμπλέκονται, και αν τα πιστοποιητικά τους είναι ακόμη αξιόπιστα. + +## Visual Overview + +Παρακάτω υπάρχει ένα γρήγορο διάγραμμα που απεικονίζει τη ροή από **φόρτωση του PDF** μέχρι **εξαγωγή του αποτελέσματος επαλήθευσης**. Είναι ένα χρήσιμο σημείο αναφοράς όταν σχεδιάζετε την αρχιτεκτονική μιας μεγαλύτερης διασωλήνωσης επεξεργασίας εγγράφων. + +![διάγραμμα ροής επαλήθευσης ψηφιακής υπογραφής PDF](image.png "Διάγραμμα που δείχνει PDF load → DigitalSignatureInfo → IsCompromised check") + +*Alt text: διάγραμμα ροής επαλήθευσης ψηφιακής υπογραφής PDF* + +## Conclusion + +Μόλις καλύψαμε μια **πλήρη, end‑to‑end λύση για την επαλήθευση ψηφιακής υπογραφής PDF** χρησιμοποιώντας Aspose.Pdf σε C#. Τα κύρια σημεία: + +- Φορτώστε το PDF με `Document`. +- Αποκτήστε το `DigitalSignatureInfo` και ελέγξτε το `IsCompromised` για **ανίχνευση παραποιημένου PDF**. +- Διαχειριστείτε πολλαπλές υπογραφές, ελλιπείς υπογραφές και κατεστραμμένα αρχεία με χάρη. +- Προαιρετικά, επαληθεύστε το πιστοποιητικό υπογραφής για μια πλήρη λίστα ελέγχου **πώς να επαληθεύσετε υπογραφή PDF**. + +Από εδώ μπορείτε να επεκτείνετε τη λογική—να αποθηκεύετε τα αποτελέσματα επαλήθευσης σε βάση δεδομένων, να απορρίπτετε ανεπιβεβαίωτες μεταφορτώσεις σε web API, ή να ενσωματώνετε το σύστημα σε μια πλατφόρμα διαχείρισης εγγράφων. Αν σας ενδιαφέρουν άλλες λειτουργίες ασφαλείας PDF, ρίξτε μια ματιά στο **έλεγχο χρονικών σημάνσεων υπογραφής PDF**, **προσθήκη νέας υπογραφής**, ή **κρυπτογράφηση PDF**. + +Έχετε ερωτήσεις για ειδικές περιπτώσεις, ή θέλετε να δείτε πώς να **επαληθεύσετε υπογραφή PDF** με διαφορετική βιβλιοθήκη όπως το iText 7; Αφήστε ένα σχόλιο παρακάτω και ας συνεχίσουμε τη συζήτηση. Καλή προγραμματιστική διασκέδαση! + +{{< /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/conversion-export/_index.md b/pdf/hindi/net/conversion-export/_index.md index 442c15df8..564057a71 100644 --- a/pdf/hindi/net/conversion-export/_index.md +++ b/pdf/hindi/net/conversion-export/_index.md @@ -53,7 +53,7 @@ Aspose.PDF नेट के लिए एक कोड ट्यूटोरि ### [Aspose.PDF .NET के साथ PDF पृष्ठों को PNG में बदलें: एक व्यापक गाइड](./convert-pdf-pages-to-png-aspose-net/) जानें कि .NET के लिए Aspose.PDF का उपयोग करके PDF पृष्ठों को उच्च-गुणवत्ता वाली PNG छवियों में कैसे परिवर्तित किया जाए। रूपांतरण प्रक्रिया को कुशलतापूर्वक स्वचालित करने के लिए इस चरण-दर-चरण मार्गदर्शिका का पालन करें। -### [.NET के लिए Aspose.PDF का उपयोग करके PDF को BMP में बदलें: एक चरण-दर-चरण मार्गदर्शिका](./convert-pdf-to-bmp-aspose-pdf-net/) +### [.NET के लिए Aspose.PDF का उपयोग करके PDF को BMP में बदलें: एक चरण-दर-स्टेप मार्गदर्शिका](./convert-pdf-to-bmp-aspose-pdf-net/) इस व्यापक गाइड के साथ .NET के लिए Aspose.PDF का उपयोग करके PDF पृष्ठों को उच्च गुणवत्ता वाली BMP छवियों में परिवर्तित करना सीखें। ### [.NET के लिए Aspose.PDF का उपयोग करके PDF को EMF में बदलें: एक संपूर्ण गाइड](./convert-pdf-emf-aspose-net-guide/) @@ -65,6 +65,9 @@ Aspose.PDF नेट के लिए एक कोड ट्यूटोरि ### [.NET के लिए Aspose.PDF का उपयोग करके PDF को HTML में बदलें: स्ट्रीम आउटपुट गाइड](./convert-pdf-html-aspose-dotnet-guide/) स्ट्रीम आउटपुट का उपयोग करके .NET के लिए Aspose.PDF के साथ PDF फ़ाइलों को HTML में कनवर्ट करना सीखें। अपने वेब एकीकरण और पहुँच को बढ़ाएँ। +### [C# के साथ PDF को HTML के रूप में सहेजें – पूर्ण चरण‑दर‑चरण गाइड](./save-pdf-as-html-with-c-complete-step-by-step-guide/) +C# में Aspose.PDF का उपयोग करके PDF को HTML में बदलने की पूरी प्रक्रिया सीखें। कोड उदाहरण और सेटअप निर्देश शामिल हैं। + ### [छवियों को सहेजे बिना Aspose.PDF का उपयोग करके .NET में PDF को HTML में बदलें](./convert-pdf-html-net-asposepdf-no-images/) जानें कि .NET के लिए Aspose.PDF का उपयोग करके PDF फ़ाइलों को HTML में कैसे परिवर्तित किया जाए, बिना छवियों को अलग से सहेजे। हमारे विस्तृत गाइड के साथ लेआउट अखंडता बनाए रखें। @@ -198,7 +201,7 @@ Aspose.PDF .NET का उपयोग करके HTML दस्तावे .NET के लिए Aspose.PDF के साथ PDF दस्तावेज़ों को XML में बदलने की कला में महारत हासिल करें। इस व्यापक गाइड का पालन करें और अपने दस्तावेज़ प्रबंधन को बेहतर बनाएँ। ### [.NET के लिए Aspose.PDF का उपयोग करके PDF को XPS में कैसे बदलें: एक डेवलपर गाइड](./convert-pdf-to-xps-aspose-dotnet-guide/) -जानें कि .NET के लिए Aspose.PDF का उपयोग करके PDF फ़ाइलों को XPS फ़ॉर्मेट में कैसे बदला जाए। सेटअप और ऑप्टिमाइज़ेशन युक्तियों सहित हमारे चरण-दर-चरण गाइड का पालन करें। +जानें कि .NET के लिए Aspose.PDF का उपयोग करके PDF फ़ाइल को XPS फ़ॉर्मेट में कैसे बदला जाए। सेटअप और ऑप्टिमाइज़ेशन युक्तियों सहित हमारे चरण-दर-चरण गाइड का पालन करें। ### [Aspose.PDF .NET का उपयोग करके वेब पेजों को PDF में कैसे बदलें: एक व्यापक गाइड](./convert-web-pages-to-pdf-aspose-pdf-net/) इस चरण-दर-चरण ट्यूटोरियल के साथ .NET के लिए Aspose.PDF का उपयोग करके वेब पेजों को PDF में बदलना सीखें। दस्तावेज़ प्रबंधन और ऑफ़लाइन पहुँच के लिए बिल्कुल सही। @@ -227,6 +230,11 @@ Aspose.PDF नेट के लिए एक कोड ट्यूटोरि ### [Aspose.PDF का उपयोग करके .NET में PDF से TIFF रूपांतरण: एक चरण-दर-चरण मार्गदर्शिका](./pdf-to-tiff-conversion-aspose-pdf-net/) .NET के लिए Aspose.PDF का उपयोग करके PDF दस्तावेज़ों को TIFF छवियों में परिवर्तित करना सीखें। कस्टम रंग गहराई और उन्नत छवि प्रसंस्करण तकनीकों में महारत हासिल करें। +### [Aspose के साथ PDF को HTML के रूप में सहेजें – पूर्ण C# गाइड](./save-pdf-as-html-with-aspose-pdf-net-csharp/) + +### [PDF को PDF/X-1a में बदलें, पृष्ठ PNG निर्यात करें और टेक्स्ट स्टैम्प जोड़ें](./convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/) +PDF को PDF/X-1a फ़ॉर्मेट में परिवर्तित करें, पृष्ठ को PNG के रूप में निर्यात करें और टेक्स्ट स्टैम्प जोड़ें। + ## अतिरिक्त संसाधन - [Aspose.PDF for Net दस्तावेज़ीकरण](https://docs.aspose.com/pdf/net/) diff --git a/pdf/hindi/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/hindi/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..5d48b6c78 --- /dev/null +++ b/pdf/hindi/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-29 +description: एक ही प्रक्रिया में PDF को PDF/X‑1a में बदलें और PDF पृष्ठ को PNG के + रूप में निर्यात करें – साथ ही Aspose.Pdf (C#) का उपयोग करके PDF में टेक्स्ट स्टैंप + कैसे जोड़ें, सीखें। +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: hi +og_description: PDF को PDF/X‑1a में बदलें और PDF पेज को PNG में निर्यात करें, साथ + ही टेक्स्ट स्टैम्प PDF जोड़ें – Aspose.Pdf के साथ पूर्ण C# गाइड। +og_title: PDF को PDF/X‑1A में बदलें, पृष्ठ को PNG के रूप में निर्यात करें और टेक्स्ट + स्टैम्प जोड़ें +tags: +- Aspose.Pdf +- C# +- PDF processing +title: पीडीएफ को पीडीएफ/एक्स‑1ए में बदलें, पेज को पीएनजी के रूप में निर्यात करें और + टेक्स्ट स्टैम्प जोड़ें +url: /hi/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF को PDF/X‑1a में बदलें, पेज PNG निर्यात करें और टेक्स्ट स्टैम्प जोड़ें – पूर्ण C# गाइड + +क्या आपको कभी **PDF को PDF/X‑1a में बदलने** की जरूरत पड़ी, लेकिन साथ ही पहले पेज का त्वरित PNG प्रीव्यू और उसी दस्तावेज़ पर एक कस्टम टेक्स्ट स्टैम्प चाहिए था? आप अकेले नहीं हैं। कई प्रोडक्शन पाइपलाइनों में—जैसे प्रिंट‑रेडी प्री‑फ़्लाइटिंग या ऑटोमेटेड रिपोर्ट जेनरेशन—आप अक्सर इस सटीक संयोजन की माँग का सामना करते हैं। + +इस ट्यूटोरियल में हम एक ही, सुसंगत वर्कफ़्लो को चरण‑दर‑चरण देखेंगे जो क्रमशः तीन काम करता है: **PDF को PDF/X‑1a में बदलना**, **PDF पेज को PNG में निर्यात करना**, और **PDF में टेक्स्ट स्टैम्प जोड़ना**। कोड .NET के लिए Aspose.Pdf लाइब्रेरी का उपयोग करता है, इसलिए आप लो‑लेवल PDF इंटर्नल्स से जूझे बिना एक प्रोफेशनल‑ग्रेड समाधान प्राप्त करते हैं। अंत तक आपके पास एक रन‑एबल C# प्रोग्राम होगा जिसे आप किसी भी कंसोल ऐप, Azure Function, या CI स्टेप में डाल सकते हैं। + +> **आपको क्या मिलेगा** – एक पूर्ण सोर्स फ़ाइल, चरण‑बद्ध व्याख्याएँ, सामान्य pitfalls के लिए टिप्स, और आउटपुट को जल्दी से वेरिफ़ाई करने का तरीका। + +## Prerequisites + +- .NET 6.0 या बाद का (API .NET Framework 4.x के साथ भी काम करता है)। +- Aspose.Pdf for .NET NuGet पैकेज (`Aspose.Pdf`) – लेखन के समय संस्करण 23.10 नवीनतम है। +- एक इनपुट PDF (`input.pdf`) और एक ICC प्रोफ़ाइल फ़ाइल (`Coated_Fogra39L_VIGC_300.icc`) जिसे आप नियंत्रित फ़ोल्डर में रखें। +- C# और Visual Studio (या आपका पसंदीदा IDE) की बुनियादी जानकारी। + +यदि इनमें से कोई भी चीज़ अपरिचित लग रही है, तो बस NuGet पैकेज इस प्रकार इंस्टॉल करें: + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +अब चलिए शुरू करते हैं। + +## Step 1: Load the source PDF document + +सबसे पहले हम उस PDF को खोलते हैं जिसपर काम करना है। Aspose.Pdf की `Document` क्लास पूरी फ़ाइल को दर्शाती है, और यह लेज़ीली कंटेंट लोड करती है, इसलिए जब तक आप पेजेस को एक्सेस नहीं करते तब तक कोई परफ़ॉर्मेंस पेनाल्टी नहीं लगती। + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*यह क्यों महत्वपूर्ण है*: दस्तावेज़ को पहले लोड करने से हमें एक ही ऑब्जेक्ट मिलता है जिसे हम कन्वर्ज़न, रेंडरिंग और स्टैम्पिंग के लिए पास कर सकते हैं। यदि आप स्पष्ट लोड को स्किप करके गैर‑मौजूद फ़ाइल पर काम करने की कोशिश करेंगे, तो बाद में आपको एक cryptic `FileNotFoundException` मिलेगा। + +## Step 2: Convert the document to PDF/X‑1a using a custom ICC profile + +PDF/X‑1a प्रिंट‑रेडी PDFs के लिए de‑facto मानक है। इस कन्वर्ज़न स्टेप में आप **Output Intent** (ICC प्रोफ़ाइल) भी एम्बेड कर सकते हैं ताकि डाउनस्ट्रीम RIPs को ठीक‑ठीक पता हो कि रंग कैसे इंटरप्रेट किए जाने चाहिए। + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*Pro tip*: यदि आपको कड़ी एरर हैंडलिंग चाहिए, तो `ConvertErrorAction.Delete` को `ConvertErrorAction.Throw` से बदल दें। इस तरह पहला compliance issue मिलने पर कन्वर्ज़न तुरंत abort हो जाएगा, जो ऑटोमेटेड QA पाइपलाइनों के लिए उपयोगी है। + +## Step 3: Export the first page as a PNG while analyzing fonts + +PNG प्रीव्यू अक्सर तेज़ विज़ुअल चेक या थंबनेल जेनरेशन के लिए आवश्यक होता है। `AnalyzeFonts` को सक्षम करके Aspose सुनिश्चित करता है कि एम्बेडेड फ़ॉन्ट्स सही‑से‑रास्टराइज़ हों, जिससे missing‑glyph समस्याएँ नहीं आतीं। + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +इस प्रक्रिया के बाद आपको `page1.png` स्रोत फ़ाइलों के बगल में मिल जाएगा। इसे किसी भी इमेज व्यूअर में खोलें और पुष्टि करें कि कन्वर्ज़न सही दिख रहा है। + +## Step 4: Add a text stamp that automatically adjusts its font size + +एक **टेक्स्ट स्टैम्प** PDF पर वॉटरमार्क या एनोटेशन जोड़ने का सुविधाजनक तरीका है, बिना मूल कंटेंट स्ट्रीम को बदले। `AutoAdjustFontSizeToFitStampRectangle` सेट करने से लाइब्रेरी टेक्स्ट को स्वचालित रूप से छोटा या बड़ा कर देती है ताकि वह आपके द्वारा परिभाषित रेक्टेंगल के बाहर न जाए। + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*ऑटो‑साइज़ क्यों?* यदि बाद में आप स्टैम्प टेक्स्ट को लंबा (जैसे डायनामिक टाइमस्टैम्प) बदलते हैं, तो आपको मैन्युअली फ़ॉन्ट साइज री‑कैल्कुलेट नहीं करना पड़ेगा—स्टैम्प फ़्लाई पर एडजस्ट हो जाएगा। + +## Step 5: Save the updated PDF document + +अंत में सब कुछ डिस्क पर लिखें। आप मूल फ़ाइल को ओवरराइट कर सकते हैं या एक नई फ़ाइल बना सकते हैं; नीचे दिया गया उदाहरण `output.pdf` बनाता है। + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +सेव पूरा होने पर आपके पास होगा: + +1. एक **PDF/X‑1a** कंप्लायंट फ़ाइल (`output.pdf`)। +2. पहले पेज का **PNG प्रीव्यू** (`page1.png`)। +3. एक **टेक्स्ट स्टैम्प** जो अपने रेक्टेंगल में पूरी तरह फिट बैठता है। + +### Quick verification checklist + +| ✅ जाँच | कैसे सत्यापित करें | +|--------|-------------------| +| PDF/X‑1a अनुपालन | Adobe Acrobat में `output.pdf` खोलें → *Print Production* → *Preflight* और “PDF/X‑1a:2001” चुनें। | +| PNG सही दिख रहा है | `page1.png` को Windows Photo Viewer या किसी भी इमेज एडिटर में खोलें। | +| स्टैम्प दिखाई दे | `output.pdf` को स्क्रॉल करें – टेक्स्ट “Auto‑size” पेज 1 पर केंद्रित होना चाहिए। | + +![PDF को PDF/X‑1a में बदलने का पूर्वावलोकन](image.png "स्टैम्प वाला पेज दिखाते हुए PDF को PDF/X‑1a में बदलने का पूर्वावलोकन") + +*Image alt text*: **ऑटो‑साइज़ टेक्स्ट स्टैम्प के साथ PDF को PDF/X‑1a में बदलने का पूर्वावलोकन** – सभी चरणों के बाद अंतिम PDF को दर्शाता है। + +## Common Variations & Edge Cases + +- **एकाधिक पेजेस** – यदि आपको हर पेज पर स्टैम्प लगाना है, तो `pdfDoc.Pages` पर लूप लगाएँ और लूप के अंदर `AddStamp` कॉल करें। +- **विभिन्न आउटपुट फ़ॉर्मेट** – आर्काइवल PDFs के लिए `PdfFormat.PDF_X_1A` को `PdfFormat.PDF_A_1B` में बदलें। +- **हाई‑रेज़ोल्यूशन PNG** – प्रिंट‑क्वालिटी थंबनेल के लिए `RenderingOptions` में `Resolution = 600` सेट करें। +- **स्टैम्प के लिए कस्टम फ़ॉन्ट** – स्टैम्प जोड़ने से पहले `autoSizeStamp.Font = FontRepository.FindFont("Arial")` असाइन करें। +- **एरर हैंडलिंग** – प्रत्येक प्रमुख स्टेप को `try/catch` में रैप करें और डिबगिंग आसान बनाने के लिए `ConversionException` या `FileNotFoundException` को लॉग करें। + +## Full Working Example (Copy‑Paste Ready) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Setup paths + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Load the source document + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Convert to PDF/X‑1a (print‑ready) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Export first page as PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Add auto‑sizing text stamp (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/hindi/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..d0b88d484 --- /dev/null +++ b/pdf/hindi/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-03-29 +description: Aspose.PDF का उपयोग करके C# में PDF को HTML के रूप में सहेजें। एक ही + ट्यूटोरियल में PDF को HTML में बदलना, छवियों को छोड़ना, और PDF हस्ताक्षर को सत्यापित + करना सीखें। +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: hi +og_description: Aspose.PDF के साथ C# में PDF को HTML के रूप में सहेजें। यह गाइड आपको + दिखाता है कि PDF को HTML में कैसे परिवर्तित करें, छवियों को छोड़ें, और PDF डिजिटल + सिग्नेचर को वैध करें। +og_title: Aspose के साथ PDF को HTML में सहेजें – पूर्ण C# गाइड +tags: +- Aspose.PDF +- C# +- PDF processing +title: Aspose के साथ PDF को HTML में सहेजें – पूर्ण C# गाइड +url: /hi/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose के साथ PDF को HTML के रूप में सहेजें – पूर्ण C# गाइड + +क्या आपने कभी सोचा है कि **PDF को HTML के रूप में सहेजें** बिना सभी एम्बेडेड चित्रों को लाए? शायद आप एक हल्का वेब प्रीव्यू बना रहे हैं और अतिरिक्त इमेज पेलोड आपके पेज की गति को धीमा कर रहा है। अच्छी बात यह है कि आपको कस्टम पार्सर लिखने की जरूरत नहीं है—Aspose.PDF आपके लिए भारी काम कर देता है। इस ट्यूटोरियल में हम **PDF को HTML में बदलेंगे**, चित्रों को हटाएंगे, और फिर **PDF सिग्नेचर को वेरिफाई करेंगे** ताकि यह सुनिश्चित हो सके कि दस्तावेज़ में कोई छेड़छाड़ नहीं हुई है। + +हम हर कोड लाइन को विस्तार से देखेंगे, यह बताएँगे *क्यों* प्रत्येक सेटिंग महत्वपूर्ण है, और बड़े PDFs या गायब सिग्नेचर जैसे किनारे‑केसों को भी छूएँगे। अंत तक आपके पास एक तैयार‑चलाने‑योग्य C# कंसोल ऐप होगा जो साफ़ HTML फ़ाइल बनाता है और डिजिटल सिग्नेचर के लिए स्पष्ट true/false परिणाम देता है। + +## आप क्या सीखेंगे + +- Aspose.PDF के साथ PDF फ़ाइल लोड करें। +- `HtmlSaveOptions` का उपयोग करके **PDF को HTML में बदलें** जबकि इमेजेस को छोड़ें। +- उत्पन्न HTML को डिस्क पर सहेजें। +- `PdfFileSignature` ऑब्जेक्ट सेट अप करके **PDF सिग्नेचर को वेरिफाई करें**। +- बूलियन परिणाम को समझें और सामान्य समस्याओं को संभालें। +- प्रदर्शन और ट्रबलशूटिंग के लिए बोनस टिप्स। + +### पूर्वापेक्षाएँ + +- .NET 6.0 या बाद का (कोड .NET Framework 4.7+ पर भी काम करता है)। +- Aspose.PDF for .NET NuGet पैकेज (वर्ज़न 23.12 या नया)। +- एक साइन किया हुआ PDF (`input.pdf`) जिसमें “Sig1” नामक सिग्नेचर हो। +- C# और कंसोल एप्लिकेशन की बुनियादी समझ। + +> **Pro tip:** यदि आपने अभी तक Aspose.PDF पैकेज इंस्टॉल नहीं किया है, तो अपने प्रोजेक्ट फ़ोल्डर से `dotnet add package Aspose.PDF` चलाएँ। + +## चरण 1: स्रोत PDF दस्तावेज़ लोड करें + +किसी भी काम को करने से पहले हमें PDF का इन‑मेमोरी प्रतिनिधित्व चाहिए। Aspose.PDF का `Document` क्लास फ़ाइल को पढ़ता है और पेजेज़, रिसोर्सेज़ और एनोटेशन का ट्री बनाता है। + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**Why this matters:** दस्तावेज़ को एक बार लोड करने से मेमोरी उपयोग पूर्वानुमेय रहता है। यदि आप लूप में कई PDFs प्रोसेस करने की योजना बना रहे हैं, तो `pdfDocument.Dispose()` कॉल करने के बाद उसी `Document` इंस्टेंस को पुनः उपयोग करने पर विचार करें। + +## चरण 2: HTML सेव विकल्प कॉन्फ़िगर करें – इमेजेस को स्किप करें + +हम **PDF को HTML के रूप में सहेजें** चाहते हैं लेकिन भारी इमेज डेटा के बिना। `HtmlSaveOptions` हमें सूक्ष्म नियंत्रण देता है, और `SkipImages` फ़्लैग Aspose को पूरी तरह `` टैग छोड़ने के लिए कहता है। + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**Why you might skip images:** प्रीव्यू पोर्टल या मोबाइल‑फ़र्स्ट डिज़ाइनों के लिए हर किलोबाइट मायने रखता है। इमेजेस को हटाने से लाइसेंसिंग समस्याओं से भी बचा जा सकता है यदि स्रोत PDF में कॉपीराइटेड ग्राफ़िक्स हों। + +## चरण 3: PDF को इमेजेस के बिना HTML फ़ाइल के रूप में एक्सपोर्ट करें + +अब हम वास्तव में HTML फ़ाइल लिखते हैं। `Save` मेथड ऊपर सेट किए गए विकल्पों का सम्मान करता है। + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**Result you’ll see:** एक `.html` फ़ाइल जिसमें टेक्स्ट कंटेंट, टेबल्स और वेक्टर ग्राफ़िक्स (यदि हों) होंगी, लेकिन कोई `` टैग नहीं होगा। इसे ब्राउज़र में खोलें और आपको मूल PDF का साफ़, इमेज‑फ़्री रेंडरिंग दिखना चाहिए। + +## चरण 4: उसी दस्तावेज़ के लिए सिग्नेचर वेरिफायर तैयार करें + +Aspose.PDF का `PdfFileSignature` क्लास हमें PDF में एम्बेडेड डिजिटल सिग्नेचर को जांचने देता है। हम एक इंस्टेंस बनाएँगे जो पहले लोड किए गए `Document` की ओर इशारा करता है। + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**Note on resource handling:** `using` स्टेटमेंट सुनिश्चित करता है कि वेरिफायर काम खत्म होने पर सभी नेटीव हैंडल रिलीज़ कर दे, जिससे Windows पर फ़ाइल‑लॉक समस्याओं से बचा जा सके। + +## चरण 5: “Sig1” नामक सिग्नेचर को SHA‑3‑256 का उपयोग करके वेरिफाई करें + +अधिकांश PDFs SHA‑256 या SHA‑1 का उपयोग करते हैं, लेकिन Aspose नई SHA‑3 फ़ैमिली को भी सपोर्ट करता है। यहाँ हम स्पष्ट रूप से `Sha3_256` अनुरोध करते हैं। यदि सिग्नेचर गायब है या एल्गोरिद्म मेल नहीं खाता, तो मेथड `false` लौटाता है। + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**What “false” could mean:** + +1. **Signature not found** – संभवतः PDF किसी अलग नाम का उपयोग करता है; `signatureVerifier.GetSignatureNames()` से सिग्नेचर की सूची देखें। +2. **Algorithm mismatch** – PDF SHA‑256 से साइन किया गया हो सकता है; `DigestHashAlgorithm.Sha256` आज़माएँ। +3. **Document altered** – साइनिंग के बाद कोई भी परिवर्तन हैश को अमान्य कर देता है, जिससे `false` मिलता है। + +## सामान्य किनारे मामलों को संभालना + +### बड़े PDFs + +यदि आपका स्रोत PDF कुछ सौ मेगाबाइट से अधिक है, तो **memory‑saving mode** सक्षम करने पर विचार करें: + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +यह पेजेज़ को ऑन‑डिमांड स्ट्रीम करता है, जिससे RAM पर दबाव कम हो जाता है। + +### सिग्नेचर नहीं मिला + +जब आप सिग्नेचर नाम के बारे में अनिश्चित हों, तो उन्हें सूचीबद्ध करें: + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +`VerifySignature` कॉल करने से पहले सूची में से सही नाम चुनें। + +### ब्राउज़र संगतता + +कुछ ब्राउज़र Aspose के डिफ़ॉल्ट CSS वाले HTML को संभालने में दिक्कत पाते हैं। `htmlSaveOptions.EmbedCss = true` (जैसा ऊपर दिखाया गया) सेट करने से स्टाइल्स इनलाइन हो जाते हैं, जिससे फ़ाइल अधिक पोर्टेबल बनती है। + +## पूर्ण कार्यशील उदाहरण + +नीचे पूरा, कॉपी‑एंड‑पेस्ट‑तैयार प्रोग्राम है जिसमें सभी चरण, एरर हैंडलिंग और वैकल्पिक डायग्नॉस्टिक्स शामिल हैं। + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Expected console output** (paths will differ): + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +यदि सिग्नेचर अमान्य है, तो अंतिम लाइन `Signature valid: False` पढ़ेगी। + +## अक्सर पूछे जाने वाले प्रश्न + +**Q: क्या मैं PDF को HTML *के साथ* इमेजेस के साथ कनवर्ट कर सकता हूँ?** +A: बिल्कुल। बस `SkipImages = false` सेट करें (या प्रॉपर्टी को छोड़ दें)। Aspose प्रत्येक इमेज को HTML के बगल में एक सब‑फ़ोल्डर में अलग फ़ाइल के रूप में एम्बेड करेगा। + +**Q: क्या यह Linux पर काम करता है?** +A: हाँ। Aspose.PDF क्रॉस‑प्लेटफ़ॉर्म है; बस सुनिश्चित करें कि `YOUR_DIRECTORY` पाथ्स फॉरवर्ड स्लैश या `Path.Combine` का उपयोग करें। + +**Q: यदि मुझे कस्टम सर्टिफ़िकेट के साथ PDF डिजिटल सिग्नेचर वैलिडेट करना हो तो क्या करें?** +A: `PdfFileSignature.ValidateSignature` ओवरलोड का उपयोग करें जो `X509Certificate2` ऑब्जेक्ट स्वीकार करता है। यह मेथड एक विस्तृत `SignatureInfo` भी लौटाएगा जिसे आप निरीक्षण कर सकते हैं। + +**Q: क्या `aspose convert pdf` केवल C# तक सीमित है?** +A: नहीं। वही API Java, Python और अन्य .NET भाषाओं के लिए भी उपलब्ध है। अवधारणाएँ—load, set options, save, verify—सब समान रहती हैं। + +## निष्कर्ष + +अब आप बिल्कुल जानते हैं कि Aspose.PDF का उपयोग करके **PDF को HTML के रूप में सहेजें**, अनावश्यक इमेजेस को हटाएँ, और एक ही सुव्यवस्थित C# प्रोग्राम में **PDF सिग्नेचर को वेरिफाई करें**। प्रक्रिया सीधी है: लोड करें, विकल्प सेट करें, एक्सपोर्ट करें, और वैलिडेट करें। वैकल्पिक डायग्नॉस्टिक्स और किनारे‑केस हैंडलिंग को कवर करने के बाद, आप इस पैटर्न को बैच जॉब्स, वेब सर्विसेज या डेस्कटॉप यूटिलिटीज़ में अनुकूलित कर सकते हैं। + +अगला कदम तैयार है? इमेजेस को बरकरार रखते हुए **PDF को HTML में कनवर्ट** करने की कोशिश करें, या विभिन्न हैश एल्गोरिद्म के साथ प्रयोग करके **PDF डिजिटल सिग्नेचर को अपने PKI के विरुद्ध वैलिडेट** करें। आप Aspose की PDF‑to‑DOCX कनवर्ज़न या कई PDFs को मर्ज करके एक्सपोर्ट करने की भी खोज कर सकते हैं—ये सभी उसी वर्कफ़्लो के प्राकृतिक विस्तार हैं जिसे हमने अभी बनाया। + +कोडिंग का आनंद लें, और आपकी HTML प्रीव्यूज़ हल्की रहें तथा आपके सिग्नेचर भरोसेमंद रहें! + +![save pdf as html example](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/hindi/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..919ea9ab6 --- /dev/null +++ b/pdf/hindi/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,258 @@ +--- +category: general +date: 2026-03-29 +description: C# और Aspose.PDF का उपयोग करके PDF को HTML के रूप में सहेजें। जानें कि + PDF में पेज कैसे डालें, खाली PDF पेज कैसे जोड़ें, और एक ही प्रक्रिया में PKCS7 डिटैच्ड + सिग्नेचर कैसे बनाएं। +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: hi +og_description: Aspose.PDF के साथ C# में PDF को HTML के रूप में सहेजें। यह गाइड दिखाता + है कि PDF को कैसे लोड करें, पेज कैसे डालें, खाली पेज कैसे जोड़ें, PKCS7 के साथ कैसे + साइन करें, और HTML में कैसे निर्यात करें। +og_title: C# के साथ PDF को HTML में सहेजें – पूर्ण प्रोग्रामिंग ट्यूटोरियल +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: C# के साथ PDF को HTML में सहेजें – पूर्ण चरण‑दर‑चरण गाइड +url: /hi/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# के साथ PDF को HTML के रूप में सहेजें – पूर्ण चरण‑दर‑चरण गाइड + +क्या आपको **PDF को HTML के रूप में सहेजने** की ज़रूरत पड़ी है लेकिन लेआउट को बरकरार रखते हुए स्रोत दस्तावेज़ को कैसे बदलें, इस बारे में अनिश्चित रहे हैं? आप अकेले नहीं हैं—डेवलपर्स अक्सर पेजिनेशन समस्याओं, खाली पृष्ठों और डिजिटल सिग्नेचर को कन्वर्ज़न से पहले संभालते हैं। इस ट्यूटोरियल में हम एक ही, सुसंगत वर्कफ़्लो के माध्यम से यह सब करेंगे, और साथ ही **PDF में पेज सम्मिलित करना**, **खाली PDF पेज जोड़ना**, और **PKCS7 डिटैच्ड सिग्नेचर बनाना** भी दिखाएंगे। + +इस गाइड के अंत तक आपके पास एक तैयार‑चलाने‑योग्य C# प्रोग्राम होगा जो मौजूदा PDF को लोड करता है, उसके पृष्ठों को पुनः आकार देता है, पहले पृष्ठ पर सिग्नेचर लगाता है, और अंत में पूरे दस्तावेज़ को Unicode CMap प्राथमिकता के साथ HTML में एक्सपोर्ट करता है। कोई लटकते रेफ़रेंस नहीं, सिर्फ एक स्व-निहित समाधान जिसे आप किसी भी .NET प्रोजेक्ट में डाल सकते हैं। + +## आपको क्या चाहिए + +- **Aspose.PDF for .NET** (लेखन के समय नवीनतम संस्करण, 23.x)। +- **.NET 6.0** या बाद का – कोड .NET Framework 4.7 के साथ भी कम्पाइल होता है, लेकिन .NET 6 बेहतर प्रदर्शन देता है। +- एक **सर्टिफ़िकेट फ़ाइल** (`.pfx`) और उसका पासवर्ड PKCS7 सिग्नेचर के लिए। +- एक इनपुट PDF (`input.pdf`) जिसे आप बदलना चाहते हैं। + +यदि आपके पास ये सब है, तो हम सीधे कोड की ओर बढ़ सकते हैं। अन्यथा, आधिकारिक साइट से 30‑दिन का मुफ्त Aspose ट्रायल डाउनलोड करें; API भुगतान संस्करण के समान ही है। + +--- + +## चरण 1 – C# में PDF दस्तावेज़ लोड करें (मुख्य कार्रवाई) + +सबसे पहला काम PDF को मेमोरी में लाना है। Aspose की `Document` क्लास यह सब संभालती है। + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*यह क्यों महत्वपूर्ण है:* फ़ाइल को लोड करने से आपको एक परिवर्तनशील ऑब्जेक्ट मॉडल मिलता है। यहाँ से आप **PDF में पेज सम्मिलित करना**, खाली पेज जोड़ना, या सिग्नेचर लागू करना बिना डिस्क पर मूल फ़ाइल को छुए कर सकते हैं। + +--- + +## चरण 2 – एक पेज सम्मिलित करें और खाली PDF पेज जोड़ें + +कभी‑कभी स्रोत PDF में पेजिनेशन की गड़बड़ी होती है—जैसे कोई पेज गायब या दोहराया हुआ। नीचे हम पेज 2 को पेज 1 के तुरंत बाद कॉपी करते हैं, फिर अंत में पूरी तरह से खाली पेज जोड़ते हैं। + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*प्रो टिप:* `UpdatePagination()` फुटर या हेडर में दिखने वाले पेज नंबरों को पुनः गणना करता है जो Aspose द्वारा जेनरेट होते हैं। इस चरण को छोड़ने से अंतिम HTML में पुरानी संख्याएँ रह सकती हैं। + +--- + +## चरण 3 – PKCS7 डिटैच्ड सिग्नेचर बनाएं (SHA‑512) + +डिटैच्ड PKCS7 सिग्नेचर दस्तावेज़ की अखंडता को प्रमाणित करता है बिना सिग्नेचर डेटा को सीधे PDF कंटेंट स्ट्रीम में एम्बेड किए। हम PFX फ़ाइल में संग्रहीत सर्टिफ़िकेट का उपयोग करेंगे। + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*SHA‑512 क्यों?* यह SHA‑256 से मजबूत है जबकि अभी भी व्यापक रूप से समर्थित है। यदि आपको पुराने मानकों के साथ संगतता चाहिए, तो `Sha512` को `Sha256` से बदल दें। + +--- + +## चरण 4 – पेज 1 पर दृश्यमान आयत के साथ डिजिटल सिग्नेचर लागू करें + +हम पहले पेज पर एक दृश्यमान सिग्नेचर फ़ील्ड रखेंगे। आयत यह निर्धारित करती है कि सिग्नेचर इमेज (या प्लेसहोल्डर) कहाँ दिखाई देगा। + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*एज केस:* यदि लक्ष्य पेज में पहले से ही समान नाम का फ़ॉर्म फ़ील्ड मौजूद है, तो API अपवाद फेंकेगा। सिग्नेचर लगाने से पहले फ़ील्ड नामों को अद्वितीय रखें या मौजूदा फ़ील्ड को साफ़ करें। + +--- + +## चरण 5 – Unicode CMap को प्राथमिकता देने के लिए HTML सेव विकल्प कॉन्फ़िगर करें + +HTML में बदलते समय, Aspose फ़ॉन्ट को base‑64 में एम्बेड कर सकता है, सबसेट बना सकता है, या Unicode CMaps पर निर्भर हो सकता है। Unicode को प्राथमिकता देने से फ़ाइल आकार घटता है और टेक्स्ट सर्चेबिलिटी बेहतर होती है। + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*यह क्या करता है?* यह कन्वर्टर को बताता है कि जहाँ संभव हो, कस्टम फ़ॉन्ट एम्बेडिंग के बजाय Unicode CMaps को प्राथमिकता दें, जो बहुभाषी PDFs के लिए आदर्श है। + +--- + +## चरण 6 – साइन किए गए दस्तावेज़ को HTML के रूप में सहेजें + +अंत में, प्रोसेस किए गए PDF को एक HTML फ़ोल्डर के रूप में लिखें (Aspose एक डायरेक्टरी बनाता है जिसमें CSS और इमेज जैसी सहायक फ़ाइलें होती हैं)। + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +यदि आप `cmap.html` को ब्राउज़र में खोलते हैं, तो आपको मूल PDF लेआउट HTML में रेंडर हुआ दिखेगा, जिसमें पेज 1 पर दृश्यमान सिग्नेचर इमेज भी शामिल होगी। + +--- + +## पूर्ण कार्यशील उदाहरण (सभी चरणों का संयोजन) + +नीचे पूरा प्रोग्राम दिया गया है जिसे आप कॉन्सोल ऐप में कॉपी‑पेस्ट कर सकते हैं। इसमें सभी आवश्यक `using` निर्देश और एरर हैंडलिंग शामिल है। + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**अपेक्षित परिणाम:** +- `cmap.html` (मुख्य HTML फ़ाइल) +- `cmap_files` फ़ोल्डर जिसमें CSS, इमेज, और फ़ॉन्ट रिसोर्सेज हैं। +- पहला पेज आपके द्वारा सेट किए गए निर्देशांक पर एक दृश्यमान सिग्नेचर बॉक्स दिखाएगा। + +--- + +## अक्सर पूछे जाने वाले प्रश्न और एज केस + +| प्रश्न | उत्तर | +|----------|--------| +| *क्या मैं सेल्फ‑साइन्ड सर्टिफ़िकेट उपयोग कर सकता हूँ?* | हाँ, Aspose.PDF किसी भी वैध PFX को स्वीकार करता है। बस ध्यान रखें कि ब्राउज़र सिग्नेचर को अविश्वसनीय के रूप में चिह्नित कर सकते हैं। | +| *यदि मुझे कई पृष्ठों पर साइन करना हो तो?* | प्रत्येक पेज के लिए अलग `PdfFileSignature` कॉल बनाएं, या `pageNumber` को अपडेट करने वाले लूप का उपयोग करें। | +| *क्या आयत के बजाय सिग्नेचर इमेज एम्बेड कर सकते हैं?* | `PdfFileSignature.Sign` में `SignatureAppearance` ऑब्जेक्ट के साथ इमेज स्ट्रीम प्रदान करके कर सकते हैं। | +| *मेरे PDF में एन्क्रिप्टेड कंटेंट है—क्या मैं फिर भी कन्वर्ट कर सकता हूँ?* | पहले `pdfDoc.Decrypt("ownerPassword")` से डिक्रिप्ट करें, फिर चरणों को चलाएँ। | +| *क्या HTML मूल PDF से हाइपरलिंक रखेगा?* | Aspose डिफ़ॉल्ट रूप से लिंक एनोटेशन को संरक्षित करता है। यदि लिंक गायब दिखें, तो `htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;` सेट करें। | + +--- + +## निष्कर्ष + +हमने दिखाया कि **PDF को HTML के रूप में सहेजना** कैसे किया जाए, साथ ही **PDF में पेज सम्मिलित करना**, **खाली PDF पेज जोड़ना**, और **PKCS7 डिटैच्ड सिग्नेचर बनाना**—सब कुछ C# के माध्यम से। यह वर्कफ़्लो रैखिक, डिबग करने में आसान, और बड़े प्रोजेक्ट्स के लिए पूरी तरह कस्टमाइज़ेबल है। + +आगे आप देख सकते हैं: + +- **बैच प्रोसेसिंग** – PDFs के फ़ोल्डर को लूप करके प्रत्येक को कन्वर्ट करें। +- **कस्टम CSS** – `HtmlSaveOptions.CustomCss` को अपनी साइट की स्टाइलिंग के अनुसार ट्यून करें। +- **एडवांस्ड सिग्नेचर** – टाइमस्टैम्प सर्वर या LTV (Long‑Term Validation) का उपयोग करके कंप्लायंस‑ग्रेड साइनिंग करें। + +इनका प्रयोग करें, और आपके पास एक मजबूत PDF‑to‑HTML पाइपलाइन होगा जो SEO‑फ्रेंडली और AI असिस्टेंट्स के लिए सिटेशन‑योग्य दोनों है। हैप्पी कोडिंग! + +--- + +![PDF लोड किया गया, पृष्ठ सम्मिलित किए गए, हस्ताक्षर लागू किया गया, फिर HTML आउटपुट दिखाने वाला आरेख](/images/save-pdf-as-html-workflow.png "pdf को html में सहेजने की कार्यप्रवाह") + +*छवि वैकल्पिक पाठ:* **pdf को html में सहेजने की कार्यप्रवाह आरेख** + +{{< /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 85a0f84d5..2eb1f1b4c 100644 --- a/pdf/hindi/net/digital-signatures/_index.md +++ b/pdf/hindi/net/digital-signatures/_index.md @@ -53,6 +53,9 @@ C# में PDF दस्तावेज़ लोड करके उसे PD ### [Aspose के साथ PDF हस्ताक्षर सत्यापित करें – PDF को HTML में परिवर्तित करें](./validate-pdf-signature-with-aspose-convert-pdf-to-html/) Aspose का उपयोग करके PDF हस्ताक्षर की वैधता जांचें और PDF को HTML में बदलें। +### [PDF पर हस्ताक्षर कैसे करें और छवियाँ जोड़ें – पूर्ण C# गाइड](./how-to-sign-pdf-and-add-images-complete-c-guide/) +C# में PDF पर डिजिटल हस्ताक्षर जोड़ने और छवियों को सम्मिलित करने की पूरी प्रक्रिया सीखें। + ## अतिरिक्त संसाधन - [Aspose.PDF for Net दस्तावेज़ीकरण](https://docs.aspose.com/pdf/net/) diff --git a/pdf/hindi/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/hindi/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..d2b199ef0 --- /dev/null +++ b/pdf/hindi/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-03-29 +description: C# में डिजिटल सिग्नेचर के साथ PDF पर साइन कैसे करें और क्रॉप की गई इमेज + जोड़ें। डिजिटल सिग्नेचर PDF जोड़ना, PDF के लिए इमेज क्रॉप करना, और आसानी से PDF + में इमेज जोड़ना सीखें। +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: hi +og_description: Aspose.Pdf का उपयोग करके C# में डिजिटल सिग्नेचर के साथ PDF पर साइन + कैसे करें और क्रॉप की गई छवि एम्बेड करें। पूर्ण समाधान के लिए इस गाइड का पालन करें। +og_title: PDF पर साइन कैसे करें और इमेज जोड़ें – चरण‑दर‑चरण C# ट्यूटोरियल +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: PDF पर साइन कैसे करें और इमेज जोड़ें – पूर्ण C# गाइड +url: /hi/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF को साइन कैसे करें और इमेज जोड़ें – पूर्ण C# गाइड + +क्या आपने कभी सोचा है कि प्रोग्रामेटिकली **PDF को कैसे साइन करें** जबकि एक कस्टम तस्वीर भी डालें? शायद आप एक अनुमोदन वर्कफ़्लो बना रहे हैं और आपको एक कानूनी रूप से बाध्यकारी हस्ताक्षर *और* साइनर की फोटो का थंबनेल उसी पेज पर चाहिए। संक्षेप में, आप **डिजिटल सिग्नेचर PDF** कंटेंट जोड़ना चाहते हैं, उस तस्वीर को क्रॉप करना चाहते हैं, और फिर **PDF में इमेज जोड़ना** बिना किसी परेशानी के। + +यह ट्यूटोरियल आपको हर कदम पर ले जाता है—ECDSA PKCS#7 प्रमाणपत्र लोड करने से लेकर JPEG को क्रॉप करने और उसे साइन किए गए पेज पर स्टैम्प करने तक। अंत तक आपके पास एक एकल, चलाने योग्य C# फ़ाइल होगी जो पेज 1 को साइन करती है, फोटो को 400 × 400 px तक क्रॉप करती है, और उसे एक सटीक स्थान पर रखती है। कोई बाहरी स्क्रिप्ट नहीं, कोई जादू नहीं, सिर्फ स्पष्ट कोड और व्याख्याएँ। + +## पूर्वापेक्षाएँ + +- .NET 6.0 या बाद का संस्करण (कोड .NET Framework 4.7+ के साथ भी काम करता है) +- **Aspose.Pdf for .NET** NuGet पैकेज (संस्करण 23.9 या नया) +- PKCS#7 (`.pfx`) फ़ॉर्मेट में एक ECDSA P‑256 प्रमाणपत्र और उसका पासवर्ड +- एक JPEG इमेज जिसे आप एम्बेड करना चाहते हैं (उदा., `photo.jpg`) + +> **Pro tip:** अपने प्रमाणपत्र फ़ाइल को सोर्स कंट्रोल से बाहर रखें और पासवर्ड को एक सीक्रेट मैनेजर से सुरक्षित रखें। + +--- + +## चरण 1: प्रोजेक्ट सेट अप करें और इम्पोर्ट्स जोड़ें + +पहले, एक कंसोल ऐप बनाएं (या इसे किसी मौजूदा सर्विस में इंटीग्रेट करें)। Aspose.Pdf रेफ़रेंस जोड़ें: + +```bash +dotnet add package Aspose.Pdf +``` + +फिर आवश्यक नेमस्पेसेज़ शामिल करें: + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +ये `using` स्टेटमेंट्स आपको `Document`, `Signature`, और `Rectangle` क्लासेज़ तक पहुंच देते हैं जिनकी हमें बाद में ज़रूरत होगी। + +## चरण 2: PDF लोड करें और सिग्नेचर तैयार करें + +हम एक मौजूदा PDF (`source.pdf`) खोलेंगे और एक **डिजिटल सिग्नेचर PDF** ऑब्जेक्ट बनाएंगे जो PKCS#7 डिटैच्ड सिग्नेचर का उपयोग करता है। प्रमाणपत्र एक ECDSA P‑256 कुंजी है, जो अनुपालन के लिए व्यापक रूप से स्वीकार्य है। + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**क्यों महत्वपूर्ण है:** डिटैच्ड PKCS#7 सिग्नेचर मूल PDF कंटेंट को अपरिवर्तित रखता है जबकि एक क्रिप्टोग्राफ़िक हैश एम्बेड करता है। यह कानूनी रूप से बाध्यकारी PDFs के लिए उद्योग‑मानक तरीका है। + +## चरण 3: विशिष्ट पेज पर डिजिटल सिग्नेचर लागू करें + +अब हम **पेज 1** पर दृश्यमान सिग्नेचर फ़ील्ड रखेंगे। रेक्टेंगल निर्धारित करता है कि सिग्नेचर बॉक्स कहाँ दिखाई देगा (कोऑर्डिनेट्स पॉइंट्स में होते हैं, जहाँ 1 इंच = 72 पॉइंट्स)। + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +यदि आपको दृश्यमान बॉक्स की ज़रूरत नहीं है, तो `isVisible` को `false` सेट करें। `signatureRect` को अपने डॉक्यूमेंट लेआउट के अनुसार समायोजित किया जा सकता है। + +## चरण 4: इमेज स्ट्रीम खोलें और क्रॉप एरिया परिभाषित करें + +हम JPEG फ़ाइल को एक स्ट्रीम में पढ़ेंगे और एक **स्रोत रेक्टेंगल** निर्दिष्ट करेंगे जो टॉप‑लेफ़्ट 400 × 400 पिक्सेल चुनता है। यह **क्रॉप इमेज फॉर PDF** ऑपरेशन है। + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **Edge case:** यदि आपकी इमेज 400 × 400 से छोटी है, तो क्रॉप स्वचालित रूप से इमेज के वास्तविक आयामों तक सीमित हो जाएगा—कोई एक्सेप्शन नहीं फेंका जाएगा। + +## चरण 5: निर्धारित करें कि क्रॉप की गई इमेज कहाँ दिखेगी + +अब PDF पेज पर **डेस्टिनेशन रेक्टेंगल** सेट करें। इस उदाहरण में हम इमेज को (50, 50) पर 200 × 200 पॉइंट्स (≈2.78 इंच वर्ग) आकार में रख रहे हैं। + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +इसे आज़माएँ: X/Y कोऑर्डिनेट्स बदलकर तस्वीर को मूव करें, या स्केलिंग के लिए चौड़ाई/ऊँचाई समायोजित करें। + +## चरण 6: क्रॉप की गई इमेज को साइन किए गए पेज पर डालें + +अंत में, हम इमेज को **पेज 1** पर जोड़ते हैं (वही पेज जिसमें अब सिग्नेचर है)। हम जो `AddImage` ओवरलोड उपयोग कर रहे हैं, वह स्रोत और डेस्टिनेशन रेक्टेंगल दोनों को स्वीकार करता है, जिससे एक ही कॉल में क्रॉप और प्लेसमेंट दोनों हो जाते हैं। + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +पर्दे के पीछे, Aspose.Pdf 400 × 400 पिक्सेल क्षेत्र को निकालता है, उसे 200 × 200 पॉइंट्स में रिस्केल करता है, और PDF कंटेंट स्ट्रीम में लिख देता है। + +## चरण 7: साइन किए गए और इमेज‑एन्हांस्ड PDF को सेव करें + +सभी बदलावों के बाद, डॉक्यूमेंट को स्थायी बनाएं। आप मूल फ़ाइल को ओवरराइट कर सकते हैं या नई फ़ाइल में लिख सकते हैं। + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +जब आप `output_signed.pdf` को Adobe Acrobat या किसी भी PDF व्यूअर में खोलेंगे, तो आपको दिखेगा: + +- आपने निर्दिष्ट कोऑर्डिनेट्स पर एक दृश्यमान सिग्नेचर फ़ील्ड। +- (50, 50) पर पेज 1 में रखी गई क्रॉप की गई फोटो। +- डिजिटल सिग्नेचर वैध (यदि व्यूअर आपके प्रमाणपत्र पर भरोसा करता है)। + +## अक्सर पूछे जाने वाले प्रश्न (FAQ) + +| प्रश्न | उत्तर | +|----------|--------| +| **क्या मैं किसी अलग पेज को साइन कर सकता हूँ?** | `signature.Sign` में `pageNumber` आर्ग्यूमेंट को किसी भी वैध पेज इंडेक्स (1‑आधारित) में बदलें। | +| **यदि मुझे कई सिग्नेचर चाहिए तो क्या करें?** | प्रत्येक पेज या लोकेशन के लिए एक नया `Signature` इंस्टेंस बनाएं, और यदि वही प्रमाणपत्र लागू हो तो वही `pkcsSignature` पुनः उपयोग करें। | +| **क्या इमेज क्रॉपिंग केवल रेक्टेंगल तक सीमित है?** | हाँ, Aspose.Pdf का `AddImage` केवल आयताकार क्षेत्रों को सपोर्ट करता है। जटिल आकारों के लिए आपको इमेज को पहले (जैसे System.Drawing से) प्री‑प्रोसेस करना पड़ेगा। | +| **सिग्नेचर को अदृश्य कैसे बनाऊँ?** | `isVisible` को `false` सेट करें और `signatureRect` को छोड़ दें। सिग्नेचर फिर भी क्रिप्टोग्राफ़िक रूप से वैध रहेगा। | +| **JPEG के अलावा कौन‑से फ़ॉर्मेट एम्बेड कर सकते हैं?** | PNG, BMP, GIF, और TIFF सभी समर्थित हैं। बस फ़ाइल पाथ बदलें और सुनिश्चित करें कि स्ट्रीम सही बाइट्स पढ़े। | + +## पूर्ण कार्यशील उदाहरण + +नीचे पूरा, स्व-निहित प्रोग्राम दिया गया है। इसे `Program.cs` में कॉपी‑पेस्ट करें, पाथ्स को समायोजित करें, और चलाएँ। + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**अपेक्षित परिणाम:** `output_signed.pdf` खोलने पर एक सिग्नेचर फ़ील्ड (100 × 100 → 300 × 300 पॉइंट्स) और `photo.jpg` के टॉप‑लेफ़्ट कोने से निकाली गई 200 × 200‑पॉइंट्स की तस्वीर दिखाई देगी। सिग्नेचर प्रदान किए गए ECDSA प्रमाणपत्र के विरुद्ध वैधता दर्शाएगा। + +## निष्कर्ष + +हमने **PDF को कैसे साइन करें** फ़ाइलें, कैसे **डिजिटल सिग्नेचर PDF** को विशिष्ट पेज पर जोड़ें, कैसे **क्रॉप इमेज फॉर PDF** करें, और अंत में कैसे **इमेज को PDF में जोड़ें** Aspose.Pdf का उपयोग करके C# में किया, यह सब कवर किया। प्रमाणपत्र लोड करने से लेकर अंतिम डॉक्यूमेंट सेव करने तक का पूरा फ्लो एक ही आसान‑से‑पढ़े जाने वाले स्रोत फ़ाइल में फिट बैठता है। + +यदि आप अगली चुनौती के लिए तैयार हैं, तो विचार करें: + +- विभिन्न पेजों पर **एकाधिक सिग्नेचर** जोड़ना (“डिजिटल सिग्नेचर PDF पेज” कॉन्सेप्ट का उपयोग करें)। +- **QR कोड** एम्बेड करना जो वेरिफिकेशन सर्विसेज़ से लिंक करता हो। +- ASP.NET Core API में प्रक्रिया को ऑटोमेट करना ताकि ऑन‑द‑फ़्लाई 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/hindi/net/programming-with-security-and-signatures/_index.md b/pdf/hindi/net/programming-with-security-and-signatures/_index.md index a229655fe..da9d796dd 100644 --- a/pdf/hindi/net/programming-with-security-and-signatures/_index.md +++ b/pdf/hindi/net/programming-with-security-and-signatures/_index.md @@ -35,6 +35,7 @@ | [हस्ताक्षर फ़ील्ड का उपयोग करके स्मार्ट कार्ड से हस्ताक्षर करें](./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 हस्ताक्षर कैसे पढ़ें, इस चरण-दर-चरण मार्गदर्शिका में जानें। | | [PDF फ़ाइलों की मरम्मत कैसे करें – Aspose.Pdf के साथ पूर्ण C# गाइड](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | Aspose.Pdf का उपयोग करके C# में PDF फ़ाइलों को ठीक करने के चरण-दर-चरण मार्गदर्शन। | +| [PDF डिजिटल हस्ताक्षर सत्यापित करें – पूर्ण C# गाइड](./validate-pdf-digital-signature-complete-c-guide/) | C# में Aspose.PDF का उपयोग करके PDF डिजिटल हस्ताक्षर कैसे सत्यापित करें, इस पूर्ण गाइड में सीखें। | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/hindi/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/hindi/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..c4fb5a05e --- /dev/null +++ b/pdf/hindi/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,262 @@ +--- +category: general +date: 2026-03-29 +description: PDF डिजिटल हस्ताक्षर को जल्दी से मान्य करें। सीखें कि PDF हस्ताक्षर को + कैसे सत्यापित करें, PDF हस्ताक्षर की स्थिति जांचें, और Aspose.Pdf के साथ C# में + छेड़छाड़ किए गए PDF का पता लगाएँ। +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: hi +og_description: C# में PDF डिजिटल सिग्नेचर को वैध करें। यह ट्यूटोरियल दिखाता है कि + कैसे PDF सिग्नेचर को सत्यापित करें, PDF सिग्नेचर की अखंडता जांचें, और Aspose.Pdf + का उपयोग करके छेड़छाड़ किए गए PDF का पता लगाएँ। +og_title: PDF डिजिटल हस्ताक्षर को सत्यापित करें – पूर्ण C# गाइड +tags: +- C# +- Aspose.Pdf +- PDF Security +title: PDF डिजिटल हस्ताक्षर को सत्यापित करें – पूर्ण C# गाइड +url: /hi/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF डिजिटल सिग्नेचर को वैलिडेट करें – पूर्ण C# गाइड + +क्या आपने कभी सोचा है **PDF सिग्नेचर को कैसे वेरिफ़ाई करें** बिना सिर दर्द हुए? शायद आपको कोई कॉन्ट्रैक्ट मिला, उसे खोला, और आपको 100 % यकीन चाहिए था कि वह बदला नहीं गया है। अच्छी खबर यह है कि आपको फॉरेंसिक लैब की जरूरत नहीं—सिर्फ कुछ ही C# लाइनों और Aspose.Pdf से आप **PDF डिजिटल सिग्नेचर को वैलिडेट** कर सकते हैं। + +इस ट्यूटोरियल में हम वह सब कवर करेंगे जो आपको जानना ज़रूरी है: लाइब्रेरी को इंस्टॉल करने से लेकर परिणाम को समझने तक, और यहाँ तक कि कई सिग्नेचर या दूषित फ़ाइल जैसे किनारे के मामलों को भी हैंडल करना। अंत तक आप प्रोग्रामेटिकली **PDF सिग्नेचर की जाँच** कर पाएँगे और **टैम्पर्ड PDF** फ़ाइलों को समस्या बनने से पहले ही **डिटेक्ट** कर पाएँगे। + +## आपको क्या चाहिए + +- **.NET 6.0 या बाद का** (कोड .NET Framework पर भी काम करता है, लेकिन .NET 6 सबसे उपयुक्त है)। +- **Aspose.Pdf for .NET** – इसे आप NuGet से प्राप्त कर सकते हैं (`Install-Package Aspose.Pdf`)। +- एक **साइन किया हुआ PDF** जिसे आप टेस्ट करना चाहते हैं। अगर आपके पास नहीं है, तो Adobe Acrobat या किसी भी PDF साइनर से एक साधा साइन किया हुआ डॉक्यूमेंट बनाएँ। + +> **Pro tip:** अपने PDF फ़ाइलों को प्रोजेक्ट की रूट फ़ोल्डर से बाहर रखें; `./Samples/signed.pdf` जैसा रिलेटिव पाथ ठीक काम करता है और संवेदनशील फ़ाइलों के आकस्मिक कमिट से बचाता है। + +## चरण‑दर‑चरण कार्यान्वयन + +नीचे हम समाधान को तार्किक हिस्सों में बाँटते हैं। प्रत्येक भाग का अपना H2 हेडर है—उनमें से एक में मुख्य कीवर्ड भी शामिल है, जिससे SEO नियम भी पूरा होता है। + +### ## Step 1 – Aspose.Pdf को इंस्टॉल और रेफ़रेंस करें + +सबसे पहले, NuGet पैकेज को अपने प्रोजेक्ट में जोड़ें: + +```powershell +dotnet add package Aspose.Pdf +``` + +या, अगर आप पैकेज मैनेजर कंसोल का उपयोग कर रहे हैं: + +```powershell +Install-Package Aspose.Pdf +``` + +पैकेज इंस्टॉल होने के बाद, Visual Studio स्वचालित रूप से `using Aspose.Pdf;` नेमस्पेस जोड़ देगा। अतिरिक्त DLL जुग्लिंग की जरूरत नहीं। + +### ## Step 2 – साइन किए गए PDF दस्तावेज़ को लोड करें + +अब हम वास्तव में फ़ाइल खोलते हैं। `using` स्टेटमेंट सुनिश्चित करता है कि डॉक्यूमेंट सही तरीके से डिस्पोज़ हो, जो बड़े PDF के लिए विशेष रूप से महत्वपूर्ण है। + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +> **Why this matters:** डॉक्यूमेंट लोड करने से हमें `DigitalSignatureInfo` ऑब्जेक्ट तक पहुंच मिलती है, जो सभी सिग्नेचर‑संबंधित क्वेरीज़ का एंट्री पॉइंट है। + +### ## Step 3 – डिजिटल सिग्नेचर जानकारी प्राप्त करें + +Aspose.Pdf लो‑लेवल PKI विवरणों को एक फ्रेंडली API में रैप करता है। `DigitalSignatureInfo` प्रॉपर्टी को प्राप्त करें और आपके पास **PDF सिग्नेचर की जाँच** करने के लिए सभी आवश्यक चीज़ें होंगी। + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +यदि PDF में कई सिग्नेचर हैं, तो `signatureInfo` उन्हें एकत्रित करता है, और `Count`, `Certificates`, तथा `IsCompromised` जैसी प्रॉपर्टीज़ उपलब्ध कराता है। एकल‑सिग्नेचर फ़ाइल में ये कलेक्शन केवल एक एंट्री रखेंगे। + +### ## Step 4 – निर्धारित करें कि सिग्नेचर समझौता हुआ है या नहीं + +`IsCompromised` फ़्लैग बताता है कि दस्तावेज़ को साइन होने के **बाद** में बदला गया है या नहीं। `true` मान का मतलब है PDF टैम्पर्ड है—यही वह चीज़ है जिसे हम **टैम्पर्ड PDF** डिटेक्ट करना चाहते हैं। + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +यदि आपको **PDF सिग्नेचर को और अधिक गहराई से वेरिफ़ाई** करना है (जैसे प्रमाणपत्र चेन वैधता), तो आप `signatureInfo.Certificates` को देख सकते हैं और प्रत्येक पर `Validate()` कॉल कर सकते हैं। अधिकांश उपयोग‑केस के लिए `IsCompromised` पर्याप्त है। + +### ## Step 5 – परिणाम को कंसोल पर आउटपुट करें + +अंत में, उपयोगकर्ता को बताएं कि क्या हुआ। हम एक फ्रेंडली संदेश प्रिंट करेंगे और ऑटोमेशन स्क्रिप्ट्स के लिए उपयुक्त एग्ज़िट कोड भी रिटर्न करेंगे। + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### अपेक्षित आउटपुट + +``` +Signature compromised: False +``` + +यदि आप जानबूझकर PDF को टैम्पर करते हैं (जैसे एक अतिरिक्त कैरेक्टर जोड़ते हैं), तो आउटपुट `True` में बदल जाएगा। यही वह क्षण है जब आपको पता चलता है कि दस्तावेज़ की इंटेग्रिटी टूट गई है। + +### ## किनारे के मामलों और सामान्य जालों को संभालना + +#### 1. कई सिग्नेचर + +जब PDF में एक से अधिक साइनर हों, तो `IsCompromised` *कुल* स्थिति दर्शाता है—यदि **कोई** सिग्नेचर टूट गया हो, तो फ़्लैग `true` हो जाता है। यह पता लगाने के लिए कि कौन सा साइनर दोषी है: + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. सिग्नेचर गायब + +यदि PDF बिल्कुल साइन नहीं किया गया है, तो `signatureInfo.Count` `0` होगा। आपको एक झूठी सुरक्षा भावना से बचने के लिए इसे हैंडल करना चाहिए: + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. दूषित PDF फ़ाइल + +एक दूषित फ़ाइल `PdfException` थ्रो करती है। लोडिंग लॉजिक को try‑catch में रैप करें ताकि साफ़ एरर मैसेज दिया जा सके: + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. प्रमाणपत्र वैधता (उन्नत) + +यदि आपको यह सुनिश्चित करना है कि साइनिंग प्रमाणपत्र अभी भी वैध है (रिवोक्ड नहीं, वैधता अवधि के भीतर), तो आप कॉल कर सकते हैं: + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +यह कदम आपको साधारण **PDF सिग्नेचर की जाँच** से एक पूर्ण **PDF सिग्नेचर को वेरिफ़ाई कैसे करें** वर्कफ़्लो की ओर ले जाता है। + +### ## पूर्ण कार्यशील उदाहरण + +सब कुछ मिलाकर, यहाँ पूरा, तैयार‑चलाने‑योग्य प्रोग्राम है: + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +कमांड लाइन से प्रोग्राम चलाएँ: + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +आपको एक स्पष्ट रिपोर्ट दिखनी चाहिए जो बताती है कि PDF अखंड है या नहीं, कौन‑से साइनर शामिल हैं, और क्या उनके प्रमाणपत्र अभी भी भरोसेमंद हैं। + +## दृश्य अवलोकन + +नीचे एक त्वरित आरेख है जो **PDF लोड** से **वैधता परिणाम आउटपुट** तक के प्रवाह को दर्शाता है। यह बड़े डॉक्यूमेंट‑प्रोसेसिंग पाइपलाइन की आर्किटेक्चर स्केच करते समय एक उपयोगी रेफ़रेंस है। + +![PDF डिजिटल सिग्नेचर वैधता कार्यप्रवाह आरेख](image.png "आरेख जो PDF लोड → DigitalSignatureInfo → IsCompromised जांच को दर्शाता है") + +*Alt text: PDF डिजिटल सिग्नेचर वैधता कार्यप्रवाह आरेख* + +## निष्कर्ष + +हमने Aspose.Pdf का उपयोग करके C# में **PDF डिजिटल सिग्नेचर को वैलिडेट करने का पूर्ण, एंड‑टू‑एंड समाधान** कवर किया। मुख्य बिंदु: + +- `Document` से PDF लोड करें। +- `DigitalSignatureInfo` निकालें और `IsCompromised` की जाँच करके **टैम्पर्ड PDF** डिटेक्ट करें। +- कई सिग्नेचर, गायब सिग्नेचर, और दूषित फ़ाइलों को सहजता से हैंडल करें। +- पूर्ण **PDF सिग्नेचर को वेरिफ़ाई कैसे करें** चेकलिस्ट के लिए साइनिंग प्रमाणपत्र को वैधता भी जोड़ें। + +अब आप इस लॉजिक को आगे बढ़ा सकते हैं—वैलिडेशन परिणाम को डेटाबेस में स्टोर करें, वेब API में अनसाइन्ड अपलोड को रेजेक्ट करें, या डॉक्यूमेंट‑मैनेजमेंट सिस्टम के साथ इंटीग्रेट करें। अगर आप अन्य PDF सुरक्षा सुविधाओं में रुचि रखते हैं, तो **PDF सिग्नेचर टाइमस्टैम्प की जाँच**, **नया सिग्नेचर जोड़ना**, या **PDF एन्क्रिप्ट करना** देखें। + +क्या आपके पास किनारे के मामलों के बारे में प्रश्न हैं, या आप iText 7 जैसे किसी अन्य लाइब्रेरी के साथ **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/hongkong/net/conversion-export/_index.md b/pdf/hongkong/net/conversion-export/_index.md index 1f020fa27..f9d1f5065 100644 --- a/pdf/hongkong/net/conversion-export/_index.md +++ b/pdf/hongkong/net/conversion-export/_index.md @@ -227,6 +227,15 @@ Aspose.PDF Net 程式碼教學 ### [使用 Aspose.PDF 在 .NET 中將 PDF 轉換為 TIFF:逐步指南](./pdf-to-tiff-conversion-aspose-pdf-net/) 了解如何使用 Aspose.PDF for .NET 將 PDF 文件轉換為 TIFF 影像。掌握自訂色彩深度和先進的影像處理技術。 +### [使用 Aspose.PDF .NET 將 PDF 轉換為 HTML:完整 C# 指南](./save-pdf-as-html-with-csharp-guide/) +了解如何使用 Aspose.PDF .NET 有效率地將 HTML 文件轉換為具有專業外觀的 PDF。探索處理外部資源和呈現複雜內容的技術。 + +### [使用 C# 將 PDF 儲存為 HTML – 完整逐步指南](./save-pdf-as-html-with-c-complete-step-by-step-guide/) +了解如何使用 C# 與 Aspose.PDF 完整步驟將 PDF 轉換並儲存為 HTML,涵蓋設定、程式碼範例與最佳實踐。 + +### [將 PDF 轉換為 PDF/X-1a、匯出頁面 PNG 並新增文字印章](./convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/) +學習使用 Aspose.PDF for .NET 將 PDF 轉換為 PDF/X-1a 標準,同時匯出頁面為 PNG 並在 PDF 上添加文字印章。 + ## 其他資源 - [Aspose.PDF 用於網頁文檔](https://docs.aspose.com/pdf/net/) diff --git a/pdf/hongkong/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/hongkong/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..61fbbaeea --- /dev/null +++ b/pdf/hongkong/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-03-29 +description: 將 PDF 轉換為 PDF/X-1a 並在同一流程中匯出 PDF 頁面為 PNG – 同時學習如何使用 Aspose.Pdf (C#) 為 + PDF 添加文字印章。 +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: zh-hant +og_description: 將 PDF 轉換為 PDF/X‑1a,並在加入文字印章的同時匯出 PDF 頁面為 PNG – 完整 C# 教學,使用 Aspose.Pdf. +og_title: 將 PDF 轉換為 PDF/X-1a、匯出頁面 PNG 並加入文字印章 +tags: +- Aspose.Pdf +- C# +- PDF processing +title: 將 PDF 轉換為 PDF/X‑1a、匯出頁面 PNG 並加入文字印章 +url: /zh-hant/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 將 PDF 轉換為 PDF/X‑1a、匯出頁面 PNG 並加入文字印章 – 完整 C# 指南 + +是否曾需要 **convert pdf to pdf/x-1a**,同時想要快速取得第一頁的 PNG 預覽圖,並在同一份文件上加上自訂文字印章?你並不孤單。 +在許多生產流程中——例如列印就緒的預檢或自動化報告產生——你常會遇到這樣的需求組合。 + +在本教學中,我們將逐步說明一個單一且完整的工作流程,依序執行三件事:**convert pdf to pdf/x-1a**、**export pdf page png**,以及 **add text stamp pdf**。程式碼使用 Aspose.Pdf for .NET 函式庫,讓你不必與低階 PDF 內部結構糾纏,即可取得專業等級的解決方案。完成後,你將擁有一個可執行的 C# 程式,能直接放入任何 Console 應用程式、Azure Function 或 CI 步驟中。 + +> **你將獲得** – 完整的原始檔案、逐步說明、常見陷阱的提示,以及快速驗證輸出的方式。 + +## 前置條件 + +- .NET 6.0 或更新版本(此 API 亦支援 .NET Framework 4.x)。 +- Aspose.Pdf for .NET NuGet 套件(`Aspose.Pdf`)– 版本 23.10 為撰寫本文時的最新版本。 +- 一個輸入 PDF(`input.pdf`)與一個 ICC 色彩描述檔(`Coated_Fogra39L_VIGC_300.icc`),放置於你自行管理的資料夾中。 +- 具備 C# 與 Visual Studio(或你慣用的 IDE)的基本知識。 + +如果上述任一項目你不熟悉,只需使用以下指令安裝 NuGet 套件: + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +現在讓我們開始。 + +## 步驟 1:載入來源 PDF 文件 + +我們首先要做的事是開啟要處理的 PDF。Aspose.Pdf 的 `Document` 類別代表整個檔案,且會延遲載入內容,只有在實際存取頁面時才會產生效能開銷。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*為何重要*:提前載入文件可取得單一物件,供後續的轉換、渲染與印章使用。若省略明確載入而直接操作不存在的檔案,稍後會拋出難以理解的 `FileNotFoundException`。 + +## 步驟 2:使用自訂 ICC 色彩描述檔將文件轉換為 PDF/X‑1a + +PDF/X‑1a 是列印就緒 PDF 的事實標準。轉換步驟同時允許嵌入 **Output Intent**(ICC 色彩描述檔),讓後續的 RIP 能精確知道顏色該如何詮釋。 + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*專業提示*:若需更嚴格的錯誤處理,可將 `ConvertErrorAction.Delete` 改為 `ConvertErrorAction.Throw`。如此一來,轉換會在第一個不合規問題時即中止,對自動化 QA 流程相當有用。 + +## 步驟 3:在分析字型的同時將第一頁匯出為 PNG + +PNG 預覽常用於快速目視檢查或產生縮圖。啟用 `AnalyzeFonts` 後,Aspose 會確保所有嵌入字型正確點陣化,避免出現缺字的情況。 + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +執行完畢後,你會在來源檔案旁看到 `page1.png`。使用任何影像檢視器開啟,以確認轉換結果正確。 + +## 步驟 4:加入會自動調整字型大小的文字印章 + +**文字印章** 是在不改變底層內容串流的情況下,為 PDF 加上浮水印或註解的便利方式。設定 `AutoAdjustFontSizeToFitStampRectangle` 後,函式庫會自動縮放文字,使其永不超出你所定義的矩形範圍。 + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*為何使用自動調整大小*?若之後將印章文字改為較長的內容(例如動態時間戳),就不必手動重新計算字型大小——印章會即時自動調整。 + +## 步驟 5:儲存更新後的 PDF 文件 + +最後,將所有變更寫回磁碟。你可以覆寫原始檔案,或產生全新檔案;以下範例會建立 `output.pdf`。 + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +儲存完成後,你將擁有: + +1. 符合 **PDF/X‑1a** 標準的檔案 (`output.pdf`). +2. 第一頁的 **PNG 預覽** (`page1.png`). +3. 完美貼合其矩形範圍的 **文字印章**。 + +### 快速驗證清單 + +| ✅ 檢查 | 驗證方式 | +|--------|----------| +| PDF/X‑1a 合規性 | 在 Adobe Acrobat 中開啟 `output.pdf` → *Print Production* → *Preflight*,並選取 “PDF/X‑1a:2001”。 | +| PNG 正確性 | 在 Windows Photo Viewer 或任何影像編輯器中開啟 `page1.png`。 | +| 印章顯示 | 在 `output.pdf` 中捲動檢視 – 文字 “Auto‑size” 應位於第 1 頁的中央。 | + +![convert pdf to pdf/x-1a 預覽](image.png "convert pdf to pdf/x-1a 預覽(顯示已加印章的頁面)") + +*Image alt text*: **convert pdf to pdf/x-1a 預覽(含 auto‑size 文字印章)** – 示範所有步驟完成後的最終 PDF。 + +## 常見變化與邊緣情況 + +- **Multiple pages** – 若需在每頁加印章,可遍歷 `pdfDoc.Pages`,在迴圈內呼叫 `AddStamp`。 +- **Different output format** – 將 `PdfFormat.PDF_X_1A` 改為 `PdfFormat.PDF_A_1B`,即可產生適合保存的 PDF。 +- **Higher‑resolution PNG** – 在 `RenderingOptions` 中將 `Resolution = 600`,以取得列印品質的縮圖。 +- **Custom font for the stamp** – 在加入印章前,設定 `autoSizeStamp.Font = FontRepository.FindFont("Arial")` 以使用自訂字型。 +- **Error handling** – 為每個主要步驟加上 `try/catch`,並記錄 `ConversionException` 或 `FileNotFoundException`,以便除錯。 + +## 完整可執行範例(直接複製貼上) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Setup paths + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Load the source document + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Convert to PDF/X‑1a (print‑ready) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Export first page as PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Add auto‑sizing text stamp (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/hongkong/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..c39dcdd79 --- /dev/null +++ b/pdf/hongkong/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,268 @@ +--- +category: general +date: 2026-03-29 +description: 使用 Aspose.PDF 在 C# 中將 PDF 儲存為 HTML。學習如何將 PDF 轉換為 HTML、忽略圖像,並在同一教學中驗證 + PDF 簽名。 +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: zh-hant +og_description: 使用 Aspose.PDF 在 C# 中將 PDF 另存為 HTML。本指南示範如何將 PDF 轉換為 HTML、跳過圖像,以及驗證 + PDF 數位簽章。 +og_title: 使用 Aspose 將 PDF 另存為 HTML – 完整 C# 教學 +tags: +- Aspose.PDF +- C# +- PDF processing +title: 使用 Aspose 將 PDF 另存為 HTML – 完整 C# 指南 +url: /zh-hant/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 將 PDF 另存為 HTML(使用 Aspose)– 完整 C# 指南 + +有沒有想過如何 **將 PDF 另存為 HTML** 而不把每張嵌入的圖片都拉進來?也許你正在打造輕量級的網頁預覽,而額外的圖片負載正拖慢頁面速度。好消息是,你不需要自行撰寫解析器——Aspose.PDF 會為你完成繁重的工作。在本教學中,我們將 **將 PDF 轉換為 HTML**、去除圖片,然後 **驗證 PDF 簽章**,以確保文件未被竄改。 + +我們會逐行說明程式碼,解釋 *為何* 每個設定很重要,甚至會觸及大型 PDF 或缺少簽章等邊緣情況。完成後,你將擁有一個可直接執行的 C# 主控台應用程式,產生乾淨的 HTML 檔案,並提供清晰的 true/false 數位簽章驗證結果。 + +## 你將學會 + +- 使用 Aspose.PDF 載入 PDF 檔案。 +- 使用 `HtmlSaveOptions` **將 PDF 轉換為 HTML** 同時省略圖片。 +- 將產生的 HTML 儲存至磁碟。 +- 設定 `PdfFileSignature` 物件以 **驗證 PDF 簽章**。 +- 解析布林結果並處理常見陷阱。 +- 針對效能與除錯的額外小技巧。 + +### 前置條件 + +- .NET 6.0 或更新版本(程式碼亦可於 .NET Framework 4.7+ 執行)。 +- Aspose.PDF for .NET NuGet 套件(版本 23.12 或更新)。 +- 一個已簽署的 PDF(`input.pdf`),其中包含名稱為 “Sig1” 的簽章。 +- 基本的 C# 與主控台應用程式概念。 + +> **專業提示:** 若尚未安裝 Aspose.PDF 套件,請在專案資料夾中執行 `dotnet add package Aspose.PDF`。 + +--- + +## 步驟 1:載入來源 PDF 文件 + +在執行任何操作之前,我們需要一個 PDF 的記憶體表示。Aspose.PDF 的 `Document` 類別會讀取檔案,並建立頁面、資源與註解的樹狀結構。 + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**為何這很重要:** 只載入一次文件即可讓記憶體使用保持可預測。若要在迴圈中處理大量 PDF,考慮在呼叫 `pdfDocument.Dispose()` 後重新使用同一個 `Document` 實例。 + +--- + +## 步驟 2:設定 HTML 儲存選項 – 跳過圖片 + +我們想 **將 PDF 另存為 HTML**,但不包含龐大的圖片資料。`HtmlSaveOptions` 提供細緻的控制,而 `SkipImages` 旗標會指示 Aspose 完全省略 `` 標籤。 + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**為何可能要跳過圖片:** 在預覽平台或 mobile‑first 設計中,每一個 kilobyte 都很重要。移除圖片同時也能避免若來源 PDF 含有受版權保護的圖形而產生的授權問題。 + +--- + +## 步驟 3:將 PDF 匯出為不含圖片的 HTML 檔案 + +現在正式寫入 HTML 檔案。`Save` 方法會遵循前述設定。 + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**你會看到的結果:** 一個 `.html` 檔案,內含文字內容、表格與向量圖形(若有),但不會有 `` 標籤。於瀏覽器開啟後,應可看到原始 PDF 的乾淨、無圖像的呈現。 + +--- + +## 步驟 4:為相同文件準備簽章驗證器 + +Aspose.PDF 的 `PdfFileSignature` 類別讓我們檢查 PDF 中嵌入的數位簽章。我們會建立一個指向先前已載入的 `Document` 的實例。 + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**資源處理說明:** `using` 陳述式確保驗證器在使用完畢後釋放任何原生句柄,避免 Windows 上的檔案鎖定問題。 + +--- + +## 步驟 5:使用 SHA‑3‑256 驗證名稱為 “Sig1” 的簽章 + +大多數 PDF 使用 SHA‑256 或 SHA‑1,但 Aspose 亦支援較新的 SHA‑3 系列。此處我們明確要求 `Sha3_256`。若簽章缺失或演算法不符,方法會回傳 `false`。 + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**“false” 可能的意義:** + +1. **找不到簽章** – 可能 PDF 使用了不同的名稱;可使用 `signatureVerifier.GetSignatureNames()` 列出所有簽章名稱。 +2. **演算法不匹配** – PDF 可能是以 SHA‑256 簽署;請改用 `DigestHashAlgorithm.Sha256`。 +3. **文件被更改** – 簽署後的任何變動都會使雜湊失效,導致回傳 `false`。 + +--- + +## 處理常見的邊緣情況 + +### 大型 PDF + +如果來源 PDF 超過數百 MB,建議啟用 **記憶體節省模式**: + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +此模式會按需串流頁面,降低 RAM 壓力。 + +### 缺少簽章 + +當不確定簽章名稱時,可先列舉所有簽章: + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +在呼叫 `VerifySignature` 前,從清單中挑選正確的名稱。 + +### 瀏覽器相容性 + +某些瀏覽器對包含 Aspose 預設 CSS 的 HTML 解析較差。將 `htmlSaveOptions.EmbedCss = true`(如前所示)設定為內嵌樣式,可提升檔案的可攜性。 + +--- + +## 完整範例程式 + +以下是完整、可直接複製貼上的程式碼,包含所有步驟、錯誤處理與可選診斷資訊。 + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**預期的主控台輸出**(路徑會不同): + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +若簽章無效,最後一行會顯示 `Signature valid: False`。 + +--- + +## 常見問題 + +**Q: 我可以在轉換 PDF 為 HTML 時保留圖片嗎?** +A: 當然可以。只要將 `SkipImages = false`(或直接省略此屬性),Aspose 會將每張圖片另存為獨立檔案,放在 HTML 同目錄下的子資料夾中。 + +**Q: 這在 Linux 上可行嗎?** +A: 可以。Aspose.PDF 為跨平台套件,只要確保 `YOUR_DIRECTORY` 路徑使用正斜線或透過 `Path.Combine` 組合即可。 + +**Q: 若要使用自訂憑證驗證 PDF 數位簽章,該怎麼做?** +A: 使用接受 `X509Certificate2` 物件的 `PdfFileSignature.ValidateSignature` 重載。此方法同時會回傳詳細的 `SignatureInfo`,供你進一步檢查。 + +**Q: `aspose convert pdf` 只限於 C# 嗎?** +A: 不限。相同的 API 也提供給 Java、Python 以及其他 .NET 語言。概念——載入、設定選項、儲存、驗證——皆相同。 + +--- + +## 結論 + +你現在已清楚掌握如何使用 Aspose.PDF **將 PDF 另存為 HTML**、去除不必要的圖片,並在同一個精簡的 C# 程式中 **驗證 PDF 簽章**。整個流程簡單明瞭:載入 → 設定 → 匯出 → 驗證。加上前述的診斷與邊緣情況處理,你可以將此模式套用於批次作業、Web 服務或桌面工具。 + +準備好進一步了嗎?試試 **在保留圖片的情況下轉換 PDF 為 HTML**,或以不同雜湊演算法 **驗證 PDF 數位簽章**,與自己的 PKI 結合。你也可以探索 Aspose 的 PDF 轉 DOCX 功能,或在匯出前先合併多個 PDF——每一步都是剛才工作流程的自然延伸。 + +祝開發順利,願你的 HTML 預覽保持輕量,簽章保持可信! + +![save pdf as html example](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/hongkong/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..ab0a59f2b --- /dev/null +++ b/pdf/hongkong/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-03-29 +description: 使用 C# 與 Aspose.PDF 將 PDF 另存為 HTML。學習如何在 PDF 中插入頁面、加入空白 PDF 頁面,以及在同一流程中建立 + PKCS7 分離簽章。 +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: zh-hant +og_description: 使用 C# 及 Aspose.PDF 將 PDF 儲存為 HTML。本指南示範如何載入 PDF、插入頁面、添加空白頁、使用 PKCS7 + 簽署,以及匯出為 HTML。 +og_title: 使用 C# 將 PDF 儲存為 HTML – 完整程式教學 +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: 使用 C# 將 PDF 另存為 HTML – 完整逐步指南 +url: /zh-hant/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 使用 C# 將 PDF 另存為 HTML – 完整步驟指南 + +是否曾需要 **save PDF as HTML**,卻不確定如何在調整來源文件的同時保持版面不變?你並非唯一遇到此問題的人——開發人員常常在轉換前要處理分頁修正、空白頁以及數位簽章。在本教學中,我們將逐步說明一套完整的工作流程,並同時示範如何 **insert page into PDF**、**add blank PDF page** 以及 **create PKCS7 detached signature**。 + +完成本指南後,你將擁有一個可直接執行的 C# 程式,能載入既有 PDF、重新排列頁面、於第一頁簽名,最後以 Unicode CMap 為優先匯出為 HTML。沒有遺留參考,僅是一個可直接嵌入任何 .NET 專案的完整解決方案。 + +## 需要的條件 + +- **Aspose.PDF for .NET**(最新版本,撰寫時為 23.x)。 +- **.NET 6.0** 或更新版本 – 程式碼亦可在 .NET Framework 4.7 上編譯,但 .NET 6 提供最佳效能。 +- 一個 **certificate file** (`.pfx`) 以及其密碼,用於 PKCS7 簽章。 +- 欲處理的輸入 PDF (`input.pdf`)。 + +如果你已備妥上述項目,我們即可直接進入程式碼。否則,請從官方網站取得 30 天免費的 Aspose 試用版;API 與付費版完全相同。 + +--- + +## 步驟 1 – 在 C# 中載入 PDF 文件(主要操作) + +首先要將 PDF 載入記憶體。Aspose 的 `Document` 類別負責所有繁重的工作。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*為何這很重要:* 載入檔案會提供可變更的物件模型。從此你可以 **insert page into PDF**、新增空白頁,或套用簽章,而不會觸及磁碟上的原始檔案。 + +--- + +## 步驟 2 – 插入頁面並新增空白 PDF 頁面 + +有時來源 PDF 會出現分頁異常——可能缺少頁面或重複頁面。以下範例會將第 2 頁複製至第 1 頁之後,然後在最後附加一個完全空白的頁面。 + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*小技巧:* `UpdatePagination()` 重新計算 Aspose 產生的頁腳或頁首中顯示的頁碼。若省略此步驟,最終 HTML 可能會保留過時的頁碼。 + +--- + +## 步驟 3 – 建立 PKCS7 分離簽章(SHA‑512) + +分離的 PKCS7 簽章可驗證文件完整性,且不會將簽章資料直接嵌入 PDF 內容流。我們將使用儲存在 PFX 檔案中的憑證。 + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*為何使用 SHA‑512?* 它提供比 SHA‑256 更強的雜湊,同時仍被廣泛支援。如果需要符合較舊的標準,可將 `Sha512` 改為 `Sha256`。 + +--- + +## 步驟 4 – 於第 1 頁套用可見矩形的數位簽章 + +我們會在第一頁放置一個可見的簽章欄位。矩形區域定義簽章圖像(或佔位符)顯示的位置。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*特殊情況:* 如果目標頁面已存在同名的表單欄位,API 會拋出例外。請確保欄位名稱唯一,或在簽署前清除現有欄位。 + +--- + +## 步驟 5 – 設定 HTML 儲存選項以優先使用 Unicode CMap + +轉換為 HTML 時,Aspose 可以將字型以 base‑64 方式嵌入、使用子集,或依賴 Unicode CMap。優先使用 Unicode 可減少檔案大小並提升文字可搜尋性。 + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*此設定的作用是什麼?* 它告訴轉換器在可能的情況下優先使用 Unicode CMap,而非自訂字型嵌入,這對多語言 PDF 非常理想。 + +--- + +## 步驟 6 – 將已簽署的文件儲存為 HTML + +最後,將處理過的 PDF 輸出為 HTML 資料夾(Aspose 會建立一個包含 CSS、圖像等支援檔案的目錄)。 + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +如果在瀏覽器中開啟 `cmap.html`,你會看到原始 PDF 版面以 HTML 呈現,且第 1 頁顯示可見的簽章圖像。 + +--- + +## 完整範例(結合所有步驟) + +以下是完整程式碼,你可以直接複製貼上至 Console 應用程式。它包含所有必要的 `using` 指示詞與錯誤處理。 + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**預期結果:** +- `cmap.html`(主要的 HTML 檔案) +- `cmap_files` 資料夾,內含 CSS、圖像與字型資源。 +- 第一頁會在你設定的座標顯示可見的簽章框。 + +--- + +## 常見問題與特殊情況 + +| 問題 | 答案 | +|----------|--------| +| *我可以使用自簽憑證嗎?* | 可以,Aspose.PDF 接受任何有效的 PFX。只需記得瀏覽器可能會將簽章標記為不受信任。 | +| *如果需要簽署多個頁面該怎麼辦?* | 為每個頁面建立獨立的 `PdfFileSignature` 呼叫,或使用迴圈更新 `pageNumber`。 | +| *有沒有辦法嵌入簽章圖像而不是矩形?* | 提供包含圖像串流的 `SignatureAppearance` 物件給 `PdfFileSignature.Sign`。 | +| *我的 PDF 有加密內容——還能轉換嗎?* | 先使用 `pdfDoc.Decrypt("ownerPassword")` 解密,然後再執行後續步驟。 | +| *HTML 會保留原始 PDF 的超連結嗎?* | Aspose 預設會保留連結註解。若發現連結遺失,請設定 `htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;`。 | + +--- + +## 結語 + +我們剛剛示範了如何 **save PDF as HTML**,同時 **insert page into PDF**、**add blank PDF page** 與 **create PKCS7 detached signature**——全部使用 C# 完成。此工作流程線性、易於除錯,且可完全自訂以應對更大型的專案。 + +接下來,你可能想探索: + +- **批次處理** – 迭代資料夾中的 PDF 並逐一轉換。 +- **自訂 CSS** – 調整 `HtmlSaveOptions.CustomCss` 以符合網站樣式。 +- **進階簽章** – 使用時間戳伺服器或 LTV(長期驗證)以達到合規等級的簽署。 + +試試看這些功能,你將擁有一條穩健的 PDF 轉 HTML 管線,既符合 SEO 需求,也適合作為 AI 助手的引用來源。祝開發愉快! + +![顯示 PDF 已載入、頁面插入、簽章套用,最後輸出為 HTML 的流程圖](/images/save-pdf-as-html-workflow.png "將 PDF 另存為 HTML 工作流程") +*Image alt text:* **將 PDF 另存為 HTML 工作流程圖** + +{{< /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 e82f0d678..6be8a5699 100644 --- a/pdf/hongkong/net/digital-signatures/_index.md +++ b/pdf/hongkong/net/digital-signatures/_index.md @@ -20,6 +20,9 @@ ### [使用 Aspose.PDF for .NET 在 PDF 中進行數位簽章:綜合指南](./digital-signature-aspose-pdf-net-tutorial/) 了解如何使用 Aspose.PDF for .NET 在 PDF 中實作數位簽章。本指南涵蓋設定、簽名流程和管理簽名外觀。 +### [如何簽署 PDF 並添加圖像 – 完整 C# 指南](./how-to-sign-pdf-and-add-images-complete-c-guide/) +了解如何使用 Aspose.PDF for .NET 在 C# 中為 PDF 簽名並嵌入圖像,提供完整步驟與範例程式碼。 + ### [使用 Aspose.PDF for .NET 對 PDF 進行自訂外觀數位簽章:逐步指南](./digitally-sign-pdf-custom-appearance-aspose-pdf-net/) 了解如何使用 Aspose.PDF for .NET 對具有自訂外觀的 PDF 進行數位簽章。本指南涵蓋文件中數位簽章的設定、客製化和實際應用。 diff --git a/pdf/hongkong/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/hongkong/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..165211ef7 --- /dev/null +++ b/pdf/hongkong/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,244 @@ +--- +category: general +date: 2026-03-29 +description: 如何在 C# 中使用數位簽章簽署 PDF 並加入裁切過的圖片。學習如何輕鬆為 PDF 添加數位簽章、裁切圖片以及插入圖片。 +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: zh-hant +og_description: 如何使用 Aspose.Pdf 在 C# 中為 PDF 加上數位簽署並嵌入裁切過的圖像。請參考本指南獲得完整解決方案。 +og_title: 如何簽署 PDF 並加入圖片 – 一步一步 C# 教學 +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: 如何簽署 PDF 並加入圖片 – 完整 C# 指南 +url: /zh-hant/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何簽署 PDF 並加入圖片 – 完整 C# 教學 + +有沒有想過 **如何以程式方式簽署 PDF** 檔案,同時插入自訂圖片?也許你正在建置審批工作流程,需要在同一頁上同時放置具法律效力的簽章 *以及* 簽署者的縮圖。簡而言之,你想 **加入 digital signature pdf** 內容、裁切圖片,然後 **add image to pdf**,且不費吹灰之力。 + +本教學將一步步說明——從載入 ECDSA PKCS#7 憑證、裁切 JPEG,到將其蓋印在已簽署的頁面上。完成後,你會得到一個可直接執行的 C# 檔案,能在第 1 頁簽署、將照片裁切至 400 × 400 px,並精確放置。無需外部腳本、無魔法,只有清晰的程式碼與說明。 + +## 前置條件 + +- .NET 6.0 或更新版本(此程式碼亦相容 .NET Framework 4.7+) +- **Aspose.Pdf for .NET** NuGet 套件(版本 23.9 或更新) +- 一組 ECDSA P‑256 的 PKCS#7 (`.pfx`) 憑證與其密碼 +- 一張欲嵌入的 JPEG 圖片(例如 `photo.jpg`) + +> **小技巧:** 請將憑證檔案排除於 source control,並使用密碼管理工具保護密碼。 + +--- + +## 第一步:建立專案與匯入 + +先建立一個 console 應用程式(或整合至既有服務),加入 Aspose.Pdf 參考: + +```bash +dotnet add package Aspose.Pdf +``` + +接著加入必要的命名空間: + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +這些 `using` 陳述式讓你可以使用 `Document`、`Signature` 與 `Rectangle` 等稍後會用到的類別。 + +## 第二步:載入 PDF 並準備簽章 + +我們會開啟既有的 PDF(`source.pdf`),並建立一個使用 PKCS#7 分離簽章的 **digital signature pdf** 物件。憑證採用 ECDSA P‑256 金鑰,符合多數合規需求。 + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**為什麼這很重要:** 使用分離的 PKCS#7 簽章可在不改變原始 PDF 內容的前提下嵌入加密雜湊,這是法律上認可的標準作法。 + +## 第三步:將數位簽章套用至特定頁面 + +現在把可見的簽章欄位放在 **第 1 頁**。`Rectangle` 定義了簽章框出現的位置(座標單位為 point,1 inch = 72 points)。 + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +若不需要可見框,將 `isVisible` 設為 `false`。`signatureRect` 可依文件版面自行調整。 + +## 第四步:開啟圖片串流並定義裁切區域 + +我們會把 JPEG 讀入串流,並指定一個 **source rectangle**,選取左上角 400 × 400 像素的區域,這就是 **crop image for pdf** 的操作。 + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **邊緣情況:** 若圖片尺寸小於 400 × 400,裁切會自動限制在實際大小,不會拋出例外。 + +## 第五步:定義裁切後圖片的放置位置 + +接著設定 PDF 頁面上的 **destination rectangle**。本例將圖片放在 (50, 50) 位置,大小為 200 × 200 points(約 2.78 英吋正方形)。 + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +隨意實驗:變更 X/Y 座標即可移動圖片,調整寬高則可改變縮放比例。 + +## 第六步:將裁切後的圖片插入已簽署的頁面 + +最後,我們把圖片加入 **第 1 頁**(即同時帶有簽章的那一頁)。使用的 `AddImage` 多載接受來源與目的矩形,一次完成裁切與放置。 + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +在背後,Aspose.Pdf 會擷取 400 × 400 像素區域,重新縮放至 200 × 200 points,並寫入 PDF 內容串流。 + +## 第七步:儲存已簽署且加入圖片的 PDF + +完成所有修改後,將文件寫回磁碟。可覆寫原檔或另存新檔。 + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +當你在 Adobe Acrobat 或其他 PDF 檢視器開啟 `output_signed.pdf` 時,會看到: + +- 依指定座標出現的可見簽章欄位 +- 裁切後的照片位於第 1 頁的 (50, 50) 位置 +- 若檢視器信任你的憑證,則會驗證通過數位簽章 + +--- + +## 常見問題 (FAQ) + +| 問題 | 解答 | +|------|------| +| **可以簽署其他頁面嗎?** | 將 `signature.Sign` 的 `pageNumber` 參數改為任意有效的頁碼(以 1 為基礎)。 | +| **如果需要多個簽章該怎麼辦?** | 為每個頁面或位置建立新的 `Signature` 實例,若使用相同憑證可重複使用同一個 `pkcsSignature`。 | +| **圖片裁切只能是矩形嗎?** | 是的,Aspose.Pdf 的 `AddImage` 只支援矩形區域。若需複雜形狀,必須先在程式外(例如使用 System.Drawing)先行處理圖片。 | +| **如何讓簽章隱形?** | 將 `isVisible` 設為 `false` 並省略 `signatureRect`。簽章仍然具備加密效力。 | +| **除了 JPEG 還能嵌入哪些格式?** | 支援 PNG、BMP、GIF 與 TIFF。只要更改檔案路徑並確保串流讀取正確的位元即可。 | + +--- + +## 完整範例程式 + +以下是完整、獨立的程式碼。直接貼到 `Program.cs`,調整路徑後執行即可。 + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**預期結果:** 開啟 `output_signed.pdf` 後會看到一個簽章欄位(100 × 100 → 300 × 300 points)以及一張由 `photo.jpg` 左上角裁切、縮放至 200 × 200 points 的圖片。簽章會以提供的 ECDSA 憑證驗證通過。 + +--- + +## 結語 + +我們已說明 **如何簽署 PDF**、如何 **add digital signature pdf** 至特定頁面、如何 **crop image for pdf**,以及最終 **add image to pdf** 的完整流程,全部使用 Aspose.Pdf 於 C# 實作。從載入憑證到儲存最終文件,整個流程皆濃縮於單一易讀的程式檔。 + +如果你想挑戰更高階的需求,可考慮: + +- 在不同頁面加入 **multiple signatures**(使用 “digital signature pdf page” 概念) +- 嵌入指向驗證服務的 **QR code** +- 在 ASP.NET Core API 中自動化產生 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-security-and-signatures/_index.md b/pdf/hongkong/net/programming-with-security-and-signatures/_index.md index 413f8cc4c..f37d1f034 100644 --- a/pdf/hongkong/net/programming-with-security-and-signatures/_index.md +++ b/pdf/hongkong/net/programming-with-security-and-signatures/_index.md @@ -33,9 +33,10 @@ | [在 PDF 檔案中設定權限](./set-privileges/) |透過本逐步指南了解如何使用 Aspose.PDF for .NET 設定 PDF 權限。有效地保護您的文件。 | | [使用 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 簽章 – 檢查已簽署的 PDF 檔案](./check-pdf-signatures-in-c-how-to-read-signed-pdf-files/) |了解如何使用 Aspose.PDF for .NET 在 C# 中讀取並驗證 PDF 簽章的步驟與技巧。 | | [使用簽名字段透過智慧卡簽名](./sign-with-smart-card-using-signature-field/) |了解如何使用 Aspose.PDF for .NET 的智慧卡安全地簽署 PDF。按照我們的逐步指南即可輕鬆實施。 | -| [如何修復 PDF 檔案 – 完整的 C# 指南(使用 Aspose.Pdf)](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) |了解如何使用 Aspose.PDF for .NET 修復受損的 PDF 檔案。逐步指南協助您恢復文件完整性。 | +| [如何修復 PDF 檔案 – 完整的 C# 指南(使用 Aspose.Pdf)](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) |了解如何使用 Aspose.PDF for .NET 修復受損的 PDF 檔案。逐步指南協助您恢復文件完整性。 | +| [驗證 PDF 數位簽章 – 完整的 C# 指南](./validate-pdf-digital-signature-complete-c-guide/) |了解如何使用 Aspose.PDF for .NET 在 C# 中驗證 PDF 數位簽章的完整步驟與技巧。 | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/hongkong/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/hongkong/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..c950ffacc --- /dev/null +++ b/pdf/hongkong/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,259 @@ +--- +category: general +date: 2026-03-29 +description: 快速驗證 PDF 數位簽章。了解如何驗證 PDF 簽章、檢查 PDF 簽章狀態,並使用 Aspose.Pdf 於 C# 偵測被竄改的 PDF。 +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: zh-hant +og_description: 在 C# 中驗證 PDF 數位簽名。本教學示範如何驗證 PDF 簽名、檢查 PDF 簽名完整性,並使用 Aspose.Pdf 偵測被竄改的 + PDF。 +og_title: 驗證 PDF 數位簽名 – 完整 C# 指南 +tags: +- C# +- Aspose.Pdf +- PDF Security +title: 驗證 PDF 數位簽名 – 完整 C# 指南 +url: /zh-hant/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-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 數位簽章**,快速完成。 + +在本教學中,我們將逐步說明你需要了解的所有內容:從安裝函式庫到解讀結果,甚至處理多重簽章或檔案損毀等邊緣情況。完成後,你將能以程式方式 **check PDF signature**(檢查 PDF 簽章)狀態,並在 **detect tampered PDF**(偵測被竄改的 PDF)檔案造成問題前先行發現。 + +## 需要的條件 + +- **.NET 6.0 or later**(此程式碼同樣適用於 .NET Framework,但 .NET 6 是最佳選擇)。 +- **Aspose.Pdf for .NET** – 可從 NuGet 取得(`Install-Package Aspose.Pdf`)。 +- 你想測試的 **signed PDF**。若沒有,可使用 Adobe Acrobat 或任何 PDF 簽署工具建立簡單的簽署文件。 + +> 小技巧:將 PDF 檔案放在專案根目錄之外;使用像 `./Samples/signed.pdf` 這樣的相對路徑即可,且可避免機密檔案不小心被提交。 + +## 步驟實作說明 + +以下我們將解決方案分成多個邏輯區塊。每個區塊都有自己的 H2 標題,其中一個甚至包含主要關鍵字,符合 SEO 規則。 + +### ## Step 1 – 安裝並參考 Aspose.Pdf + +首先,將 NuGet 套件加入你的專案: + +```powershell +dotnet add package Aspose.Pdf +``` + +或者,若使用 Package Manager Console: + +```powershell +Install-Package Aspose.Pdf +``` + +套件安裝完成後,Visual Studio 會自動加入 `using Aspose.Pdf;` 命名空間。無需額外的 DLL 操作。 + +### ## Step 2 – 載入已簽署的 PDF 文件 + +現在我們實際開啟檔案。`using` 陳述式可確保文件正確釋放,對於大型 PDF 尤為重要。 + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +> **為什麼這很重要:** 載入文件後,我們即可存取 `DigitalSignatureInfo` 物件,這是所有簽章相關查詢的入口。 + +### ## Step 3 – 取得數位簽章資訊 + +Aspose.Pdf 將低階 PKI 細節封裝於友善的 API 中。取得 `DigitalSignatureInfo` 屬性,即可獲得檢查 **check PDF signature** 健康狀態所需的全部資訊。 + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +若 PDF 包含多個簽章,`signatureInfo` 會彙總它們,並提供 `Count`、`Certificates`、`IsCompromised` 等屬性。對於單一簽章的檔案,這些集合僅會有一筆資料。 + +### ## Step 4 – 判斷簽章是否受損 + +`IsCompromised` 旗標會告訴你文件在簽署 **之後** 是否被更改。`true` 表示 PDF 已被竄改——正是我們想要 **detect tampered PDF** 的情況。 + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +若需要更徹底地 **verify PDF signature**(例如憑證鏈驗證),也可以檢查 `signatureInfo.Certificates`,並對每個憑證呼叫 `Validate()`。對大多數情況而言,`IsCompromised` 已足夠。 + +### ## Step 5 – 輸出結果至主控台 + +最後,讓使用者了解結果。我們會印出友善訊息,並回傳適當的退出代碼供自動化腳本使用。 + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### 預期輸出 + +``` +Signature compromised: False +``` + +若你刻意竄改 PDF(例如加入多餘字元),輸出會變成 `True`。這時就表示文件完整性已被破壞。 + +### ## Handling Edge Cases and Common Pitfalls + +#### 1. 多重簽章 + +當 PDF 有多位簽署者時,`IsCompromised` 會反映 *整體* 狀態——若 **任何** 簽章受損,旗標即為 `true`。若要確定是哪位簽署者出問題: + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. 缺少簽章 + +若 PDF 完全未簽署,`signatureInfo.Count` 會是 `0`。你應避免產生錯誤的安全感: + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. PDF 檔案損毀 + +損毀的檔案會拋出 `PdfException`。將載入邏輯包在 try‑catch 中,以提供清晰的錯誤訊息: + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. 憑證驗證(進階) + +若需確保簽署憑證仍然有效(未被撤銷且在有效期限內),可呼叫: + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +此步驟讓你從簡單的 **check PDF signature** 進階到完整的 **how to verify PDF signature** 工作流程。 + +### ## 完整範例程式 + +將所有步驟整合,以下是完整、可直接執行的程式: + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +在命令列執行程式: + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +你應該會看到清晰的報告,說明 PDF 是否完整、涉及哪些簽署者,以及其憑證是否仍可信。 + +## 視覺概覽 + +以下是一張快速示意圖,說明從 **loading the PDF** 到 **outputting the validation result** 的流程。當你規劃更大型的文件處理管線時,這是一個方便的參考。 + +![validate pdf digital signature workflow diagram](image.png "Diagram showing PDF load → DigitalSignatureInfo → IsCompromised check") + +*Alt text: 驗證 PDF 數位簽章工作流程圖* + +## 結論 + +我們剛剛介紹了使用 Aspose.Pdf 於 C# 中 **complete, end‑to‑end solution to validate PDF digital signature** 的完整解決方案。重點如下: + +- 使用 `Document` 載入 PDF。 +- 取得 `DigitalSignatureInfo` 並檢查 `IsCompromised` 以 **detect tampered PDF**。 +- 優雅地處理多重簽章、缺少簽章以及檔案損毀等情況。 +- 可選地驗證簽署憑證,以完成 **how to verify PDF signature** 的檢查清單。 + +從此你可以擴充邏輯——將驗證結果儲存至資料庫、在 Web API 中拒絕未簽署的上傳,或整合至文件管理系統。若你對其他 PDF 安全功能感興趣,可探索 **checking PDF signature timestamps**、**adding a new signature** 或 **encrypting PDFs**。 + +對於邊緣情況有疑問,或想了解如何使用其他函式庫(如 iText 7)**verify PDF signature**?在下方留言,我們一起討論。祝開發順利! + +{{< /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/conversion-export/_index.md b/pdf/hungarian/net/conversion-export/_index.md index c01e9b243..c5f9c2f60 100644 --- a/pdf/hungarian/net/conversion-export/_index.md +++ b/pdf/hungarian/net/conversion-export/_index.md @@ -177,7 +177,7 @@ Ismerje meg, hogyan konvertálhat hatékonyan több TIFF képet egyetlen PDF dok Ismerje meg, hogyan konvertálhat zökkenőmentesen Printer Command Language (PCL) fájlokat PDF formátumba az Aspose.PDF for .NET segítségével. Kövesse ezt a lépésről lépésre szóló útmutatót kódpéldákkal és gyakorlati alkalmazásokkal. ### [PDF oldalak képpé konvertálása az Aspose.PDF for .NET használatával (lépésről lépésre útmutató)](./convert-pdf-pages-to-images-aspose-pdf-net/) -Tanuld meg, hogyan konvertálhatsz hatékonyan PDF oldalakat képekké az Aspose.PDF for .NET segítségével ezzel az átfogó, lépésről lépésre haladó útmutatóval. Tökéletes archiváláshoz, megosztáshoz és az akadálymentesítés javításához. +Tanuld meg, hogyan konvertálhatsz hatékonyan PDF oldalakat képekké az Aspose.PDF for .NET segítségével ezzel az átfogó, lépésről lépésre haladó útmutatóval. Tökéletes archiválásra, megosztásra és az akadálymentesítés javításához. ### [PDF konvertálása bináris TIFF formátumba az Aspose.PDF .NET használatával: Átfogó útmutató](./convert-pdf-to-binarized-tiff-aspose-dot-net/) Ismerje meg, hogyan konvertálhat PDF dokumentumot bináris TIFF képpé az Aspose.PDF for .NET segítségével. Ez az oktatóanyag a beállítást, a konfigurációt és a gyakorlati alkalmazásokat ismerteti. @@ -227,6 +227,14 @@ Kód oktatóanyag az Aspose.PDF Nethez ### [PDF-ből TIFF-be konvertálás .NET-ben az Aspose.PDF használatával: lépésről lépésre útmutató](./pdf-to-tiff-conversion-aspose-pdf-net/) Tanuld meg, hogyan konvertálhatsz PDF dokumentumokat TIFF képekké az Aspose.PDF for .NET segítségével. Sajátítsd el az egyéni színmélységeket és a fejlett képfeldolgozási technikákat. +### [PDF mentése HTML-ként az Aspose segítségével – Teljes C# útmutató](./save-pdf-as-html-with-aspose-csharp/) + +### [PDF mentése HTML-ként C#-ban – Teljes lépésről‑lépésre útmutató](./save-pdf-as-html-with-c-complete-step-by-step-guide/) +Ismerje meg, hogyan menthet PDF fájlokat HTML formátumba C#-ban az Aspose.PDF segítségével, részletes lépésekkel és kódpéldákkal. + +### [PDF konvertálása PDF/X-1A formátumba, oldal PNG exportálása és szövegbélyegző hozzáadása](./convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/) +Tanulja meg, hogyan konvertálhat PDF-et PDF/X-1A formátumba, exportálhat oldalakat PNG‑ként, és adhat hozzá szöveges bélyegzőt C#‑ban az Aspose.PDF .NET segítségével. + ## 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/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/hungarian/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..95bc97b06 --- /dev/null +++ b/pdf/hungarian/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-03-29 +description: pdf konvertálása pdf/x-1a formátumba és pdf oldal png exportálása egy + folyamatban – valamint megtanulni, hogyan lehet szöveges pecsétet hozzáadni a pdf-hez + az Aspose.Pdf (C#) segítségével. +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: hu +og_description: PDF konvertálása PDF/X-1A formátumba és PDF oldal PNG-be exportálása + szöveges pecsét hozzáadásával – teljes C# útmutató az Aspose.Pdf-hez. +og_title: PDF konvertálása PDF/X-1a formátumba, oldal PNG exportálása és szöveges + pecsét hozzáadása +tags: +- Aspose.Pdf +- C# +- PDF processing +title: PDF konvertálása PDF/X-1a formátumba, oldal PNG‑ként exportálása és szöveges + pecsét hozzáadása +url: /hu/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# pdf konvertálása pdf/x-1a, oldal png exportálása és szöveges pecsét hozzáadása – Teljes C# útmutató + +Szükséged volt már **pdf konvertálásra pdf/x-1a** formátumba, de emellett gyors PNG előnézetet is szerettél volna az első oldalról, valamint egy egyedi szöveges pecsétet ugyanazon a dokumentumon? Nem vagy egyedül. Sok gyártási folyamatban – gondolj a nyomtatásra kész előellenőrzésre vagy az automatizált jelentéskészítésre – gyakran találkozol ezzel a pontos követelménykombinációval. + +> **Amit kapsz** – egy teljes forrásfájl, lépésről‑lépésre magyarázatok, tippek a gyakori buktatókhoz, és egy gyors mód a kimenet ellenőrzésére. + +## Előfeltételek + +- .NET 6.0 vagy újabb (az API .NET Framework 4.x‑szel is működik). +- Aspose.Pdf for .NET NuGet csomag (`Aspose.Pdf`) – a 23.10-es verzió a jelenlegi írás időpontjában. +- Egy bemeneti PDF (`input.pdf`) és egy ICC profil fájl (`Coated_Fogra39L_VIGC_300.icc`) egy általad irányított mappában. +- Alapvető ismeretek a C#‑ról és a Visual Studio‑ról (vagy kedvenc IDE‑dról). + +Ha bármelyik ismeretlennek tűnik, egyszerűen telepítsd a NuGet csomagot a következővel: + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +Most merüljünk el. + +## 1. lépés: A forrás PDF dokumentum betöltése + +Az első dolog, amit teszünk, hogy megnyitjuk a feldolgozni kívánt PDF‑et. Az Aspose.Pdf `Document` osztálya a teljes fájlt képviseli, és lusta módon tölti be a tartalmat, így a teljesítménybeli hátrány csak akkor jelentkezik, amikor ténylegesen hozzáférsz az oldalakhoz. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*Miért fontos*: A dokumentum korai betöltése egyetlen objektumot biztosít, amelyet a konvertáláshoz, rendereléshez és pecsételéshez használhatunk. Ha kihagyod a kifejezett betöltést, és egy nem létező fájlon próbálsz dolgozni, később egy rejtélyes `FileNotFoundException` hibát kapsz. + +## 2. lépés: A dokumentum konvertálása PDF/X‑1a formátumba egy egyedi ICC profil használatával + +A PDF/X‑1a a de‑facto szabvány a nyomtatásra kész PDF‑ekhez. A konvertálási lépés lehetővé teszi egy **Output Intent** (az ICC profil) beágyazását, így a downstream RIP‑ek pontosan tudják, hogyan kell értelmezni a színeket. + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*Pro tipp*: Ha szigorúbb hibakezelésre van szükséged, cseréld le a `ConvertErrorAction.Delete`‑t `ConvertErrorAction.Throw`‑ra. Így a konvertálás az első megfelelőségi probléma esetén leáll, ami hasznos az automatizált QA folyamatokban. + +## 3. lépés: Az első oldal exportálása PNG‑ként a betűtípusok elemzése közben + +A PNG előnézet gyakran szükséges gyors vizuális ellenőrzéshez vagy bélyegkép generáláshoz. Az `AnalyzeFonts` engedélyezésével az Aspose biztosítja, hogy minden beágyazott betűtípus helyesen legyen rasterizálva, elkerülve a hiányzó glifek meglepetéseit. + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +A futtatás után a `page1.png` fájlt a forrásfájlok mellett találod. Nyisd meg bármely képnézőben, hogy megerősítsd, a konvertálás helyesnek tűnik. + +## 4. lépés: Szöveges pecsét hozzáadása, amely automatikusan igazítja a betűméretet + +A **text stamp** egy praktikus módja a PDF vízjelének vagy megjegyzésének hozzáadására anélkül, hogy módosítaná az alatta lévő tartalomfolyamokat. Az `AutoAdjustFontSizeToFitStampRectangle` beállítása azt jelenti, hogy a könyvtár zsugorítja vagy nagyítja a szöveget, hogy soha ne lépje túl a meghatározott téglalapot. + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*Miért automatikus méretezés?* Ha később a pecsét szövegét hosszabbra változtatod (pl. dinamikus időbélyeg), nem kell manuálisan újraszámolnod a betűméreteket – a pecsét valós időben alkalmazkodik. + +## 5. lépés: A frissített PDF dokumentum mentése + +Végül mindent visszaírunk a lemezre. Felülírhatod az eredeti fájlt, vagy létrehozhatsz egy teljesen újat; az alábbi példa a `output.pdf`‑t hozza létre. + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +Amikor a mentés befejeződik, a következőket kapod: + +1. Egy **PDF/X‑1a** szabványnak megfelelő fájl (`output.pdf`). +2. Az első oldal **PNG előnézete** (`page1.png`). +3. Egy **szöveges pecsét**, amely tökéletesen illeszkedik a téglalapjába. + +### Gyors ellenőrző lista + +| ✅ Ellenőrzés | Hogyan ellenőrizhető | +|--------|---------------| +| PDF/X‑1a megfelelőség | Nyisd meg az `output.pdf`‑t az Adobe Acrobat‑ban → *Print Production* → *Preflight* és válaszd a “PDF/X‑1a:2001” opciót. | +| PNG rendben van | Nyisd meg a `page1.png`‑t a Windows Photo Viewer‑ben vagy bármely kép szerkesztőben. | +| Pecsét megjelenik | Görgess végig az `output.pdf`‑n – a “Auto‑size” szövegnek középen kell lennie az 1. oldalon. | + +![pdf konvertálása pdf/x-1a előnézete](image.png "pdf konvertálása pdf/x-1a előnézete pecséttel ellátott oldal") + +*Kép alternatív szöveg*: **pdf konvertálása pdf/x-1a előnézete automatikus méretezésű szöveges pecséttel** – bemutatja a végső PDF‑et az összes lépés után. + +## Gyakori variációk és szélsőséges esetek + +- **Több oldal** – Ha minden oldalra pecsétet kell tenni, iterálj a `pdfDoc.Pages`-en, és a ciklusban hívd meg az `AddStamp`‑et. +- **Más kimeneti formátum** – Cseréld a `PdfFormat.PDF_X_1A`‑t `PdfFormat.PDF_A_1B`‑re archiválási PDF‑ekhez. +- **Magasabb felbontású PNG** – Állítsd be a `Resolution = 600` értéket a `RenderingOptions`‑ben a nyomtatási minőségű bélyegképekhez. +- **Egyedi betűtípus a pecséthez** – A pecsét hozzáadása előtt állítsd be `autoSizeStamp.Font = FontRepository.FindFont("Arial")`. +- **Hibakezelés** – Csomagold minden fő lépést egy `try/catch`‑be, és naplózd a `ConversionException` vagy `FileNotFoundException` hibákat a könnyebb hibakeresés érdekében. + +## Teljes működő példa (másolás-beillesztés kész) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Setup paths + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Load the source document + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Convert to PDF/X‑1a (print‑ready) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Export first page as PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Add auto‑sizing text stamp (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/hungarian/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..9ce71ed4d --- /dev/null +++ b/pdf/hungarian/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,270 @@ +--- +category: general +date: 2026-03-29 +description: PDF mentése HTML-ként az Aspose.PDF használatával C#-ban. Tanulja meg, + hogyan konvertálja a PDF-et HTML-re, hogyan hagyja ki a képeket, és hogyan ellenőrizze + a PDF-aláírást egyetlen útmutatóban. +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: hu +og_description: Mentse a PDF-et HTML-ként az Aspose.PDF segítségével C#-ban. Ez az + útmutató megmutatja, hogyan konvertálhatja a PDF-et HTML-re, hogyan hagyhatja ki + a képeket, és hogyan ellenőrizheti a PDF digitális aláírását. +og_title: PDF mentése HTML-ként az Aspose segítségével – Teljes C# útmutató +tags: +- Aspose.PDF +- C# +- PDF processing +title: PDF mentése HTML-ként az Aspose segítségével – Teljes C# útmutató +url: /hu/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF mentése HTML-ként Aspose segítségével – Teljes C# útmutató + +Gondoltad már, hogyan **mentheted a PDF-et HTML-ként** anélkül, hogy minden beágyazott képet betöltenél? Lehet, hogy egy könnyű webes előnézetet építesz, és a felesleges képadat lassítja az oldal sebességét. A jó hír, hogy nem kell saját elemzőt írnod – az Aspose.PDF elvégzi a nehéz munkát helyetted. Ebben az útmutatóban **PDF-et konvertálunk HTML-re**, eltávolítjuk a képeket, majd **ellenőrizzük a PDF aláírását**, hogy megbizonyosodjunk arról, hogy a dokumentumot nem módosították. + +Minden kódsort végigvesszük, elmagyarázzuk, *miért* fontos az egyes beállítás, és még a szélsőséges eseteket is érintjük, mint a nagy PDF-ek vagy a hiányzó aláírások. A végére egy azonnal futtatható C# konzolalkalmazásod lesz, amely tiszta HTML-fájlt hoz létre, és egy egyértelmű igaz/hamis eredményt ad a digitális aláírásra vonatkozóan. + +## Mit fogsz megtanulni + +- PDF-fájl betöltése az Aspose.PDF segítségével. +- `HtmlSaveOptions` használata a **PDF HTML-re konvertálásához** képek kihagyásával. +- A kapott HTML lemezre mentése. +- `PdfFileSignature` objektum beállítása a **PDF aláírásának ellenőrzéséhez**. +- A logikai eredmény értelmezése és a gyakori buktatók kezelése. +- Bónusz tippek a teljesítményhez és a hibakereséshez. + +### Előfeltételek + +- .NET 6.0 vagy újabb (a kód .NET Framework 4.7+ alatt is működik). +- Aspose.PDF for .NET NuGet csomag (23.12 vagy újabb verzió). +- Egy aláírt PDF (`input.pdf`), amely tartalmaz egy “Sig1” nevű aláírást. +- Alapvető C# és konzolalkalmazás ismeretek. + +> **Pro tipp:** Ha még nem telepítetted az Aspose.PDF csomagot, futtasd a `dotnet add package Aspose.PDF` parancsot a projekt könyvtáradból. + +--- + +## 1. lépés: A forrás PDF dokumentum betöltése + +Mielőtt bármit tennénk, szükségünk van a PDF memóriabeli reprezentációjára. Az Aspose.PDF `Document` osztálya beolvassa a fájlt, és felépít egy oldalak, erőforrások és annotációk fát. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**Miért fontos:** A dokumentum egyszeri betöltése kiszámítható memórihasználatot biztosít. Ha sok PDF-et szeretnél egy ciklusban feldolgozni, fontold meg ugyanannak a `Document` példánynak a újrahasználatát a `pdfDocument.Dispose()` meghívása után. + +--- + +## 2. lépés: HTML mentési beállítások konfigurálása – Képek kihagyása + +A cél, hogy **PDF-et HTML-ként mentsünk**, de a nehéz képadat nélkül. A `HtmlSaveOptions` finomhangolást tesz lehetővé, a `SkipImages` jelző pedig azt mondja az Aspose-nak, hogy hagyja ki a `` tageket. + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**Miért érdemes kihagyni a képeket:** Előnézeti portálok vagy mobil‑első tervezések esetén minden kilobájt számít. A képek eltávolítása emellett elkerüli a licencelési problémákat, ha a forrás PDF szerzői joggal védett grafikákat tartalmaz. + +--- + +## 3. lépés: PDF exportálása HTML-fájlként képek nélkül + +Most már ténylegesen kiírjuk a HTML-fájlt. A `Save` metódus figyelembe veszi a fent beállított opciókat. + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**Az eredmény, amit látsz majd:** Egy `.html` fájl, amely csak a szöveges tartalmat, táblázatokat és vektorgrafikákat (ha vannak) tartalmazza, de nem tartalmaz `` tageket. Nyisd meg egy böngészőben, és egy tiszta, képek nélküli megjelenítést kell látnod az eredeti PDF‑ből. + +--- + +## 4. lépés: Aláírás-ellenőrző előkészítése ugyanarra a dokumentumra + +Az Aspose.PDF `PdfFileSignature` osztálya lehetővé teszi a PDF‑be ágyazott digitális aláírások vizsgálatát. Létrehozunk egy példányt, amely a már betöltött `Document`-re mutat. + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**Megjegyzés az erőforrás-kezelésről:** A `using` utasítás biztosítja, hogy a verifier felszabadítja a natív handle‑eket, amint befejeződött a munka, ezzel elkerülve a fájl‑zárolási problémákat Windows alatt. + +--- + +## 5. lépés: A “Sig1” nevű aláírás ellenőrzése SHA‑3‑256‑al + +A legtöbb PDF SHA‑256‑ot vagy SHA‑1‑et használ, de az Aspose támogatja az újabb SHA‑3 családot is. Itt kifejezetten a `Sha3_256` algoritmust kérjük. Ha az aláírás hiányzik vagy az algoritmus nem egyezik, a metódus `false`‑t ad vissza. + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Mit jelent a “false” eredmény:** + +1. **Aláírás nem található** – lehet, hogy a PDF más nevet használ; listázd az aláírásokat a `signatureVerifier.GetSignatureNames()`‑el. +2. **Algoritmus eltérés** – a PDF SHA‑256‑al lett aláírva; próbáld ki a `DigestHashAlgorithm.Sha256`‑ot. +3. **Dokumentum módosítva** – bármilyen változtatás az aláírás után érvényteleníti a hash‑et, ami `false`‑t eredményez. + +--- + +## Gyakori szélsőséges esetek kezelése + +### Nagy PDF-ek + +Ha a forrás PDF néhány száz megabájtnál nagyobb, fontold meg a **memória‑takarékos mód** engedélyezését: + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +Ez igény szerint streameli az oldalakat, csökkentve a RAM terhelését. + +### Hiányzó aláírás + +Ha nem vagy biztos az aláírás nevében, sorold fel őket: + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +A listából válaszd ki a megfelelő nevet, mielőtt meghívod a `VerifySignature`‑t. + +### Böngésző kompatibilitás + +Néhány böngésző nehezen kezeli az Aspose alapértelmezett CSS‑ét. Az `htmlSaveOptions.EmbedCss = true` (ahogy korábban láttad) beállítás beágyazza a stílusokat, így a fájl hordozhatóbb lesz. + +--- + +## Teljes működő példa + +Az alábbi kódrészlet egy kész, másolás‑beillesztés‑kész programot mutat, amely tartalmazza az összes lépést, hibakezelést és opcionális diagnosztikát. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Várható konzol kimenet** (az útvonalak eltérnek majd): + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +Ha az aláírás érvénytelen, az utolsó sor így fog megjelenni: `Signature valid: False`. + +--- + +## Gyakran ismételt kérdések + +**K: Tudok PDF‑et HTML‑re konvertálni *képekkel*?** +A: Természetesen. Állítsd be `SkipImages = false`‑t (vagy hagyd el a tulajdonságot). Az Aspose minden képet külön fájlként helyez el egy HTML‑mel egy szinten lévő almappában. + +**K: Működik ez Linuxon?** +A: Igen. Az Aspose.PDF platform‑független; csak ügyelj arra, hogy a `YOUR_DIRECTORY` útvonalak előre‑döntő perjeleket vagy a `Path.Combine`‑t használják. + +**K: Mi a teendő, ha egy egyedi tanúsítvánnyal kell validálni a PDF digitális aláírását?** +A: Használd a `PdfFileSignature.ValidateSignature` túlterhelést, amely egy `X509Certificate2` objektumot fogad. Ez a metódus részletes `SignatureInfo`‑t is visszaad, amelyet elemezhetsz. + +**K: Az `aspose convert pdf` csak C#‑ra korlátozódik?** +A: Nem. Ugyanez az API elérhető Java, Python és más .NET nyelvek számára is. A koncepció – betöltés, beállítás, mentés, ellenőrzés – változatlan. + +--- + +## Összegzés + +Most már pontosan tudod, hogyan **mentsd a PDF-et HTML‑ként** az Aspose.PDF‑vel, hogyan távolítsd el a felesleges képeket, és hogyan **ellenőrizd a PDF aláírását** egyetlen, letisztult C# programban. A folyamat egyszerű: betöltés, konfigurálás, exportálás és validálás. Az opcionális diagnosztikával és a szélsőséges esetek kezelésével a mintát könnyen adaptálhatod kötegelt feladatokra, webszolgáltatásokra vagy asztali segédprogramokra. + +Készen állsz a következő lépésre? Próbáld ki a **PDF‑et HTML‑re konvertálást képek megtartásával**, vagy kísérletezz különböző hash‑algoritmusokkal a **PDF digitális aláírásának validálásához** a saját PKI‑d ellen. Felfedezheted továbbá az Aspose PDF‑t DOCX‑re konvertáló funkcióját, vagy több PDF egyesítését exportálás előtt – mindegyik természetes kiterjesztése annak a munkafolyamatnak, amelyet most felépítettünk. + +Boldog kódolást, és legyenek a HTML‑előnézeteid könnyűek, aláírásaid pedig megbízhatóak! + +![save pdf as html example](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/hungarian/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..df612f22b --- /dev/null +++ b/pdf/hungarian/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,258 @@ +--- +category: general +date: 2026-03-29 +description: Mentse a PDF-et HTML-ként C# és az Aspose.PDF használatával. Tanulja + meg, hogyan szúrjon be oldalt a PDF-be, hogyan adjon hozzá üres PDF-oldalt, és hogyan + hozzon létre PKCS7 leválasztott aláírást egy folyamatban. +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: hu +og_description: PDF mentése HTML-ként C#-ban az Aspose.PDF segítségével. Ez az útmutató + bemutatja, hogyan töltsünk be PDF-et, szúrjunk be oldalt, adjunk hozzá üres oldalt, + aláírjuk PKCS7-tel, és exportáljuk HTML-be. +og_title: PDF mentése HTML-ként C#‑al – Teljes programozási útmutató +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: PDF mentése HTML‑ként C#‑al – Teljes lépésről‑lépésre útmutató +url: /hu/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF mentése HTML‑ként C#‑ban – Teljes lépésről‑lépésre útmutató + +Szükséged volt már **PDF mentésére HTML‑ként**, de nem tudtad, hogyan tartsd meg a layoutot, miközben a forrásdokumentumot is módosítod? Nem vagy egyedül – a fejlesztők gyakran küzdenek oldalszámozási hibákkal, üres oldalakkal és digitális aláírásokkal a konvertálás előtt. Ebben a tutorialban egy egységes munkafolyamatot mutatunk be, amely mindezt megteszi, és közben belevesszük, hogyan **oldal beszúrása PDF‑be**, **üres PDF oldal hozzáadása**, és **PKCS7 leválasztott aláírás létrehozása**. + +A végére egy kész, futtatható C# programod lesz, amely betölti a meglévő PDF‑et, átalakítja az oldalakat, aláírja az első oldalt, majd exportálja mindezt HTML‑re Unicode CMap prioritással. Nincsenek laza hivatkozások, csak egy önálló megoldás, amelyet bármely .NET projektbe be lehet illeszteni. + +## Amire szükséged lesz + +- **Aspose.PDF for .NET** (legújabb verzió, 23.x a írás időpontjában). +- **.NET 6.0** vagy újabb – a kód .NET Framework 4.7‑tel is lefordítható, de a .NET 6 a legjobb teljesítményt nyújtja. +- Egy **tanúsítványfájl** (`.pfx`) és a jelszava a PKCS7 aláíráshoz. +- Egy bemeneti PDF (`input.pdf`), amelyet manipulálni szeretnél. + +Ha ezek megvannak, ugrunk a kódba. Ha nem, szerezz be egy ingyenes 30‑napos Aspose próbaverziót a hivatalos oldalról; az API megegyezik a fizetős verzióval. + +--- + +## 1. lépés – PDF dokumentum betöltése C#‑ban (Elsődleges művelet) + +Az első dolog, hogy a PDF‑et memóriába töltjük. Az Aspose `Document` osztálya elvégzi a nehéz munkát. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*Miért fontos:* A fájl betöltése egy módosítható objektummodellt ad. Innen **oldal beszúrása PDF‑be**, üres oldalak hozzáadása vagy aláírások alkalmazása lehetséges anélkül, hogy az eredeti fájlt a lemezen módosítanánk. + +--- + +## 2. lépés – Oldal beszúrása és üres PDF oldal hozzáadása + +Néha a forrás‑PDF oldalszámozási hibákat tartalmaz – hiányzó vagy duplikált oldal. Az alábbiakban a 2. oldalt másoljuk a 1. oldal után, majd a végére egy teljesen üres oldalt fűzünk. + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*Pro tipp:* Az `UpdatePagination()` újraszámolja a láblécben vagy fejlécben megjelenő oldalszámokat, amelyeket az Aspose generál. Ennek kihagyása elavult számokhoz vezethet a végső HTML‑ben. + +--- + +## 3. lépés – PKCS7 leválasztott aláírás létrehozása (SHA‑512) + +A leválasztott PKCS7 aláírás a dokumentum integritását bizonyítja anélkül, hogy közvetlenül a PDF tartalomszintjébe ágyazná az aláírási adatot. Egy PFX fájlban tárolt tanúsítványt használunk. + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*Miért SHA‑512?* Erősebb hash‑t biztosít, mint a SHA‑256, miközben széles körben támogatott. Ha régebbi szabványoknak kell megfelelni, cseréld a `Sha512`‑et `Sha256`‑ra. + +--- + +## 4. lépés – Digitális aláírás alkalmazása az 1. oldalra látható téglalappal + +Egy látható aláírásmezőt helyezünk el az első oldalon. A téglalap határozza meg, hol jelenik meg az aláíráskép (vagy helyőrző). + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*Szélsőséges eset:* Ha a céloldal már tartalmaz egy azonos nevű űrlapmezőt, az API kivételt dob. Biztosíts egyedi mezőneveket, vagy töröld a meglévő mezőket aláírás előtt. + +--- + +## 5. lépés – HTML mentési beállítások konfigurálása Unicode CMap prioritással + +HTML‑re konvertáláskor az Aspose beágyazhat betűkészleteket base‑64‑ként, használhat alhalmazokat, vagy támaszkodhat Unicode CMap‑ekre. A Unicode CMap előnyben részesítése csökkenti a fájlméretet és javítja a szövegkereshetőséget. + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*Mit csinál?* A konvertálót arra utasítja, hogy ahol csak lehetséges, a Unicode CMap‑eket részesítse előnyben a saját betűkészlet beágyazása helyett – ez ideális többnyelvű PDF‑ekhez. + +--- + +## 6. lépés – Aláírt dokumentum mentése HTML‑ként + +Végül a feldolgozott PDF‑et egy HTML mappaként írjuk ki (az Aspose létrehoz egy könyvtárat a CSS‑ és képfájlokkal). + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +Ha megnyitod a `cmap.html`‑t egy böngészőben, az eredeti PDF layoutja HTML‑ként jelenik meg, a látható aláírásképpel az 1. oldalon. + +--- + +## Teljes működő példa (Minden lépés egyben) + +Az alábbi programot egyszerűen bemásolhatod egy konzol‑alkalmazásba. Tartalmazza az összes szükséges `using` direktívát és a hibakezelést. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**Várt eredmény:** +- `cmap.html` (a fő HTML fájl) +- `cmap_files` mappa, amely CSS‑t, képeket és betűkészlet‑erőforrásokat tartalmaz. +- Az első oldal látható aláírásdobozot mutat a megadott koordinátákon. + +--- + +## Gyakran ismételt kérdések & Szélsőséges esetek + +| Kérdés | Válasz | +|----------|--------| +| *Használhatok önaláírt tanúsítványt?* | Igen, az Aspose.PDF bármely érvényes PFX‑et elfogad. Ne feledd, hogy a böngészők a tanúsítványt megbízhatatlanként jelölhetik. | +| *Mi a teendő, ha több oldalt kell aláírni?* | Készíts külön `PdfFileSignature` hívásokat minden oldalhoz, vagy egy ciklust, amely frissíti a `pageNumber`‑t. | +| *Lehet-e az aláírásképet beágyazni a téglalap helyett?* | Adj meg egy `SignatureAppearance` objektumot képes áramlattal a `PdfFileSignature.Sign` metódusnak. | +| *A PDF‑em titkosított – konvertálhatom mégis?* | Először dekódold a `pdfDoc.Decrypt("ownerPassword")` metódussal, majd futtasd a lépéseket. | +| *A HTML megtartja az eredeti PDF hiperhivatkozásait?* | Az Aspose alapértelmezés szerint megőrzi a link‑annotációkat. Ha hiányoznak, állítsd be: `htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;` | + +--- + +## Összegzés + +Megmutattuk, hogyan **menthetünk PDF‑et HTML‑ként**, miközben **oldal beszúrása PDF‑be**, **üres PDF oldal hozzáadása**, és **PKCS7 leválasztott aláírás létrehozása** történik – mindezt C#‑ban. A munkafolyamat lineáris, könnyen hibakereshető, és teljesen testreszabható nagyobb projektekhez is. + +A következő lépések lehetnek: + +- **Kötegelt feldolgozás** – egy mappában lévő PDF‑ek ciklikus konvertálása. +- **Egyedi CSS** – a `HtmlSaveOptions.CustomCss` módosítása a saját weboldalad stílusához. +- **Haladó aláírások** – időbélyegző‑szerverek vagy LTV (Long‑Term Validation) használata a megfelelőség‑szintű aláíráshoz. + +Próbáld ki ezeket, és egy robusztus PDF‑to‑HTML csővezetéked lesz, amely SEO‑barát és idézet‑kész AI asszisztensek számára is. Boldog kódolást! + +--- + +![Diagram showing PDF loaded, pages inserted, signature applied, then HTML output](/images/save-pdf-as-html-workflow.png "save pdf as html workflow") + +*Image alt text:* **save pdf as html workflow diagram** + +{{< /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 7f9a25800..092dafa51 100644 --- a/pdf/hungarian/net/digital-signatures/_index.md +++ b/pdf/hungarian/net/digital-signatures/_index.md @@ -59,6 +59,9 @@ Ismerje meg, hogyan tölthet be PDF-et C#-ban, konvertálhatja PDF/X‑4-re, és ### [PDF aláírás ellenőrzése Aspose-szal – PDF konvertálása HTML-re](./validate-pdf-signature-with-aspose-convert-pdf-to-html/) Ismerje meg, hogyan ellenőrizheti a PDF aláírását és konvertálhatja a dokumentumot HTML formátumba az Aspose.PDF for .NET használatával. +### [PDF aláírása és képek hozzáadása – Teljes C# útmutató](./how-to-sign-pdf-and-add-images-complete-c-guide/) +Ismerje meg, hogyan írhat alá PDF-et és adhat hozzá képeket C#-ban 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/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/hungarian/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..e6df020a1 --- /dev/null +++ b/pdf/hungarian/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-03-29 +description: Hogyan írjunk alá PDF-et digitális aláírással és adjunk hozzá vágott + képet C#-ban. Tanulja meg, hogyan adjon digitális aláírást a PDF-hez, vágjon képet + a PDF-hez, és könnyen helyezzen képet a PDF-be. +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: hu +og_description: Hogyan lehet PDF-et digitális aláírással aláírni és egy kivágott képet + beágyazni az Aspose.Pdf segítségével C#-ban. Kövesse ezt az útmutatót a teljes megoldásért. +og_title: Hogyan aláírjunk PDF-et és adjunk hozzá képeket – Lépésről lépésre C# útmutató +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: Hogyan aláírjunk PDF-et és adjunk hozzá képeket – Teljes C# útmutató +url: /hu/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan írjunk alá PDF-et és adjunk hozzá képeket – Teljes C# útmutató + +Gondoltad már valaha, hogyan **sign PDF** fájlokat programozottan, miközben egy egyedi képet is beillesztesz? Lehet, hogy egy jóváhagyási munkafolyamatot építesz, és jogilag kötelező érvényű aláírásra *és* a aláíró fényképének bélyegképére van szükséged ugyanazon az oldalon. Röviden, szeretnél **add digital signature pdf** tartalmat hozzáadni, a képet levágni, majd **add image to pdf** anélkül, hogy izzadnál. + +Ez a tutorial minden lépésen végigvezet – az ECDSA PKCS#7 tanúsítvány betöltésétől a JPEG levágásáig és a bélyegzőre való felhelyezésig. A végére egyetlen, futtatható C# fájlt kapsz, amely aláírja az 1. oldalt, 400 × 400 px méretűre vágja a fotót, és pontos helyre helyezi. Nincs külső script, nincs varázslat, csak tiszta kód és magyarázatok. + +## Előfeltételek + +- .NET 6.0 vagy újabb (a kód .NET Framework 4.7+‑vel is működik) +- **Aspose.Pdf for .NET** NuGet csomag (23.9 vagy újabb verzió) +- ECDSA P‑256 tanúsítvány PKCS#7 (`.pfx`) formátumban és a hozzá tartozó jelszó +- JPEG kép, amelyet be szeretnél ágyazni (pl. `photo.jpg`) + +> **Pro tipp:** Tartsd a tanúsítványfájlt a forráskódbázistól távol, és védd a jelszót egy titkoskezelővel. + +--- + +## 1. lépés: A projekt beállítása és az importok + +Először hozz létre egy konzolos alkalmazást (vagy integráld ezt bármely meglévő szolgáltatásba). Add hozzá az Aspose.Pdf referenciát: + +```bash +dotnet add package Aspose.Pdf +``` + +Ezután importáld a szükséges névtereket: + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +Ezek a `using` utasítások hozzáférést biztosítanak a később szükséges `Document`, `Signature` és `Rectangle` osztályokhoz. + +## 2. lépés: A PDF betöltése és az aláírás előkészítése + +Megnyitunk egy meglévő PDF-et (`source.pdf`), és létrehozunk egy **digital signature pdf** objektumot, amely PKCS#7 detached aláírást használ. A tanúsítvány egy ECDSA P‑256 kulcs, amely széles körben elfogadott a megfelelőséghez. + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**Miért fontos:** A detached PKCS#7 aláírás megőrzi az eredeti PDF tartalmát, miközben kriptográfiai hash‑t ágyaz be. Ez az iparági szabvány a jogilag kötelező PDF-ekhez. + +## 3. lépés: Digitális aláírás alkalmazása egy adott oldalra + +Most elhelyezzük a látható aláírásmezőt a **1. oldalon**. A téglalap határozza meg, hol jelenik meg az aláírásdoboz (a koordináták pontban vannak, ahol 1 inch = 72 pont). + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +Ha nincs szükséged látható dobozra, állítsd a `isVisible` értékét `false`‑ra. A `signatureRect` módosítható a dokumentum elrendezéséhez igazodva. + +## 4. lépés: Képfolyam megnyitása és vágási területek meghatározása + +Beolvassuk a JPEG fájlt egy streambe, és megadunk egy **source rectangle**‑t, amely a bal‑felső 400 × 400 pixelt választja ki. Ez a **crop image for pdf** művelet. + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **Edge case:** Ha a képed kisebb, mint 400 × 400, a vágás automatikusan a kép tényleges méretére korlátozódik – kivétel nem keletkezik. + +## 5. lépés: A levágott kép megjelenési helyének meghatározása + +Ezután állítsuk be a **destination rectangle**‑t a PDF oldalon. Ebben a példában a képet (50, 50) koordinátán helyezzük el, 200 × 200 pont (≈2,78 inch) mérettel. + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +Nyugodtan kísérletezz: változtasd az X/Y koordinátákat a kép mozgatásához, vagy módosítsd a szélességet/magasságot a méretezéshez. + +## 6. lépés: A levágott kép beillesztése az aláírt oldalra + +Végül hozzáadjuk a képet a **1. oldalhoz** (az ugyanazon oldalhoz, amely már tartalmazza az aláírást). Az általunk használt `AddImage` overload elfogadja a forrás- és cél‑téglalapokat, így egy hívással végrehajtja a vágást és a elhelyezést. + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +A háttérben az Aspose.Pdf kinyeri a 400 × 400 pixeles területet, 200 × 200 pont méretre átméretezi, és a PDF tartalmi stream‑jébe írja. + +## 7. lépés: Az aláírt és képpel kibővített PDF mentése + +Minden módosítás után mentjük a dokumentumot. Felülírhatod az eredetit, vagy egy új fájlba írhatod. + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +Amikor megnyitod a `output_signed.pdf` fájlt az Adobe Acrobatban vagy bármely PDF‑olvasóban, a következőket fogod látni: + +- Látható aláírásmező a megadott koordinátákon. +- A levágott fotó elhelyezve (50, 50) pozícióban az 1. oldalon. +- A digitális aláírás érvényes (ha a néző megbízik a tanúsítványodban). + +## Gyakran Ismételt Kérdések (FAQ) + +| Kérdés | Válasz | +|----------|--------| +| **Aláírhatok másik oldalt?** | Módosítsd a `pageNumber` argumentumot a `signature.Sign` hívásban bármely érvényes (1‑alapú) oldalra. | +| **Mi van, ha több aláírásra van szükség?** | Hozz létre egy új `Signature` példányt minden oldalhoz vagy helyhez, ugyanazt a `pkcsSignature`‑t újrahasználva, ha ugyanaz a tanúsítvány érvényes. | +| **A képvágás csak téglalapokra korlátozódik?** | Igen, az Aspose.Pdf `AddImage` csak téglalapos területekkel dolgozik. Bonyolultabb alakzatokhoz előbb elő kell dolgozni a képet (pl. System.Drawing‑el) a beágyazás előtt. | +| **Hogyan tehetem az aláírást láthatatlanná?** | Állítsd a `isVisible` értékét `false`‑ra, és hagyd ki a `signatureRect`‑et. Az aláírás továbbra is kriptográfiailag érvényes marad. | +| **Milyen formátumok ágyazhatók a JPEG‑en kívül?** | A PNG, BMP, GIF és TIFF is támogatott. Csak módosítsd a fájlútvonalat, és győződj meg róla, hogy a stream a megfelelő bájtokat olvassa. | + +## Teljes működő példa + +Az alábbiakban a teljes, önálló program látható. Másold be a `Program.cs`‑be, állítsd be az útvonalakat, és futtasd. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**Várható eredmény:** A `output_signed.pdf` megnyitásakor egy aláírásmezőt (100 × 100 → 300 × 300 pont) és egy 200 × 200 pont méretű képet látsz, amely a `photo.jpg` bal‑felső sarkából származik. Az aláírás érvényesül a megadott ECDSA tanúsítvány ellen. + +## Összegzés + +Áttekintettük, **how to sign PDF** fájlokat, hogyan **add digital signature pdf** egy adott oldalra, hogyan **crop image for pdf**, és végül hogyan **add image to pdf** az Aspose.Pdf segítségével C#‑ban. Az egész folyamat – a tanúsítvány betöltésétől a végső dokumentum mentéséig – egyetlen, könnyen olvasható forrásfájlba illeszkedik. + +Ha készen állsz a következő kihívásra, gondolj a következőkre: + +- **Több aláírás** hozzáadása különböző oldalakra (használd a “digital signature pdf page” koncepciót). +- **QR kódok** beágyazása, amelyek a hitelesítési szolgáltatásokra mutatnak. +- A folyamat automatizálása egy ASP.NET Core API‑ban, hogy on‑the‑fly PDF‑eket generálj. + +Ne feledd, a robusztus PDF‑automatizálás kulcsa a felelősségek tiszta szétválasztása: aláíráskezelés, képfeldolgozás és a végső dokumentum összeállítása. Kísérletezz a koordinátákkal, cseréld ki a képformátumot, vagy próbáld ki az időbélyegzőket – a munkafolyamatod most már teljesen bővíthető. + +Van kérdésed, széljegyzetes eset, vagy egy menő felhasználási mód, amit megosztanál? Írj egy megjegyzést alább, és jó kódolást kívánunk! + +{{< /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 8893ecd14..a6f3e3237 100644 --- a/pdf/hungarian/net/programming-with-security-and-signatures/_index.md +++ b/pdf/hungarian/net/programming-with-security-and-signatures/_index.md @@ -34,7 +34,8 @@ Az oktatóanyag részletes áttekintést nyújt a PDF-fájlok titkosságának é | [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 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 fájlok javítása – Teljes C# útmutató az Aspose.Pdf segítségével](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | Ismerje meg, hogyan javíthatja meg a hibás PDF fájlokat C#-ban az Aspose.PDF segítségével. | +| [PDF fájlok javítása – Teljes C# útmutató az Aspose.Pdf segítségével](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | Ismerje meg, hogyan javíthatja meg a hibás PDF fájlokat C#-ban az Aspose.PDF segítségével. | +| [PDF digitális aláírás ellenőrzése – Teljes C# útmutató](./validate-pdf-digital-signature-complete-c-guide/) | Ismerje meg, hogyan ellenőrizheti a PDF digitális aláírásait C#-ban az Aspose.PDF for .NET segítségével. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/hungarian/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/hungarian/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..c67229a14 --- /dev/null +++ b/pdf/hungarian/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,262 @@ +--- +category: general +date: 2026-03-29 +description: Ellenőrizze gyorsan a PDF digitális aláírását. Ismerje meg, hogyan ellenőrizheti + a PDF aláírást, a PDF aláírás állapotát, és hogyan észlelhet manipulált PDF-et az + Aspose.Pdf segítségével C#-ban. +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: hu +og_description: PDF digitális aláírás ellenőrzése C#-ban. Ez az útmutató bemutatja, + hogyan lehet ellenőrizni a PDF-aláírást, a PDF-aláírás integritását, és hogyan lehet + felismerni a manipulált PDF-et az Aspose.Pdf használatával. +og_title: PDF digitális aláírás ellenőrzése – Teljes C# útmutató +tags: +- C# +- Aspose.Pdf +- PDF Security +title: PDF digitális aláírás ellenőrzése – Teljes C# útmutató +url: /hu/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF digitális aláírás ellenőrzése – Teljes C# útmutató + +Gondolkodtál már azon, **hogyan ellenőrizheted egy PDF aláírását** anélkül, hogy a hajadba ragadnál? Talán kaptál egy szerződést, megnyitottad, és 100 %‑ban biztos akarsz lenni benne, hogy nem módosították. A jó hír, hogy nem kell kriminalisztikai labor, csak néhány C# sor és az Aspose.Pdf, hogy **PDF digitális aláírást ellenőrizhess** egy szempillantás alatt. + +Ebben az útmutatóban mindent végigvesszünk, amit tudnod kell: a könyvtár telepítésétől az eredmény értelmezéséig, sőt, még a széljegyek kezeléséről is, mint a több aláírás vagy egy sérült fájl. A végére képes leszel **PDF aláírás állapotát** programozottan ellenőrizni és **manipulált PDF** fájlokat felismerni, mielőtt bajt okoznának. + +## Amire szükséged lesz + +- **.NET 6.0 vagy újabb** (a kód .NET Framework‑ön is működik, de a .NET 6 a legoptimálisabb). +- **Aspose.Pdf for .NET** – letöltheted a NuGet‑ről (`Install-Package Aspose.Pdf`). +- Egy **aláírt PDF**, amelyet tesztelni szeretnél. Ha nincs, készíts egy egyszerű aláírt dokumentumot az Adobe Acrobat vagy bármely PDF aláíróval. + +> **Pro tipp:** Tartsd a PDF fájlokat a projekt gyökérkönyvtárán kívül; egy relatív útvonal, például `./Samples/signed.pdf`, tökéletes és elkerüli a bizalmas fájlok véletlen commitolását. + +## Lépésről‑lépésre megvalósítás + +Az alábbiakban a megoldást logikai egységekre bontjuk. Minden egység saját H2 címmel rendelkezik – az egyik még a fő kulcsszót is tartalmazza, ezzel teljesítve az SEO‑szabályt. + +### ## 1. lépés – Aspose.Pdf telepítése és hivatkozása + +Először add hozzá a NuGet‑csomagot a projektedhez: + +```powershell +dotnet add package Aspose.Pdf +``` + +Vagy, ha a Package Manager Console‑t használod: + +```powershell +Install-Package Aspose.Pdf +``` + +A csomag telepítése után a Visual Studio automatikusan hozzáadja a `using Aspose.Pdf;` névteret. Nem szükséges további DLL‑kezelés. + +### ## 2. lépés – Az aláírt PDF dokumentum betöltése + +Most nyissuk meg a fájlt. A `using` utasítás biztosítja, hogy a dokumentum megfelelően le legyen zárva, ami különösen nagy PDF‑ek esetén fontos. + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +> **Miért fontos:** A dokumentum betöltése hozzáférést biztosít a `DigitalSignatureInfo` objektumhoz, amely minden aláírással kapcsolatos lekérdezés kiindulópontja. + +### ## 3. lépés – Digitális aláírás információinak lekérése + +Az Aspose.Pdf a low‑level PKI részleteket barátságos API‑ban csomagolja. Szerezd meg a `DigitalSignatureInfo` tulajdonságot, és már minden kéznél lesz a **PDF aláírás ellenőrzéséhez**. + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +Ha a PDF több aláírást tartalmaz, a `signatureInfo` összegzi őket, és olyan tulajdonságokat tesz elérhetővé, mint a `Count`, `Certificates` és `IsCompromised`. Egyetlen aláírás esetén ezek a gyűjtemények csak egy elemet fognak tartalmazni. + +### ## 4. lépés – Megállapítás, hogy az aláírás sérült-e + +Az `IsCompromised` jelző azt mutatja, hogy a dokumentumot **az aláírás után** módosították-e. A `true` érték azt jelenti, hogy a PDF manipulált – pontosan azt, amit **manipulált PDF** felismerésére szeretnénk. + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +Ha alaposabb **PDF aláírás ellenőrzésre** van szükséged (pl. tanúsítványlánc validálás), megvizsgálhatod a `signatureInfo.Certificates` gyűjteményt és meghívhatod a `Validate()` metódust minden egyes tanúsítványon. A legtöbb esetben az `IsCompromised` elegendő. + +### ## 5. lépés – Eredmény kiírása a konzolra + +Végül tájékoztassuk a felhasználót. Kiírunk egy barátságos üzenetet, és egy megfelelő kilépési kódot is visszaadunk az automatizált szkripteknek. + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### Várt kimenet + +``` +Signature compromised: False +``` + +Ha szándékosan manipulálod a PDF‑et (pl. egy felesleges karaktert adsz hozzá), a kimenet `True`‑ra változik. Ekkor tudod, hogy a dokumentum integritása megsérült. + +### ## Széljegyek kezelése és gyakori buktatók + +#### 1. Több aláírás + +Ha egy PDF több aláíróval rendelkezik, az `IsCompromised` az *összes* állapotot tükrözi – ha **bármelyik** aláírás hibás, a jelző `true` lesz. Az érintett aláíró pontos meghatározásához: + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. Hiányzó aláírás + +Ha a PDF egyáltalán nincs aláírva, a `signatureInfo.Count` értéke `0`. Itt fontos megakadályozni a hamis biztonságérzetet: + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. Sérült PDF fájl + +Egy sérült fájl `PdfException`‑t dob. A betöltési logikát tekerd try‑catch‑be, hogy tiszta hibaüzenetet kapj: + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. Tanúsítvány validálás (haladó) + +Ha biztosra akarsz menni, hogy az aláíró tanúsítványa még érvényes (nem visszavont, a lejárati időn belül), meghívhatod: + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +Ez a lépés a egyszerű **PDF aláírás ellenőrzés**‑ről egy teljes **hogyan ellenőrizd a PDF aláírást** munkafolyamatra emel. + +### ## Teljes működő példa + +Mindent összevonva, itt a komplett, azonnal futtatható program: + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +A program futtatása parancssorból: + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +Egyértelmű jelentést kapsz arról, hogy a PDF sértetlen‑e, mely aláíró(k) vannak jelen, és tanúsítványaik még megbízhatóak‑e. + +## Vizuális áttekintés + +Az alábbi gyors diagram szemlélteti a folyamatot a **PDF betöltésétől** a **validációs eredmény kiírásáig**. Hasznos referencia, ha nagyobb dokumentum‑feldolgozó pipeline‑t tervezel. + +![validate pdf digital signature workflow diagram](image.png "Diagram showing PDF load → DigitalSignatureInfo → IsCompromised check") + +*Alt text: PDF digitális aláírás ellenőrzés munkafolyamat diagram* + +## Összegzés + +Most már egy **teljes, vég‑ponttól‑vég‑pontig megoldást** ismersz a PDF digitális aláírás ellenőrzésére Aspose.Pdf‑vel C#‑ban. A legfontosabb tanulságok: + +- PDF betöltése `Document`‑del. +- `DigitalSignatureInfo` lekérése és az `IsCompromised` ellenőrzése a **manipulált PDF** felismeréséhez. +- Több aláírás, hiányzó aláírás és sérült fájlok elegáns kezelése. +- Opcionális tanúsítvány validálás a teljes **hogyan ellenőrizd a PDF aláírást** ellenőrzőlista részeként. + +Innen tovább bővítheted a logikát – például validációs eredményeket adatbázisba mentheted, elutasíthatod az aláíratlan feltöltéseket egy web‑API‑ban, vagy integrálhatod egy dokumentumkezelő rendszerbe. Ha érdekelnek a PDF biztonsági funkciók, nézd meg a **PDF aláírás időbélyegének ellenőrzését**, **új aláírás hozzáadását**, vagy **PDF‑k titkosítását**. + +Van kérdésed a széljegyekkel kapcsolatban, vagy szeretnéd látni, hogyan **PDF aláírást ellenőrizhetsz** egy másik könyvtárral, például iText 7‑tel? Írj egy megjegyzést alul, és folytassuk a beszélgetést. 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/indonesian/net/conversion-export/_index.md b/pdf/indonesian/net/conversion-export/_index.md index 44fb8199f..79cb024ee 100644 --- a/pdf/indonesian/net/conversion-export/_index.md +++ b/pdf/indonesian/net/conversion-export/_index.md @@ -141,7 +141,7 @@ Pelajari cara memotong bagian tertentu dari halaman PDF dan mengubahnya menjadi Pelajari cara mengekspor data dari aplikasi ke PDF secara efisien menggunakan Aspose.PDF untuk .NET. Panduan ini mencakup pengaturan, contoh kode dalam C#, dan fitur-fitur utama. ### [Ekspor Anotasi PDF dengan Aspose.PDF .NET: Panduan Lengkap](./export-annotations-aspose-pdf-net/) -Pelajari cara mengekspor anotasi dari PDF secara efisien menggunakan Aspose.PDF untuk .NET. Panduan ini mencakup penyiapan, penerapan, dan praktik terbaik. +Pelajari cara mengekspor anotasi dari PDF secara efisien menggunakan Aspose.PDF .NET. Panduan ini mencakup penyiapan, penerapan, dan praktik terbaik. ### [Ekspor Data PDF ke XML dengan Aspose.PDF untuk .NET: Panduan Langkah demi Langkah](./export-pdf-data-to-xml-aspose-dotnet-guide/) Pelajari cara mengekspor data formulir PDF secara efisien ke XML terstruktur menggunakan Aspose.PDF untuk .NET, pustaka canggih yang dirancang untuk manipulasi PDF. @@ -186,7 +186,7 @@ Pelajari cara mengonversi dokumen PDF menjadi gambar TIFF biner menggunakan Aspo Pelajari cara mengonversi file PDF ke format EPUB menggunakan Aspose.PDF untuk .NET. Ikuti panduan langkah demi langkah ini untuk meningkatkan penerbitan digital dan aksesibilitas konten. ### [Cara Mengonversi PDF ke TIFF Multi-Halaman Menggunakan Aspose.PDF .NET - Panduan Langkah demi Langkah](./convert-pdf-to-multi-page-tiff-aspose-dotnet/) -Pelajari cara mengonversi PDF menjadi gambar TIFF multi-halaman berkualitas tinggi menggunakan Aspose.PDF untuk .NET. Ikuti panduan langkah demi langkah ini untuk implementasi mudah dalam C#. +Pelajari cara mengonversi PDF menjadi gambar TIFF multi-halaman berkualitas tinggi menggunakan Aspose.PDF untuk .NET. Ikuti panduan langkah demi langkah kami untuk implementasi mudah dalam C#. ### [Cara Mengonversi PDF ke PostScript di C# Menggunakan Aspose.PDF: Panduan Lengkap](./convert-pdf-to-postscript-aspose-csharp/) Pelajari cara mengonversi file PDF ke format PostScript menggunakan Aspose.PDF untuk .NET dengan panduan langkah demi langkah ini. Sempurna untuk kebutuhan pencetakan berkualitas tinggi. @@ -221,12 +221,24 @@ Pelajari cara mengonversi dokumen PDF ke HTML dengan gambar PNG eksternal menggu ### [Konversi PDF ke HTML dengan Aspose.PDF .NET: Panduan Lengkap](./aspose-pdf-net-pdf-to-html-conversion/) Kuasai konversi PDF ke HTML menggunakan Aspose.PDF untuk .NET. Tingkatkan aksesibilitas dan keterlibatan dokumen dengan opsi yang dapat disesuaikan. +### [Simpan PDF sebagai HTML dengan Aspose – Panduan Lengkap C#](./save-pdf-as-html-with-aspose-complete-c-guide/) +Panduan lengkap C# untuk menyimpan PDF sebagai file HTML menggunakan Aspose.PDF .NET, mencakup contoh kode dan opsi konfigurasi. + +### [Simpan PDF sebagai HTML dengan C# – Panduan Lengkap Langkah demi Langkah](./save-pdf-as-html-with-c-complete-step-by-step-guide/) +Pelajari cara menyimpan PDF sebagai file HTML menggunakan C# dengan panduan langkah demi langkah lengkap. + +### [Simpan PDF sebagai HTML dengan Aspose – Panduan Lengkap C#](./save-pdf-as-html-with-aspose-complete-c-guide/) +Panduan lengkap C# untuk menyimpan PDF sebagai file HTML menggunakan Aspose.PDF .NET, mencakup contoh kode dan opsi konfigurasi. + ### [Konversi PDF ke HTML dengan Aspose.PDF untuk .NET](./pdf-to-html-conversion-aspose-dot-net/) Tutorial kode untuk Aspose.PDF Net ### [Konversi PDF ke TIFF dalam .NET Menggunakan Aspose.PDF: Panduan Langkah demi Langkah](./pdf-to-tiff-conversion-aspose-pdf-net/) Pelajari cara mengonversi dokumen PDF ke gambar TIFF menggunakan Aspose.PDF untuk .NET. Kuasai kedalaman warna khusus dan teknik pemrosesan gambar tingkat lanjut. +### [Konversi PDF ke PDF/X-1a, Ekspor Halaman PNG & Tambahkan Stempel Teks](./convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/) +Pelajari cara mengonversi PDF ke standar PDF/X-1a, mengekspor halaman sebagai PNG, dan menambahkan stempel teks menggunakan Aspose.PDF untuk .NET. + ## Sumber Daya Tambahan - [Dokumentasi Aspose.PDF untuk Net](https://docs.aspose.com/pdf/net/) diff --git a/pdf/indonesian/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/indonesian/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..1bde64060 --- /dev/null +++ b/pdf/indonesian/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-03-29 +description: Konversi PDF ke PDF/X‑1a dan ekspor halaman PDF menjadi PNG dalam satu + alur – juga pelajari cara menambahkan stempel teks pada PDF menggunakan Aspose.Pdf + (C#). +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: id +og_description: konversi PDF ke PDF/X-1A dan ekspor halaman PDF ke PNG sambil menambahkan + stempel teks PDF – panduan lengkap C# dengan Aspose.Pdf. +og_title: konversi pdf ke pdf/x-1a, ekspor halaman png & tambahkan stempel teks +tags: +- Aspose.Pdf +- C# +- PDF processing +title: konversi pdf ke pdf/x-1a, ekspor halaman png & tambahkan stempel teks +url: /id/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# konversi pdf ke pdf/x-1a, ekspor halaman png & tambahkan stempel teks – Panduan Lengkap C# + +Pernahkah Anda perlu **mengonversi pdf ke pdf/x-1a** tetapi juga menginginkan pratinjau PNG cepat dari halaman pertama serta stempel teks khusus pada dokumen yang sama? Anda tidak sendirian. Dalam banyak alur produksi—bayangkan pra‑pemeriksaan siap‑cetak atau pembuatan laporan otomatis—Anda sering menemui kombinasi persyaratan tersebut. + +Dalam tutorial ini kita akan menelusuri satu alur kerja terpadu yang melakukan tiga hal secara berurutan: **mengonversi pdf ke pdf/x-1a**, **mengekspor halaman pdf ke png**, dan **menambahkan stempel teks pada pdf**. Kode menggunakan pustaka Aspose.Pdf untuk .NET, sehingga Anda mendapatkan solusi kelas profesional tanpa harus berurusan dengan detail internal PDF tingkat rendah. Pada akhir tutorial Anda akan memiliki program C# yang dapat dijalankan dan dapat disisipkan ke dalam aplikasi konsol apa pun, Azure Function, atau langkah CI. + +> **Apa yang akan Anda dapatkan** – file sumber lengkap, penjelasan langkah‑demi‑langkah, tips untuk menghindari jebakan umum, dan cara cepat memverifikasi hasil. + +## Prasyarat + +- .NET 6.0 atau lebih baru (API juga berfungsi dengan .NET Framework 4.x). +- Paket NuGet Aspose.Pdf untuk .NET (`Aspose.Pdf`) – versi 23.10 adalah yang terbaru pada saat penulisan. +- Sebuah PDF masukan (`input.pdf`) dan file profil ICC (`Coated_Fogra39L_VIGC_300.icc`) yang ditempatkan di folder yang Anda kontrol. +- Familiaritas dasar dengan C# dan Visual Studio (atau IDE favorit Anda). + +Jika ada yang belum Anda kenal, cukup instal paket NuGet dengan: + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +Sekarang mari kita mulai. + +## Langkah 1: Muat dokumen PDF sumber + +Hal pertama yang kami lakukan adalah membuka PDF yang ingin diproses. Kelas `Document` milik Aspose.Pdf mewakili seluruh file, dan memuat kontennya secara malas, sehingga Anda tidak menanggung penalti kinerja sampai Anda benar‑benar mengakses halaman. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*Mengapa ini penting*: Memuat dokumen di awal memberi kita satu objek tunggal untuk dipakai dalam konversi, rendering, dan stamping. Jika Anda melewatkan pemuatan eksplisit dan mencoba bekerja pada file yang tidak ada, Anda akan mendapatkan `FileNotFoundException` yang membingungkan di kemudian hari. + +## Langkah 2: Konversi dokumen ke PDF/X‑1a menggunakan profil ICC khusus + +PDF/X‑1a adalah standar de‑facto untuk PDF siap cetak. Langkah konversi juga memungkinkan Anda menyematkan **Output Intent** (profil ICC) sehingga RIP downstream tahu persis bagaimana warna harus ditafsirkan. + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*Tip profesional*: Jika Anda memerlukan penanganan error yang lebih ketat, ganti `ConvertErrorAction.Delete` dengan `ConvertErrorAction.Throw`. Dengan begitu konversi akan dibatalkan pada masalah kepatuhan pertama, yang sangat berguna untuk pipeline QA otomatis. + +## Langkah 3: Ekspor halaman pertama sebagai PNG sambil menganalisis font + +Pratinjau PNG sering diperlukan untuk pemeriksaan visual cepat atau pembuatan thumbnail. Dengan mengaktifkan `AnalyzeFonts`, Aspose memastikan semua font yang disematkan dirasterkan dengan benar, menghindari kejutan glyph yang hilang. + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +Setelah proses ini selesai Anda akan menemukan `page1.png` di samping file sumber Anda. Buka dengan penampil gambar apa pun untuk memastikan konversi terlihat benar. + +## Langkah 4: Tambahkan stempel teks yang secara otomatis menyesuaikan ukuran font + +Sebuah **stempel teks** adalah cara praktis untuk memberi watermark atau anotasi pada PDF tanpa mengubah aliran konten yang mendasarinya. Menetapkan `AutoAdjustFontSizeToFitStampRectangle` berarti pustaka akan memperkecil atau memperbesar teks sehingga tidak pernah melampaui batas persegi panjang yang Anda definisikan. + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*Mengapa auto‑size?* Jika Anda kemudian mengubah teks stempel menjadi lebih panjang (misalnya timestamp dinamis), Anda tidak perlu menghitung ulang ukuran font secara manual—stempel akan menyesuaikan secara otomatis. + +## Langkah 5: Simpan dokumen PDF yang telah diperbarui + +Akhirnya, tulis semua perubahan kembali ke disk. Anda dapat menimpa file asli atau membuat file baru; contoh di bawah ini membuat `output.pdf`. + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +Setelah penyimpanan selesai, Anda akan memiliki: + +1. File **PDF/X‑1a** yang mematuhi standar (`output.pdf`). +2. **Pratinjau PNG** dari halaman pertama (`page1.png`). +3. **Stempel teks** yang pas sempurna dalam persegi panjangnya. + +### Daftar periksa verifikasi cepat + +| ✅ Pemeriksaan | Cara memverifikasi | +|--------|---------------| +| Kepatuhan PDF/X‑1a | Buka `output.pdf` di Adobe Acrobat → *Print Production* → *Preflight* dan pilih “PDF/X‑1a:2001”. | +| PNG terlihat benar | Buka `page1.png` di Windows Photo Viewer atau editor gambar apa pun. | +| Stempel muncul | Gulir `output.pdf` – teks “Auto‑size” harus berada di tengah halaman 1. | + +![pratinjau convert pdf ke pdf/x-1a](image.png "pratinjau convert pdf ke pdf/x-1a menampilkan halaman yang diberi stempel") + +*Teks alt gambar*: **pratinjau convert pdf ke pdf/x-1a dengan stempel teks auto‑size** – menunjukkan PDF akhir setelah semua langkah. + +## Variasi Umum & Kasus Edge + +- **Beberapa halaman** – Jika Anda perlu menempelkan stempel pada setiap halaman, lakukan loop pada `pdfDoc.Pages` dan panggil `AddStamp` di dalam loop. +- **Format output berbeda** – Ubah `PdfFormat.PDF_X_1A` menjadi `PdfFormat.PDF_A_1B` untuk PDF arsip. +- **PNG resolusi tinggi** – Setel `Resolution = 600` pada `RenderingOptions` untuk thumbnail kualitas cetak. +- **Font khusus untuk stempel** – Tetapkan `autoSizeStamp.Font = FontRepository.FindFont("Arial")` sebelum menambahkan stempel. +- **Penanganan error** – Bungkus setiap langkah utama dalam `try/catch` dan log `ConversionException` atau `FileNotFoundException` untuk memudahkan debugging. + +## Contoh Lengkap yang Siap Pakai (Copy‑Paste) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Setup paths + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Load the source document + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Convert to PDF/X‑1a (print‑ready) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Export first page as PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Add auto‑sizing text stamp (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/indonesian/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..270bb01b4 --- /dev/null +++ b/pdf/indonesian/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,270 @@ +--- +category: general +date: 2026-03-29 +description: Simpan PDF sebagai HTML menggunakan Aspose.PDF di C#. Pelajari cara mengonversi + PDF ke HTML, menghilangkan gambar, dan memverifikasi tanda tangan PDF dalam satu + tutorial. +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: id +og_description: Simpan PDF sebagai HTML dengan Aspose.PDF di C#. Panduan ini menunjukkan + cara mengonversi PDF ke HTML, melewatkan gambar, dan memvalidasi tanda tangan digital + PDF. +og_title: Simpan PDF sebagai HTML dengan Aspose – Panduan Lengkap C# +tags: +- Aspose.PDF +- C# +- PDF processing +title: Simpan PDF sebagai HTML dengan Aspose – Panduan Lengkap C# +url: /id/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Simpan PDF sebagai HTML dengan Aspose – Panduan Lengkap C# + +Pernah bertanya-tanya bagaimana cara **menyimpan PDF sebagai HTML** tanpa menyertakan setiap gambar yang tersemat? Mungkin Anda sedang membuat pratinjau web yang ringan dan beban gambar tambahan memperlambat kecepatan halaman. Kabar baiknya, Anda tidak perlu menulis parser khusus—Aspose.PDF melakukan semua pekerjaan berat untuk Anda. Dalam tutorial ini kita akan **mengonversi PDF ke HTML**, menghilangkan gambar, dan kemudian **memverifikasi tanda tangan PDF** untuk memastikan dokumen tidak diubah. + +Kami akan membahas setiap baris kode, menjelaskan *mengapa* setiap pengaturan penting, dan bahkan menyentuh kasus tepi seperti PDF besar atau tanda tangan yang hilang. Pada akhir tutorial Anda akan memiliki aplikasi konsol C# siap‑jalankan yang menghasilkan file HTML bersih dan memberikan hasil true/false yang jelas untuk tanda tangan digital. + +## Apa yang Akan Anda Pelajari + +- Memuat file PDF dengan Aspose.PDF. +- Menggunakan `HtmlSaveOptions` untuk **mengonversi PDF ke HTML** sambil menghilangkan gambar. +- Menyimpan HTML yang dihasilkan ke disk. +- Menyiapkan objek `PdfFileSignature` untuk **memverifikasi tanda tangan PDF**. +- Menginterpretasikan hasil boolean dan menangani jebakan umum. +- Tips tambahan untuk kinerja dan pemecahan masalah. + +### Prasyarat + +- .NET 6.0 atau lebih baru (kode ini juga bekerja pada .NET Framework 4.7+). +- Paket NuGet Aspose.PDF untuk .NET (versi 23.12 atau lebih baru). +- PDF yang ditandatangani (`input.pdf`) yang berisi tanda tangan bernama “Sig1”. +- Pengetahuan dasar tentang C# dan aplikasi konsol. + +> **Pro tip:** Jika Anda belum menginstal paket Aspose.PDF, jalankan `dotnet add package Aspose.PDF` dari folder proyek Anda. + +--- + +## Langkah 1: Muat Dokumen PDF Sumber + +Sebelum kita dapat melakukan apa pun, kita memerlukan representasi PDF dalam memori. Kelas `Document` milik Aspose.PDF membaca file dan membangun pohon halaman, sumber daya, dan anotasi. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**Mengapa ini penting:** Memuat dokumen sekali menjaga penggunaan memori tetap dapat diprediksi. Jika Anda berencana memproses banyak PDF dalam sebuah loop, pertimbangkan untuk menggunakan kembali instance `Document` yang sama setelah memanggil `pdfDocument.Dispose()`. + +--- + +## Langkah 2: Konfigurasikan Opsi Penyimpanan HTML – Lewati Gambar + +Kita ingin **menyimpan PDF sebagai HTML** tetapi tanpa data gambar yang berat. `HtmlSaveOptions` memberi kita kontrol granular, dan flag `SkipImages` memberi tahu Aspose untuk menghilangkan tag `` sepenuhnya. + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**Mengapa Anda mungkin melewatkan gambar:** Untuk portal pratinjau atau desain mobile‑first, setiap kilobyte sangat berarti. Menghapus gambar juga menghindari masalah lisensi jika PDF sumber berisi grafik berhak cipta. + +--- + +## Langkah 3: Ekspor PDF sebagai File HTML Tanpa Gambar + +Sekarang kita benar‑benar menulis file HTML. Metode `Save` menghormati opsi yang telah kita atur sebelumnya. + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**Hasil yang akan Anda lihat:** File `.html` yang berisi konten teks, tabel, dan grafik vektor (jika ada), tetapi tidak ada tag ``. Buka di browser dan Anda akan melihat rendering bersih tanpa gambar dari PDF asli. + +--- + +## Langkah 4: Siapkan Verifier Tanda Tangan untuk Dokumen yang Sama + +Kelas `PdfFileSignature` milik Aspose.PDF memungkinkan kita memeriksa tanda tangan digital yang tertanam dalam PDF. Kita akan membuat sebuah instance yang menunjuk ke `Document` yang sudah dimuat. + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**Catatan tentang penanganan sumber daya:** Pernyataan `using` memastikan verifier melepaskan semua handle native setelah selesai, mencegah masalah penguncian file di Windows. + +--- + +## Langkah 5: Verifikasi Tanda Tangan Bernama “Sig1” Menggunakan SHA‑3‑256 + +Sebagian besar PDF menggunakan SHA‑256 atau SHA‑1, tetapi Aspose juga mendukung keluarga SHA‑3 yang lebih baru. Di sini kita secara eksplisit meminta `Sha3_256`. Jika tanda tangan tidak ada atau algoritma tidak cocok, metode akan mengembalikan `false`. + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Apa yang dapat berarti “false”:** + +1. **Tanda tangan tidak ditemukan** – mungkin PDF menggunakan nama yang berbeda; daftar tanda tangan dengan `signatureVerifier.GetSignatureNames()`. +2. **Algoritma tidak cocok** – PDF mungkin ditandatangani dengan SHA‑256; coba `DigestHashAlgorithm.Sha256`. +3. **Dokumen diubah** – perubahan apa pun setelah penandatanganan membatalkan hash, menghasilkan `false`. + +--- + +## Menangani Kasus Tepi Umum + +### PDF Besar + +Jika PDF sumber Anda melebihi beberapa ratus megabyte, pertimbangkan mengaktifkan **mode penghematan memori**: + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +Ini akan melakukan streaming halaman sesuai permintaan, mengurangi tekanan pada RAM. + +### Tanda Tangan Hilang + +Ketika Anda tidak yakin dengan nama tanda tangan, enumerasikan semuanya: + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +Pilih nama yang tepat dari daftar sebelum memanggil `VerifySignature`. + +### Kompatibilitas Browser + +Beberapa browser mengalami kesulitan dengan HTML yang berisi CSS default Aspose. Menetapkan `htmlSaveOptions.EmbedCss = true` (seperti yang ditunjukkan sebelumnya) akan menyisipkan gaya secara inline, membuat file lebih portabel. + +--- + +## Contoh Lengkap yang Siap Pakai + +Berikut adalah program lengkap yang dapat Anda salin‑tempel, mencakup semua langkah, penanganan error, dan diagnostik opsional. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Output konsol yang diharapkan** (jalur akan berbeda): + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +Jika tanda tangan tidak valid, baris terakhir akan menampilkan `Signature valid: False`. + +--- + +## Pertanyaan yang Sering Diajukan + +**T: Bisakah saya mengonversi PDF ke HTML *dengan* gambar?** +J: Tentu saja. Cukup set `SkipImages = false` (atau hapus properti tersebut). Aspose akan mengekstrak setiap gambar sebagai file terpisah di sub‑folder sebelah file HTML. + +**T: Apakah ini bekerja di Linux?** +J: Ya. Aspose.PDF bersifat lintas‑platform; pastikan jalur `YOUR_DIRECTORY` menggunakan slash maju atau `Path.Combine`. + +**T: Bagaimana jika saya perlu memvalidasi tanda tangan digital PDF dengan sertifikat khusus?** +J: Gunakan overload `PdfFileSignature.ValidateSignature` yang menerima objek `X509Certificate2`. Metode tersebut juga mengembalikan `SignatureInfo` terperinci yang dapat Anda inspeksi. + +**T: Apakah `aspose convert pdf` terbatas pada C#?** +J: Tidak. API yang sama tersedia untuk Java, Python, dan bahasa .NET lainnya. Konsep—load, set options, save, verify—tetap sama. + +--- + +## Kesimpulan + +Anda kini tahu secara tepat cara **menyimpan PDF sebagai HTML** menggunakan Aspose.PDF, menghilangkan gambar yang tidak diperlukan, dan **memverifikasi tanda tangan PDF** dalam satu program C# yang terstruktur. Prosesnya sederhana: muat, konfigurasikan, ekspor, dan validasi. Dengan diagnostik opsional dan penanganan kasus tepi yang telah dibahas, Anda dapat menyesuaikan pola ini untuk pekerjaan batch, layanan web, atau utilitas desktop. + +Siap untuk langkah berikutnya? Coba **konversi PDF ke HTML** sambil mempertahankan gambar, atau bereksperimen dengan algoritma hash yang berbeda untuk **memvalidasi tanda tangan digital PDF** terhadap PKI Anda sendiri. Anda juga dapat menjelajahi konversi PDF ke DOCX dengan Aspose atau menggabungkan beberapa PDF sebelum mengekspor—setiap langkah merupakan ekstensi alami dari alur kerja yang baru saja kita bangun. + +Selamat coding, semoga pratinjau HTML Anda tetap ringan dan tanda tangan Anda tetap dapat dipercaya! + +![contoh menyimpan pdf sebagai html](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/indonesian/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..f1a3a999d --- /dev/null +++ b/pdf/indonesian/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,258 @@ +--- +category: general +date: 2026-03-29 +description: Simpan PDF sebagai HTML menggunakan C# dan Aspose.PDF. Pelajari cara + menyisipkan halaman ke dalam PDF, menambahkan halaman PDF kosong, dan membuat tanda + tangan PKCS7 terpisah dalam satu alur. +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: id +og_description: Simpan PDF sebagai HTML dalam C# dengan Aspose.PDF. Panduan ini menunjukkan + cara memuat PDF, menyisipkan halaman, menambahkan halaman kosong, menandatangani + dengan PKCS7, dan mengekspor ke HTML. +og_title: Simpan PDF sebagai HTML dengan C# – Tutorial Pemrograman Lengkap +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: Simpan PDF sebagai HTML dengan C# – Panduan Lengkap Langkah demi Langkah +url: /id/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Simpan PDF sebagai HTML dengan C# – Panduan Lengkap Langkah‑per‑Langkah + +Pernahkah Anda perlu **save PDF as HTML** tetapi tidak yakin bagaimana menjaga tata letak tetap utuh sambil juga mengubah dokumen sumber? Anda bukan satu‑satunya—para pengembang sering berurusan dengan perbaikan pagination, halaman kosong, dan tanda tangan digital sebelum konversi. Dalam tutorial ini kami akan menjelaskan satu alur kerja terpadu yang melakukan hal tersebut, dan kami juga akan menyisipkan cara **insert page into PDF**, **add blank PDF page**, dan **create PKCS7 detached signature** sepanjang jalan. + +Pada akhir panduan ini Anda akan memiliki program C# siap‑jalankan yang memuat PDF yang ada, mengubah susunan halamannya, menandatangani halaman pertama, dan akhirnya mengekspor semuanya ke HTML dengan prioritas Unicode CMap. Tanpa referensi yang menggantung, hanya solusi mandiri yang dapat Anda masukkan ke proyek .NET mana pun. + +## Apa yang Anda Butuhkan + +- **Aspose.PDF for .NET** (versi terbaru, 23.x pada saat penulisan). +- **.NET 6.0** atau yang lebih baru – kode juga dapat dikompilasi dengan .NET Framework 4.7, tetapi .NET 6 memberikan kinerja terbaik. +- Sebuah **certificate file** (`.pfx`) dan kata sandinya untuk tanda tangan PKCS7. +- Sebuah PDF input (`input.pdf`) yang ingin Anda manipulasi. + +Jika Anda sudah memiliki semua itu, kita dapat langsung masuk ke kode. Jika belum, dapatkan percobaan gratis 30‑hari Aspose dari situs resmi; API-nya identik dengan versi berbayar. + +--- + +## Langkah 1 – Load PDF Document in C# (Primary Action) + +Hal pertama yang harus dilakukan adalah membawa PDF ke memori. Kelas `Document` milik Aspose melakukan semua pekerjaan berat. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*Mengapa ini penting:* Memuat file memberi Anda model objek yang dapat diubah. Dari sini Anda dapat **insert page into PDF**, menambahkan halaman kosong, atau menerapkan tanda tangan tanpa menyentuh file asli di disk. + +--- + +## Langkah 2 – Insert a Page and Add a Blank PDF Page + +Kadang‑kadang PDF sumber memiliki artefak pagination—mungkin ada halaman yang hilang atau duplikat. Di bawah ini kami menyalin halaman 2 tepat setelah halaman 1, lalu menambahkan satu halaman kosong sepenuhnya di akhir. + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*Pro tip:* `UpdatePagination()` menghitung ulang nomor halaman yang muncul di footer atau header yang dihasilkan oleh Aspose. Melewatkan langkah ini dapat meninggalkan nomor yang usang di HTML akhir. + +--- + +## Langkah 3 – Create a PKCS7 Detached Signature (SHA‑512) + +Tanda tangan PKCS7 yang terpisah membuktikan integritas dokumen tanpa menyematkan data tanda tangan langsung ke aliran konten PDF. Kami akan menggunakan sertifikat yang disimpan dalam file PFX. + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*Mengapa SHA‑512?* Ia menawarkan hash yang lebih kuat dibandingkan SHA‑256 sekaligus tetap didukung secara luas. Jika Anda memerlukan kepatuhan dengan standar lama, ganti `Sha512` dengan `Sha256`. + +--- + +## Langkah 4 – Apply the Digital Signature to Page 1 with a Visible Rectangle + +Kami akan menempatkan bidang tanda tangan yang terlihat pada halaman pertama. Persegi panjang menentukan di mana gambar tanda tangan (atau placeholder) muncul. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*Kasus tepi:* Jika halaman target sudah berisi bidang formulir dengan nama yang sama, API akan melemparkan pengecualian. Pastikan nama bidang unik atau bersihkan bidang yang ada sebelum menandatangani. + +--- + +## Langkah 5 – Configure HTML Save Options to Prioritize Unicode CMap + +Saat mengonversi ke HTML, Aspose dapat menyematkan font sebagai base‑64, menggunakan subset, atau mengandalkan Unicode CMaps. Memprioritaskan Unicode mengurangi ukuran file dan meningkatkan kemampuan pencarian teks. + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*Apa yang dilakukan ini?* Ia memberi tahu konverter untuk lebih memilih Unicode CMaps daripada penyematan font khusus bila memungkinkan, yang ideal untuk PDF multibahasa. + +--- + +## Langkah 6 – Save the Signed Document as HTML + +Akhirnya, tulis PDF yang telah diproses ke dalam folder HTML (Aspose membuat direktori dengan file pendukung seperti CSS dan gambar). + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +Jika Anda membuka `cmap.html` di peramban, Anda akan melihat tata letak PDF asli ditampilkan sebagai HTML, lengkap dengan gambar tanda tangan yang terlihat pada halaman 1. + +--- + +## Contoh Kerja Lengkap (Semua Langkah Digabung) + +Berikut adalah program lengkap yang dapat Anda salin‑tempel ke aplikasi konsol. Ia mencakup semua direktif `using` yang diperlukan serta penanganan error. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**Hasil yang diharapkan:** +- `cmap.html` (file HTML utama) +- folder `cmap_files` yang berisi CSS, gambar, dan sumber daya font. +- Halaman pertama menampilkan kotak tanda tangan yang terlihat pada koordinat yang Anda tentukan. + +--- + +## Pertanyaan yang Sering Diajukan & Kasus Tepi + +| Pertanyaan | Jawaban | +|------------|---------| +| *Bisakah saya menggunakan sertifikat self‑signed?* | Ya, Aspose.PDF menerima PFX yang valid apa pun. Hanya ingat bahwa peramban mungkin menandai tanda tangan sebagai tidak tepercaya. | +| *Bagaimana jika saya perlu menandatangani beberapa halaman?* | Buat panggilan `PdfFileSignature` terpisah untuk tiap halaman, atau gunakan loop yang memperbarui `pageNumber`. | +| *Apakah ada cara menyematkan gambar tanda tangan alih‑alih persegi panjang?* | Sediakan objek `SignatureAppearance` dengan aliran gambar ke `PdfFileSignature.Sign`. | +| *PDF saya berisi konten terenkripsi—apakah masih bisa dikonversi?* | Dekripsi terlebih dahulu menggunakan `pdfDoc.Decrypt("ownerPassword")`, kemudian jalankan langkah‑langkahnya. | +| *Apakah HTML akan mempertahankan hyperlink dari PDF asli?* | Aspose mempertahankan anotasi tautan secara default. Jika Anda melihat tautan yang hilang, atur `htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;` | + +--- + +## Penutup + +Kami baru saja mendemonstrasikan cara **save PDF as HTML** sambil sekaligus **insert page into PDF**, **add blank PDF page**, dan **create PKCS7 detached signature**—semuanya menggunakan C#. Alur kerja ini linear, mudah di‑debug, dan sepenuhnya dapat disesuaikan untuk proyek yang lebih besar. + +Selanjutnya, Anda mungkin ingin menjelajahi: + +- **Batch processing** – loop melalui folder PDF dan konversi masing‑masing. +- **Custom CSS** – ubah `HtmlSaveOptions.CustomCss` agar sesuai dengan gaya situs Anda. +- **Advanced signatures** – gunakan server timestamp atau LTV (Long‑Term Validation) untuk penandatanganan tingkat kepatuhan. + +Cobalah hal‑hal tersebut, dan Anda akan memiliki pipeline PDF‑to‑HTML yang kuat, SEO‑friendly, dan layak untuk sitasi oleh asisten AI. Selamat coding! + +--- + +![Diagram menunjukkan PDF dimuat, halaman disisipkan, tanda tangan diterapkan, kemudian output HTML](/images/save-pdf-as-html-workflow.png "alur kerja menyimpan pdf sebagai html") + +*Teks alt gambar:* **diagram alur kerja menyimpan pdf sebagai html** + +{{< /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 9de5e0f7f..ac91a515b 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 @@ -56,12 +55,16 @@ 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. + ### [Muat Dokumen PDF C# – Konversi ke PDF/X‑4 & Daftar Tanda Tangan](./load-pdf-document-c-convert-to-pdf-x-4-list-signatures/) Pelajari cara memuat dokumen PDF, mengonversinya ke format PDF/X‑4, dan menampilkan daftar tanda tangan menggunakan C# dan Aspose.PDF. ### [Validasi Tanda Tangan PDF dengan Aspose – Konversi PDF ke HTML](./validate-pdf-signature-with-aspose-convert-pdf-to-html/) Pelajari cara memvalidasi tanda tangan PDF dan mengonversi PDF ke HTML menggunakan Aspose. +### [Cara Menandatangani PDF dan Menambahkan Gambar – Panduan Lengkap C#](./how-to-sign-pdf-and-add-images-complete-c-guide/) +Panduan langkah demi langkah untuk menandatangani PDF dan menambahkan gambar menggunakan Aspose.PDF untuk .NET dengan C#. + ## Sumber Daya Tambahan - [Dokumentasi Aspose.PDF untuk Net](https://docs.aspose.com/pdf/net/) diff --git a/pdf/indonesian/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/indonesian/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..200a845d8 --- /dev/null +++ b/pdf/indonesian/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-03-29 +description: Cara menandatangani PDF dengan tanda tangan digital dan menambahkan gambar + yang dipotong di C#. Pelajari cara menambahkan tanda tangan digital pada PDF, memotong + gambar untuk PDF, dan menambahkan gambar ke PDF dengan mudah. +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: id +og_description: Cara menandatangani PDF dengan tanda tangan digital dan menyisipkan + gambar yang dipotong menggunakan Aspose.Pdf di C#. Ikuti panduan ini untuk solusi + lengkap. +og_title: Cara Menandatangani PDF dan Menambahkan Gambar – Tutorial C# Langkah demi + Langkah +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: Cara Menandatangani PDF dan Menambahkan Gambar – Panduan Lengkap C# +url: /id/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara Menandatangani PDF dan Menambahkan Gambar – Panduan Lengkap C# + +Pernah bertanya-tanya **cara menandatangani PDF** secara programatis sambil menyisipkan gambar khusus? Mungkin Anda sedang membangun alur kerja persetujuan dan memerlukan tanda tangan yang sah secara hukum *dan* thumbnail foto penandatangan pada halaman yang sama. Singkatnya, Anda ingin **menambahkan digital signature pdf** ke konten, memotong gambar tersebut, dan kemudian **menambahkan gambar ke pdf** tanpa kesulitan. + +Tutorial ini memandu Anda melalui setiap langkah—dari memuat sertifikat ECDSA PKCS#7 hingga memotong JPEG dan menempelkannya ke halaman yang ditandatangani. Pada akhir tutorial Anda akan memiliki satu file C# yang dapat dijalankan yang menandatangani halaman 1, memotong foto menjadi 400 × 400 px, dan menempatkannya pada lokasi yang tepat. Tanpa skrip eksternal, tanpa sulap, hanya kode yang jelas dan penjelasan. + +## Prasyarat + +- .NET 6.0 atau lebih baru (kode ini juga berfungsi dengan .NET Framework 4.7+) +- **Aspose.Pdf for .NET** paket NuGet (versi 23.9 atau lebih baru) +- Sertifikat ECDSA P‑256 dalam format PKCS#7 (`.pfx`) dan kata sandinya +- Gambar JPEG yang ingin Anda sematkan (misalnya `photo.jpg`) + +> **Tips profesional:** Simpan file sertifikat Anda di luar kontrol sumber dan lindungi kata sandi dengan manajer rahasia. + +--- + +## Langkah 1: Siapkan Proyek dan Impor + +Pertama, buat aplikasi console (atau integrasikan ini ke dalam layanan yang sudah ada). Tambahkan referensi Aspose.Pdf: + +```bash +dotnet add package Aspose.Pdf +``` + +Kemudian sertakan namespace yang diperlukan: + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +Pernyataan `using` ini memberi Anda akses ke kelas `Document`, `Signature`, dan `Rectangle` yang akan kita perlukan nanti. + +## Langkah 2: Muat PDF dan Siapkan Tanda Tangan + +Kami akan membuka PDF yang sudah ada (`source.pdf`) dan membuat objek **digital signature pdf** yang menggunakan tanda tangan PKCS#7 terpisah. Sertifikat tersebut adalah kunci ECDSA P‑256, yang secara luas diterima untuk kepatuhan. + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**Mengapa ini penting:** Menggunakan tanda tangan PKCS#7 terpisah menjaga konten PDF asli tetap utuh sambil menyematkan hash kriptografis. Ini adalah pendekatan standar industri untuk PDF yang sah secara hukum. + +## Langkah 3: Terapkan Tanda Tangan Digital ke Halaman Tertentu + +Sekarang kami akan menempatkan bidang tanda tangan yang terlihat pada **halaman 1**. Persegi panjang menentukan di mana kotak tanda tangan muncul (koordinat dalam poin, di mana 1 inci = 72 poin). + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +Jika Anda tidak memerlukan kotak yang terlihat, setel `isVisible` ke `false`. `signatureRect` dapat disesuaikan agar cocok dengan tata letak dokumen Anda. + +## Langkah 4: Buka Stream Gambar dan Tentukan Area Pemotongan + +Kami akan membaca file JPEG ke dalam stream dan menentukan **source rectangle** yang memilih 400 × 400 piksel bagian kiri‑atas. Ini adalah operasi **crop image for pdf**. + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **Kasus tepi:** Jika gambar Anda lebih kecil dari 400 × 400, pemotongan akan otomatis menyesuaikan dengan dimensi sebenarnya—tidak ada pengecualian yang dilempar. + +## Langkah 5: Tentukan Lokasi Gambar yang Dipotong + +Selanjutnya, atur **destination rectangle** pada halaman PDF. Pada contoh ini kami menempatkan gambar pada (50, 50) dengan ukuran 200 × 200 poin (≈2,78 inci persegi). + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +Silakan bereksperimen: ubah koordinat X/Y untuk memindahkan gambar, atau sesuaikan lebar/tinggi untuk skala. + +## Langkah 6: Sisipkan Gambar yang Dipotong ke Halaman yang Ditandatangani + +Akhirnya, kami menambahkan gambar ke **halaman 1** (halaman yang sama yang kini membawa tanda tangan). Overload `AddImage` yang kami gunakan menerima source dan destination rectangle, secara efektif melakukan pemotongan dan penempatan dalam satu panggilan. + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +Di balik layar, Aspose.Pdf mengekstrak wilayah 400 × 400 piksel, mengubah skalanya menjadi 200 × 200 poin, dan menuliskannya ke dalam stream konten PDF. + +## Langkah 7: Simpan PDF yang Ditandatangani dan Ditingkatkan dengan Gambar + +Setelah semua modifikasi, simpan dokumen. Anda dapat menimpa file asli atau menulis ke file baru. + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +Saat Anda membuka `output_signed.pdf` di Adobe Acrobat atau penampil PDF apa pun, Anda akan melihat: + +- Bidang tanda tangan yang terlihat pada koordinat yang Anda tentukan. +- Foto yang dipotong ditempatkan pada (50, 50) di halaman 1. +- Tanda tangan digital tervalidasi (asalkan penampil mempercayai sertifikat Anda). + +--- + +## Pertanyaan yang Sering Diajukan (FAQ) + +| Question | Answer | +|----------|--------| +| **Bisakah saya menandatangani halaman yang berbeda?** | Ubah argumen `pageNumber` pada `signature.Sign` ke indeks halaman yang valid (berbasis 1). | +| **Bagaimana jika saya memerlukan beberapa tanda tangan?** | Buat instance `Signature` baru untuk setiap halaman atau lokasi, gunakan kembali `pkcsSignature` yang sama jika sertifikat yang sama berlaku. | +| **Apakah pemotongan gambar terbatas pada persegi panjang?** | Ya, `AddImage` milik Aspose.Pdf bekerja dengan wilayah persegi panjang. Untuk bentuk yang kompleks, Anda perlu memproses gambar terlebih dahulu (misalnya, menggunakan System.Drawing) sebelum disematkan. | +| **Bagaimana cara membuat tanda tangan tidak terlihat?** | Setel `isVisible` ke `false` dan hilangkan `signatureRect`. Tanda tangan tetap valid secara kriptografis. | +| **Format apa saja yang dapat saya sematkan selain JPEG?** | PNG, BMP, GIF, dan TIFF semuanya didukung. Cukup ubah jalur file dan pastikan stream membaca byte yang tepat. | + +## Contoh Lengkap yang Berfungsi + +Berikut adalah program lengkap yang berdiri sendiri. Salin‑tempel ke dalam `Program.cs`, sesuaikan jalur, dan jalankan. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**Hasil yang diharapkan:** Membuka `output_signed.pdf` menampilkan bidang tanda tangan (100 × 100 → 300 × 300 poin) dan gambar 200 × 200 poin yang diambil dari sudut kiri‑atas `photo.jpg`. Tanda tangan tervalidasi terhadap sertifikat ECDSA yang disediakan. + +## Kesimpulan + +Kami telah membahas **cara menandatangani PDF** file, cara **menambahkan digital signature pdf** ke halaman tertentu, cara **memotong gambar untuk pdf**, dan akhirnya cara **menambahkan gambar ke pdf** menggunakan Aspose.Pdf di C#. Seluruh alur—dari memuat sertifikat hingga menyimpan dokumen akhir—termasuk dalam satu file sumber yang mudah dibaca. + +Jika Anda siap untuk tantangan berikutnya, pertimbangkan: + +- Menambahkan **banyak tanda tangan** pada halaman yang berbeda (gunakan konsep “digital signature pdf page”). +- Menyematkan **kode QR** yang menautkan ke layanan verifikasi. +- Mengotomatiskan proses dalam API ASP.NET Core untuk pembuatan PDF secara langsung. + +Ingat, kunci otomatisasi PDF yang kuat adalah pemisahan tugas yang jelas: penanganan tanda tangan, pemrosesan gambar, dan perakitan dokumen akhir. Bereksperimenlah dengan koordinat, ganti format gambar, atau coba timestamp—alur kerja Anda kini sepenuhnya dapat diperluas. + +Ada pertanyaan, skenario kasus tepi, atau contoh penggunaan menarik untuk dibagikan? Tinggalkan komentar di bawah, dan 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-security-and-signatures/_index.md b/pdf/indonesian/net/programming-with-security-and-signatures/_index.md index f86b8750b..71837537f 100644 --- a/pdf/indonesian/net/programming-with-security-and-signatures/_index.md +++ b/pdf/indonesian/net/programming-with-security-and-signatures/_index.md @@ -35,6 +35,7 @@ Bahasa Indonesia: --- | --- 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. | | [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 Memperbaiki File PDF – Panduan Lengkap C# dengan Aspose.PDF](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | Pelajari cara memperbaiki file PDF yang rusak menggunakan Aspose.PDF untuk .NET dengan panduan lengkap C#. Bahasa Indonesia: +| [Validasi Tanda Tangan PDF Digital – Panduan Lengkap C#](./validate-pdf-digital-signature-complete-c-guide/) | Pelajari cara memvalidasi tanda tangan digital pada file PDF menggunakan Aspose.PDF untuk .NET dengan panduan lengkap C#. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/indonesian/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/indonesian/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..4bcbfefa1 --- /dev/null +++ b/pdf/indonesian/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,262 @@ +--- +category: general +date: 2026-03-29 +description: Validasi tanda tangan digital PDF dengan cepat. Pelajari cara memverifikasi + tanda tangan PDF, memeriksa status tanda tangan PDF, dan mendeteksi PDF yang telah + diubah dengan Aspose.Pdf di C#. +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: id +og_description: Validasi tanda tangan digital PDF di C#. Tutorial ini menunjukkan + cara memverifikasi tanda tangan PDF, memeriksa integritas tanda tangan PDF, dan + mendeteksi PDF yang telah diubah menggunakan Aspose.Pdf. +og_title: Validasi Tanda Tangan Digital PDF – Panduan Lengkap C# +tags: +- C# +- Aspose.Pdf +- PDF Security +title: Validasi Tanda Tangan Digital PDF – Panduan Lengkap C# +url: /id/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Validasi Tanda Tangan Digital PDF – Panduan Lengkap C# + +Pernah bertanya-tanya **cara memverifikasi tanda tangan PDF** tanpa membuat kepala Anda berhamburan? Mungkin Anda menerima sebuah kontrak, membukanya, dan perlu memastikan 100 % bahwa dokumen tersebut tidak diubah. Kabar baiknya, Anda tidak memerlukan laboratorium forensik—hanya beberapa baris C# dan Aspose.Pdf yang dapat **memvalidasi tanda tangan digital PDF** dalam sekejap. + +Dalam tutorial ini kami akan membahas semua yang perlu Anda ketahui: mulai dari menginstal pustaka hingga menafsirkan hasil, bahkan menangani kasus tepi seperti banyak tanda tangan atau file yang rusak. Pada akhir tutorial, Anda akan dapat **memeriksa status tanda tangan PDF** secara programatik dan **mendeteksi PDF yang telah dimanipulasi** sebelum menimbulkan masalah. + +## Apa yang Anda Butuhkan + +- **.NET 6.0 atau lebih baru** (kode ini juga berfungsi di .NET Framework, tetapi .NET 6 adalah pilihan yang paling tepat). +- **Aspose.Pdf for .NET** – Anda dapat mengunduhnya dari NuGet (`Install-Package Aspose.Pdf`). +- Sebuah **PDF yang sudah ditandatangani** yang ingin Anda uji. Jika belum memiliki, buat dokumen sederhana yang ditandatangani dengan Adobe Acrobat atau penandatangan PDF apa pun. + +> Pro tip: Simpan file PDF Anda di luar folder root proyek; path relatif seperti `./Samples/signed.pdf` sudah cukup dan menghindari commit tidak sengaja file rahasia. + +## Implementasi Langkah‑per‑Langkah + +Di bawah ini kami membagi solusi menjadi beberapa bagian logis. Setiap bagian memiliki header H2‑nya sendiri—salah satunya bahkan memuat kata kunci utama, memenuhi aturan SEO. + +### ## Langkah 1 – Instal dan Referensikan Aspose.Pdf + +Pertama, tambahkan paket NuGet ke proyek Anda: + +```powershell +dotnet add package Aspose.Pdf +``` + +Atau, jika Anda menggunakan Package Manager Console: + +```powershell +Install-Package Aspose.Pdf +``` + +Setelah paket terpasang, Visual Studio secara otomatis menambahkan namespace `using Aspose.Pdf;`. Tidak perlu mengatur DLL secara manual. + +### ## Langkah 2 – Muat Dokumen PDF yang Ditandatangani + +Sekarang kita benar‑benarnya membuka file. Pernyataan `using` memastikan dokumen dibuang dengan benar, yang sangat penting untuk PDF berukuran besar. + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +> **Mengapa ini penting:** Memuat dokumen memberi kita akses ke objek `DigitalSignatureInfo`, titik masuk untuk semua kueri terkait tanda tangan. + +### ## Langkah 3 – Ambil Informasi Tanda Tangan Digital + +Aspose.Pdf membungkus detail PKI tingkat rendah dalam API yang ramah. Ambil properti `DigitalSignatureInfo` dan Anda akan memiliki semua yang diperlukan untuk **memeriksa kesehatan tanda tangan PDF**. + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +Jika PDF berisi banyak tanda tangan, `signatureInfo` mengagregasi semuanya, menampilkan properti seperti `Count`, `Certificates`, dan `IsCompromised`. Untuk file dengan satu tanda tangan, koleksi tersebut hanya berisi satu entri. + +### ## Langkah 4 – Tentukan Apakah Tanda Tangan Telah Dikorupsi + +Flag `IsCompromised` memberi tahu Anda apakah dokumen telah diubah **setelah** ditandatangani. Nilai `true` berarti PDF telah dimanipulasi—tepat apa yang kita ingin **mendeteksi PDF yang dimanipulasi**. + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +Jika Anda perlu **memverifikasi tanda tangan PDF** secara lebih mendalam (misalnya validasi rantai sertifikat), Anda juga dapat memeriksa `signatureInfo.Certificates` dan memanggil `Validate()` pada masing‑masing. Untuk kebanyakan kasus, `IsCompromised` sudah cukup. + +### ## Langkah 5 – Tampilkan Hasil ke Konsol + +Akhirnya, beri tahu pengguna apa yang terjadi. Kami akan mencetak pesan yang ramah serta mengembalikan kode keluar yang sesuai untuk skrip otomatisasi. + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### Output yang Diharapkan + +``` +Signature compromised: False +``` + +Jika Anda sengaja memanipulasi PDF (misalnya menambahkan karakter stray), output akan berubah menjadi `True`. Saat itulah Anda tahu integritas dokumen telah rusak. + +### ## Menangani Kasus Tepi dan Kesalahan Umum + +#### 1. Banyak Tanda Tangan + +Ketika PDF memiliki lebih dari satu penandatangan, `IsCompromised` mencerminkan *status keseluruhan*—jika **salah satu** tanda tangan rusak, flag menjadi `true`. Untuk mengidentifikasi penandatangan mana yang bermasalah: + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. Tanda Tangan Hilang + +Jika PDF tidak ditandatangani sama sekali, `signatureInfo.Count` akan bernilai `0`. Anda harus melindungi diri dari rasa aman palsu: + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. File PDF Rusak + +File yang rusak akan melempar `PdfException`. Bungkus logika pemuatan dalam try‑catch untuk memberikan pesan error yang bersih: + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. Validasi Sertifikat (Lanjutan) + +Jika Anda perlu memastikan sertifikat penandatangan masih berlaku (tidak dicabut, dalam masa berlaku), Anda dapat memanggil: + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +Langkah ini membawa Anda dari **memeriksa tanda tangan PDF** sederhana ke alur kerja **cara memverifikasi tanda tangan PDF** yang lengkap. + +### ## Contoh Kerja Lengkap + +Menggabungkan semuanya, berikut program lengkap yang siap dijalankan: + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +Jalankan program dari command line: + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +Anda akan melihat laporan jelas yang memberi tahu apakah PDF tetap utuh, penandatangan mana yang terlibat, dan apakah sertifikat mereka masih dapat dipercaya. + +## Gambaran Visual + +Berikut diagram singkat yang menggambarkan alur dari **memuat PDF** hingga **menampilkan hasil validasi**. Ini berguna sebagai referensi saat Anda merancang arsitektur pipeline pemrosesan dokumen yang lebih besar. + +![diagram alur validasi tanda tangan digital pdf](image.png "Diagram yang menunjukkan PDF load → DigitalSignatureInfo → pemeriksaan IsCompromised") + +*Alt text: diagram alur validasi tanda tangan digital pdf* + +## Kesimpulan + +Kami baru saja membahas **solusi lengkap end‑to‑end untuk memvalidasi tanda tangan digital PDF** menggunakan Aspose.Pdf di C#. Poin penting yang dapat diingat: + +- Muat PDF dengan `Document`. +- Ambil `DigitalSignatureInfo` dan periksa `IsCompromised` untuk **mendeteksi PDF yang dimanipulasi**. +- Tangani tanda tangan ganda, tanda tangan yang hilang, dan file yang rusak dengan elegan. +- Opsional, validasi sertifikat penandatangan untuk checklist **cara memverifikasi tanda tangan PDF** yang menyeluruh. + +Dari sini Anda dapat memperluas logika—menyimpan hasil validasi ke basis data, menolak unggahan tanpa tanda tangan di API web, atau mengintegrasikan dengan sistem manajemen dokumen. Jika Anda tertarik dengan fitur keamanan PDF lainnya, lihat **memeriksa timestamp tanda tangan PDF**, **menambahkan tanda tangan baru**, atau **mengenkripsi PDF**. + +Punya pertanyaan tentang kasus tepi, atau ingin melihat cara **memverifikasi tanda tangan PDF** dengan pustaka lain seperti iText 7? Tinggalkan komentar di bawah, dan mari terus berdiskusi. 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/italian/net/conversion-export/_index.md b/pdf/italian/net/conversion-export/_index.md index 88b3c12fe..ce19a7a50 100644 --- a/pdf/italian/net/conversion-export/_index.md +++ b/pdf/italian/net/conversion-export/_index.md @@ -77,8 +77,11 @@ Scopri come convertire i PDF in HTML utilizzando Aspose.PDF per .NET, mantenendo ### [Converti PDF in HTML con dimensioni personalizzate utilizzando Aspose.PDF](./convert-pdf-html-custom-dimensions-asposepdf-net/) Un tutorial sul codice per Aspose.PDF Net -### [Convertire PDF in HTML con URL di immagini personalizzate utilizzando Aspose.PDF .NET: una guida completa](./convert-pdf-html-custom-image-urls-aspose-pdf-net/) -Scopri come convertire i documenti PDF in formato HTML utilizzando Aspose.PDF per .NET, inclusa la personalizzazione degli URL delle immagini e l'implementazione di una strategia su misura per il risparmio delle risorse. +### [Salva PDF come HTML con Aspose – Guida completa C#](./save-pdf-as-html-with-aspose-complete-c-guide/) +Scopri come salvare PDF come HTML usando Aspose in C#, con esempi pratici e impostazioni avanzate. + +### [Salva PDF come HTML con C# – Guida completa passo‑passo](./save-pdf-as-html-with-c-complete-step-by-step-guide/) +Scopri come salvare PDF in HTML usando C# con Aspose.PDF, seguendo una guida dettagliata passo dopo passo. ### [Converti PDF in PNG con Aspose.PDF .NET: migliora i suggerimenti sui font per una resa nitida del testo](./convert-pdf-png-aspose-net-font-hinting/) Scopri come convertire i documenti PDF in immagini PNG di alta qualità utilizzando Aspose.PDF .NET, garantendo una resa nitida del testo tramite suggerimenti sui font. @@ -227,6 +230,9 @@ Un tutorial sul codice per Aspose.PDF Net ### [Conversione da PDF a TIFF in .NET con Aspose.PDF: una guida passo passo](./pdf-to-tiff-conversion-aspose-pdf-net/) Scopri come convertire documenti PDF in immagini TIFF utilizzando Aspose.PDF per .NET. Padroneggia profondità di colore personalizzate e tecniche avanzate di elaborazione delle immagini. +### [Convertire PDF in PDF/X-1a, esportare pagina PNG e aggiungere timbro di testo](./convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/) +Scopri come convertire un PDF in PDF/X‑1a, esportare le pagine come PNG e aggiungere timbri di testo usando Aspose.PDF per .NET. + ## Risorse aggiuntive - [Aspose.PDF per la documentazione di rete](https://docs.aspose.com/pdf/net/) diff --git a/pdf/italian/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/italian/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..c0bd80936 --- /dev/null +++ b/pdf/italian/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-03-29 +description: Converti PDF in PDF/X‑1a ed esporta la pagina PDF in PNG in un unico + flusso – impara anche come aggiungere un timbro di testo al PDF usando Aspose.Pdf + (C#). +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: it +og_description: converti PDF in PDF/X‑1a ed esporta la pagina PDF in PNG aggiungendo + un timbro di testo PDF – guida completa C# con Aspose.Pdf. +og_title: converti PDF in PDF/X-1a, esporta pagina PNG e aggiungi timbro di testo +tags: +- Aspose.Pdf +- C# +- PDF processing +title: converti PDF in PDF/X-1a, esporta pagina PNG e aggiungi timbro di testo +url: /it/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# converti pdf in pdf/x-1a, esporta pagina png e aggiungi timbro di testo – Guida completa C# + +Hai mai avuto bisogno di **convertire pdf in pdf/x-1a** ma anche di una rapida anteprima PNG della prima pagina e di un timbro di testo personalizzato sullo stesso documento? Non sei solo. In molte pipeline di produzione—pensa al pre‑flighting pronto per la stampa o alla generazione automatica di report—spesso ti trovi di fronte a questa combinazione di requisiti. + +In questo tutorial percorreremo un flusso di lavoro unico e coerente che esegue tre operazioni consecutive: **convertire pdf in pdf/x-1a**, **esportare pagina pdf in png** e **aggiungere timbro di testo al pdf**. Il codice utilizza la libreria Aspose.Pdf per .NET, così ottieni una soluzione di livello professionale senza dover combattere con le parti interne a basso livello del PDF. Alla fine avrai un programma C# eseguibile che potrai inserire in qualsiasi app console, Azure Function o passaggio CI. + +> **Cosa otterrai** – un file sorgente completo, spiegazioni passo‑passo, consigli per le difficoltà comuni e un modo rapido per verificare l'output. + +## Prerequisiti + +- .NET 6.0 o successivo (l'API funziona anche con .NET Framework 4.x). +- Pacchetto NuGet Aspose.Pdf per .NET (`Aspose.Pdf`) – la versione 23.10 è quella corrente al momento della stesura. +- Un PDF di input (`input.pdf`) e un file di profilo ICC (`Coated_Fogra39L_VIGC_300.icc`) posizionati in una cartella di tua scelta. +- Familiarità di base con C# e Visual Studio (o il tuo IDE preferito). + +Se qualcuno di questi ti è poco familiare, installa semplicemente il pacchetto NuGet con: + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +Ora immergiamoci. + +## Passo 1: Carica il documento PDF di origine + +La prima cosa che facciamo è aprire il PDF su cui vogliamo lavorare. La classe `Document` di Aspose.Pdf rappresenta l'intero file e carica il contenuto in modo pigro, quindi non subisci una penalità di prestazioni finché non accedi effettivamente alle pagine. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*Perché è importante*: Caricare il documento in anticipo ci fornisce un unico oggetto da passare per la conversione, il rendering e il timbratura. Se salti il caricamento esplicito e provi a lavorare su un file inesistente, otterrai una criptica `FileNotFoundException` più tardi. + +## Passo 2: Converti il documento in PDF/X‑1a usando un profilo ICC personalizzato + +PDF/X‑1a è lo standard de‑facto per PDF pronti per la stampa. Il passaggio di conversione ti consente anche di incorporare un **Output Intent** (il profilo ICC) così i RIP a valle sanno esattamente come interpretare i colori. + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*Consiglio professionale*: Se hai bisogno di una gestione degli errori più rigorosa, sostituisci `ConvertErrorAction.Delete` con `ConvertErrorAction.Throw`. In questo modo la conversione si interromperà al primo problema di conformità, utile per pipeline QA automatizzate. + +## Passo 3: Esporta la prima pagina come PNG analizzando i font + +Un'anteprima PNG è spesso necessaria per rapidi controlli visivi o per la generazione di miniature. Abilitando `AnalyzeFonts`, Aspose garantisce che tutti i font incorporati siano rasterizzati correttamente, evitando sorprese di glifi mancanti. + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +Dopo l'esecuzione troverai `page1.png` accanto ai tuoi file di origine. Aprilo con qualsiasi visualizzatore di immagini per confermare che la conversione sia corretta. + +## Passo 4: Aggiungi un timbro di testo che regola automaticamente la dimensione del font + +Un **timbro di testo** è un modo pratico per aggiungere una filigrana o annotare un PDF senza modificare i flussi di contenuto sottostanti. Impostare `AutoAdjustFontSizeToFitStampRectangle` fa sì che la libreria riduca o ingrandisca il testo in modo che non trabocchi mai dal rettangolo che definisci. + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*Perché la dimensione automatica?* Se in seguito cambi il testo del timbro con qualcosa di più lungo (ad esempio un timestamp dinamico), non dovrai ricalcolare manualmente le dimensioni del font—il timbro si adatta al volo. + +## Passo 5: Salva il documento PDF aggiornato + +Infine, scrivi tutto nuovamente su disco. Puoi sovrascrivere il file originale o crearne uno nuovo; l'esempio qui sotto crea `output.pdf`. + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +Quando il salvataggio è completato, avrai: + +1. Un file conforme **PDF/X‑1a** (`output.pdf`). +2. Un'anteprima **PNG** della prima pagina (`page1.png`). +3. Un **timbro di testo** che si adatta perfettamente al suo rettangolo. + +### Checklist di verifica rapida + +| ✅ Controllo | Come verificare | +|--------|---------------| +| Conformità PDF/X‑1a | Apri `output.pdf` in Adobe Acrobat → *Print Production* → *Preflight* e seleziona “PDF/X‑1a:2001”. | +| PNG corretto | Apri `page1.png` in Windows Photo Viewer o in qualsiasi editor di immagini. | +| Presenza timbro | Scorri `output.pdf` – il testo “Auto‑size” dovrebbe essere centrato nella pagina 1. | + +![convert pdf to pdf/x-1a preview](image.png "convert pdf to pdf/x-1a preview showing stamped page") + +*Testo alternativo immagine*: **anteprima convert pdf to pdf/x-1a con timbro di testo auto‑size** – dimostra il PDF finale dopo tutti i passaggi. + +## Variazioni comuni e casi limite + +- **Multiple pages** – Se devi timbrare ogni pagina, itera su `pdfDoc.Pages` e chiama `AddStamp` all'interno del ciclo. +- **Different output format** – Cambia `PdfFormat.PDF_X_1A` in `PdfFormat.PDF_A_1B` per PDF di archivio. +- **Higher‑resolution PNG** – Imposta `Resolution = 600` in `RenderingOptions` per miniature di qualità stampa. +- **Custom font for the stamp** – Assegna `autoSizeStamp.Font = FontRepository.FindFont("Arial")` prima di aggiungere il timbro. +- **Error handling** – Avvolgi ogni passaggio principale in un `try/catch` e registra `ConversionException` o `FileNotFoundException` per semplificare il debug. + +## Esempio completo funzionante (pronto per copia‑incolla) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Setup paths + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Load the source document + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Convert to PDF/X‑1a (print‑ready) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Export first page as PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Add auto‑sizing text stamp (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/italian/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..804dacdd8 --- /dev/null +++ b/pdf/italian/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,269 @@ +--- +category: general +date: 2026-03-29 +description: Salva PDF come HTML usando Aspose.PDF in C#. Scopri come convertire PDF + in HTML, omettere le immagini e verificare la firma PDF in un unico tutorial. +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: it +og_description: Salva PDF come HTML con Aspose.PDF in C#. Questa guida ti mostra come + convertire PDF in HTML, ignorare le immagini e convalidare la firma digitale del + PDF. +og_title: Salva PDF come HTML con Aspose – Guida completa C# +tags: +- Aspose.PDF +- C# +- PDF processing +title: Salva PDF come HTML con Aspose – Guida completa C# +url: /it/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Salva PDF come HTML con Aspose – Guida completa C# + +Ti sei mai chiesto come **salvare PDF come HTML** senza includere ogni immagine incorporata? Forse stai creando un'anteprima web leggera e il carico extra di immagini sta rallentando la velocità della pagina. La buona notizia è che non devi scrivere un parser personalizzato—Aspose.PDF fa il lavoro pesante per te. In questo tutorial **converteremo PDF in HTML**, rimuoveremo le immagini e poi **verificheremo la firma PDF** per assicurarci che il documento non sia stato manomesso. + +Esamineremo ogni riga di codice, spiegheremo *perché* ogni impostazione è importante e tratteremo anche casi limite come PDF di grandi dimensioni o firme mancanti. Alla fine avrai un'app console C# pronta all'uso che produce un file HTML pulito e ti fornisce un chiaro risultato vero/falso per la firma digitale. + +## Cosa imparerai + +- Caricare un file PDF con Aspose.PDF. +- Usare `HtmlSaveOptions` per **convertire PDF in HTML** omettendo le immagini. +- Salvare l'HTML risultante su disco. +- Configurare un oggetto `PdfFileSignature` per **verificare la firma PDF**. +- Interpretare il risultato booleano e gestire le difficoltà comuni. +- Suggerimenti extra per performance e risoluzione dei problemi. + +### Prerequisiti + +- .NET 6.0 o successivo (il codice funziona anche su .NET Framework 4.7+). +- Pacchetto NuGet Aspose.PDF per .NET (versione 23.12 o più recente). +- Un PDF firmato (`input.pdf`) che contiene una firma denominata “Sig1”. +- Familiarità di base con C# e le applicazioni console. + +> **Pro tip:** Se non hai ancora installato il pacchetto Aspose.PDF, esegui `dotnet add package Aspose.PDF` dalla cartella del tuo progetto. + +--- + +## Passo 1: Carica il documento PDF sorgente + +Prima di poter fare qualsiasi cosa, abbiamo bisogno di una rappresentazione in memoria del PDF. La classe `Document` di Aspose.PDF legge il file e costruisce un albero di pagine, risorse e annotazioni. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**Perché è importante:** Caricare il documento una sola volta mantiene prevedibile l'uso della memoria. Se prevedi di elaborare molti PDF in un ciclo, considera di riutilizzare la stessa istanza `Document` dopo aver chiamato `pdfDocument.Dispose()`. + +--- + +## Passo 2: Configura le opzioni di salvataggio HTML – Salta le immagini + +Vogliamo **salvare PDF come HTML** ma senza i dati pesanti delle immagini. `HtmlSaveOptions` ci offre un controllo granulare, e il flag `SkipImages` indica ad Aspose di omettere completamente i tag ``. + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**Perché potresti saltare le immagini:** Per portali di anteprima o design mobile‑first, ogni kilobyte conta. Rimuovere le immagini elimina anche eventuali problemi di licenza se il PDF sorgente contiene grafiche protette da copyright. + +--- + +## Passo 3: Esporta il PDF come file HTML senza immagini + +Ora scriviamo effettivamente il file HTML. Il metodo `Save` rispetta le opzioni impostate sopra. + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**Risultato che vedrai:** Un file `.html` contenente il contenuto testuale, le tabelle e le grafiche vettoriali (se presenti), ma nessun tag ``. Aprilo in un browser e dovresti vedere una resa pulita e priva di immagini del PDF originale. + +--- + +## Passo 4: Prepara un verificatore di firma per lo stesso documento + +La classe `PdfFileSignature` di Aspose.PDF ci consente di ispezionare le firme digitali incorporate nel PDF. Creeremo un'istanza che punta allo stesso `Document` già caricato. + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**Nota sulla gestione delle risorse:** L'istruzione `using` garantisce che il verificatore rilasci eventuali handle nativi una volta terminato, evitando problemi di blocco file su Windows. + +--- + +## Passo 5: Verifica la firma denominata “Sig1” usando SHA‑3‑256 + +La maggior parte dei PDF utilizza SHA‑256 o SHA‑1, ma Aspose supporta anche la più recente famiglia SHA‑3. Qui richiediamo esplicitamente `Sha3_256`. Se la firma è mancante o l'algoritmo non corrisponde, il metodo restituisce `false`. + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Cosa potrebbe significare “false”:** + +1. **Signature not found** – forse il PDF usa un nome diverso; elenca le firme con `signatureVerifier.GetSignatureNames()`. +2. **Algorithm mismatch** – il PDF potrebbe essere stato firmato con SHA‑256; prova `DigestHashAlgorithm.Sha256`. +3. **Document altered** – qualsiasi modifica dopo la firma invalida l'hash, risultando in `false`. + +--- + +## Gestione dei casi limite comuni + +### PDF di grandi dimensioni + +Se il tuo PDF sorgente supera qualche centinaio di megabyte, considera di abilitare **memory‑saving mode**: + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +Questo trasmette le pagine su richiesta, riducendo la pressione sulla RAM. + +### Firma mancante + +Quando non sei sicuro del nome della firma, elencale: + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +Scegli il nome corretto dall'elenco prima di chiamare `VerifySignature`. + +### Compatibilità del browser + +Alcuni browser hanno difficoltà con HTML che contiene il CSS predefinito di Aspose. Impostare `htmlSaveOptions.EmbedCss = true` (come mostrato in precedenza) incorpora gli stili inline, rendendo il file più portabile. + +--- + +## Esempio completo funzionante + +Di seguito trovi il programma completo, pronto per il copia‑incolla, che include tutti i passaggi, la gestione degli errori e le diagnostiche opzionali. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Output console previsto** (i percorsi saranno diversi): + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +Se la firma è invalida, l'ultima riga mostrerà `Signature valid: False`. + +--- + +## Domande frequenti + +**Q: Posso convertire PDF in HTML *con* immagini?** +A: Assolutamente. Basta impostare `SkipImages = false` (o omettere la proprietà). Aspose incorporerà ogni immagine come file separato in una sottocartella accanto all'HTML. + +**Q: Questo funziona su Linux?** +A: Sì. Aspose.PDF è cross‑platform; assicurati solo che i percorsi `YOUR_DIRECTORY` usino le barre oblique forward o `Path.Combine`. + +**Q: Cosa fare se devo validare una firma digitale PDF con un certificato personalizzato?** +A: Usa la sovraccarico `PdfFileSignature.ValidateSignature` che accetta un oggetto `X509Certificate2`. Quel metodo restituirà anche un `SignatureInfo` dettagliato che potrai ispezionare. + +**Q: `aspose convert pdf` è limitato a C#?** +A: No. La stessa API esiste per Java, Python e altri linguaggi .NET. I concetti—caricare, impostare opzioni, salvare, verificare—rimangono gli stessi. + +--- + +## Conclusione + +Ora sai esattamente come **salvare PDF come HTML** usando Aspose.PDF, rimuovere le immagini non necessarie e **verificare la firma PDF** in un unico programma C# snello. Il processo è semplice: carica, configura, esporta e valida. Con le diagnostiche opzionali e la gestione dei casi limite coperti, puoi adattare questo modello a lavori batch, servizi web o utility desktop. + +Pronto per il passo successivo? Prova a **convertire PDF in HTML** mantenendo le immagini, o sperimenta con diversi algoritmi di hash per **validare la firma digitale PDF** contro la tua PKI. Puoi anche esplorare la conversione PDF‑to‑DOCX di Aspose o unire più PDF prima dell'esportazione—ognuna è un'estensione naturale del flusso di lavoro appena costruito. + +Happy coding, and may your HTML previews stay lightweight and your signatures stay trustworthy! + +![save pdf as html example](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/italian/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..2240e2f96 --- /dev/null +++ b/pdf/italian/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,258 @@ +--- +category: general +date: 2026-03-29 +description: Salva PDF come HTML usando C# e Aspose.PDF. Scopri come inserire una + pagina in un PDF, aggiungere una pagina PDF vuota e creare una firma PKCS7 detached + in un unico flusso. +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: it +og_description: Salva PDF come HTML in C# con Aspose.PDF. Questa guida mostra come + caricare un PDF, inserire una pagina, aggiungere una pagina vuota, firmare con PKCS7 + ed esportare in HTML. +og_title: Salva PDF come HTML con C# – Tutorial completo di programmazione +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: Salva PDF come HTML con C# – Guida completa passo passo +url: /it/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Salva PDF come HTML con C# – Guida Completa Passo‑per‑Passo + +Ti è mai capitato di dover **salvare PDF come HTML** ma non eri sicuro di come mantenere intatto il layout modificando al contempo il documento sorgente? Non sei l'unico: gli sviluppatori spesso si trovano a gestire correzioni di paginazione, pagine vuote e firme digitali prima della conversione. In questo tutorial percorreremo un flusso di lavoro unico e coerente che fa esattamente questo, e inseriremo anche come **insert page into PDF**, **add blank PDF page**, e **create PKCS7 detached signature** lungo il percorso. + +Al termine di questa guida avrai un programma C# pronto all'uso che carica un PDF esistente, ne riorganizza le pagine, firma la prima pagina e infine esporta il tutto in HTML con priorità Unicode CMap. Nessun riferimento pendente, solo una soluzione autonoma che puoi inserire in qualsiasi progetto .NET. + +## Cosa Ti Serve + +- **Aspose.PDF for .NET** (ultima versione, 23.x al momento della stesura). +- **.NET 6.0** o successivo – il codice si compila anche con .NET Framework 4.7, ma .NET 6 offre le migliori prestazioni. +- Un **certificate file** (`.pfx`) e la sua password per la firma PKCS7. +- Un PDF di input (`input.pdf`) che desideri manipolare. + +Se hai tutto questo, possiamo passare subito al codice. Altrimenti, scarica una prova gratuita di 30 giorni di Aspose dal sito ufficiale; l'API è identica a quella della versione a pagamento. + +--- + +## Passo 1 – Carica il Documento PDF in C# (Azione Principale) + +La prima cosa da fare è portare il PDF in memoria. La classe `Document` di Aspose gestisce tutto il lavoro pesante. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*Perché è importante:* Caricare il file ti fornisce un modello di oggetti mutabile. Da qui puoi **insert page into PDF**, aggiungere pagine vuote o applicare firme senza toccare il file originale su disco. + +--- + +## Passo 2 – Inserisci una Pagina e Aggiungi una Pagina PDF Vuota + +A volte il PDF di origine presenta artefatti di paginazione—magari una pagina mancante o duplicata. Di seguito copiamo la pagina 2 subito dopo la pagina 1, poi aggiungiamo una pagina completamente vuota alla fine. + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*Consiglio professionale:* `UpdatePagination()` ricalcola i numeri di pagina che appaiono nei piè di pagina o intestazioni generate da Aspose. Saltare questo passaggio può lasciare numeri obsoleti nell'HTML finale. + +--- + +## Passo 3 – Crea una Firma PKCS7 Distaccata (SHA‑512) + +Una firma PKCS7 distaccata dimostra l'integrità del documento senza incorporare i dati della firma direttamente nello stream di contenuto PDF. Useremo un certificato memorizzato in un file PFX. + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*Perché SHA‑512?* Offre un hash più forte rispetto a SHA‑256 mantenendo un'ampia compatibilità. Se hai bisogno di conformità a standard più vecchi, sostituisci `Sha512` con `Sha256`. + +--- + +## Passo 4 – Applica la Firma Digitale alla Pagina 1 con un Rettangolo Visibile + +Inseriremo un campo firma visibile sulla prima pagina. Il rettangolo definisce dove appare l'immagine della firma (o il segnaposto). + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*Caso limite:* Se la pagina di destinazione contiene già un campo modulo con lo stesso nome, l'API solleverà un'eccezione. Assicurati che i nomi dei campi siano unici o cancella i campi esistenti prima di firmare. + +--- + +## Passo 5 – Configura le Opzioni di Salvataggio HTML per Prioritizzare Unicode CMap + +Durante la conversione in HTML, Aspose può incorporare i font come base‑64, usare sottoinsiemi o fare affidamento su Unicode CMaps. Prioritizzare Unicode riduce le dimensioni del file e migliora la ricercabilità del testo. + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*Cosa fa questo?* Indica al convertitore di preferire Unicode CMaps rispetto all'incorporamento di font personalizzati quando possibile, il che è ideale per PDF multilingue. + +--- + +## Passo 6 – Salva il Documento Firmato come HTML + +Infine, scrivi il PDF elaborato in una cartella HTML (Aspose crea una directory con file di supporto come CSS e immagini). + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +Se apri `cmap.html` in un browser, vedrai il layout originale del PDF renderizzato come HTML, completo dell'immagine della firma visibile sulla pagina 1. + +--- + +## Esempio Completo (Tutti i Passi Combinati) + +Di seguito trovi il programma completo che puoi copiare‑incollare in un'app console. Include tutte le direttive `using` necessarie e la gestione degli errori. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**Risultato atteso:** +- `cmap.html` (il file HTML principale) +- cartella `cmap_files` contenente CSS, immagini e risorse di font. +- La prima pagina mostra una casella firma visibile alle coordinate impostate. + +--- + +## Domande Frequenti & Casi Limite + +| Domanda | Risposta | +|----------|--------| +| *Posso usare un certificato autofirmato?* | Sì, Aspose.PDF accetta qualsiasi PFX valido. Ricorda che i browser potrebbero segnalare la firma come non attendibile. | +| *E se devo firmare più pagine?* | Crea chiamate separate a `PdfFileSignature` per ogni pagina, oppure usa un ciclo che aggiorna `pageNumber`. | +| *È possibile incorporare l'immagine della firma invece di un rettangolo?* | Fornisci un oggetto `SignatureAppearance` con uno stream di immagine a `PdfFileSignature.Sign`. | +| *Il mio PDF contiene contenuto criptato—posso comunque convertire?* | Decrittalo prima usando `pdfDoc.Decrypt("ownerPassword")`, poi esegui i passaggi. | +| *L'HTML manterrà i collegamenti ipertestuali dal PDF originale?* | Aspose preserva le annotazioni di collegamento per impostazione predefinita. Se noti collegamenti mancanti, imposta `htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;` | + +--- + +## Conclusioni + +Abbiamo appena dimostrato come **salvare PDF come HTML** inserendo contemporaneamente **insert page into PDF**, **add blank PDF page**, e **create PKCS7 detached signature**—tutto usando C#. Il flusso di lavoro è lineare, facile da debug e completamente personalizzabile per progetti più grandi. + +Successivamente, potresti voler esplorare: + +- **Batch processing** – iterare su una cartella di PDF e convertire ciascuno. +- **Custom CSS** – modificare `HtmlSaveOptions.CustomCss` per adeguarlo allo stile del tuo sito. +- **Advanced signatures** – utilizzare server di timestamp o LTV (Long‑Term Validation) per firme di livello conformità. + +Prova queste opzioni e avrai una pipeline PDF‑to‑HTML robusta, SEO‑friendly e adatta a citazioni per assistenti AI. Buon coding! + +--- + +![Diagramma che mostra il PDF caricato, le pagine inserite, la firma applicata e l'output HTML](/images/save-pdf-as-html-workflow.png "flusso di lavoro salva pdf come html") + +*Testo alternativo immagine:* **Diagramma che mostra il PDF caricato, le pagine inserite, la firma applicata e l'output HTML** + +{{< /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 6d828e358..61d10b09f 100644 --- a/pdf/italian/net/digital-signatures/_index.md +++ b/pdf/italian/net/digital-signatures/_index.md @@ -62,6 +62,9 @@ Scopri come caricare un PDF in C#, convertirlo in PDF/X‑4 e elencare le firme ### [Convalida firma PDF con Aspose – Converti PDF in HTML](./validate-pdf-signature-with-aspose-convert-pdf-to-html/) Scopri come convalidare le firme PDF e convertire i PDF in HTML con Aspose, garantendo l'integrità dei documenti durante la trasformazione. +### [Come firmare PDF e aggiungere immagini – Guida completa C#](./how-to-sign-pdf-and-add-images-complete-c-guide/) +Scopri come firmare PDF e inserire immagini con Aspose.PDF per .NET usando 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/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/italian/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..e46217a8d --- /dev/null +++ b/pdf/italian/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-03-29 +description: Come firmare un PDF con una firma digitale e aggiungere un'immagine ritagliata + in C#. Impara ad aggiungere una firma digitale al PDF, ritagliare l'immagine per + il PDF e inserire l'immagine nel PDF facilmente. +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: it +og_description: Come firmare un PDF con una firma digitale e incorporare un'immagine + ritagliata usando Aspose.Pdf in C#. Segui questa guida per una soluzione completa. +og_title: Come firmare PDF e aggiungere immagini – tutorial C# passo passo +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: Come firmare PDF e aggiungere immagini – Guida completa C# +url: /it/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come firmare PDF e aggiungere immagini – Guida completa C# + +Ti sei mai chiesto **come firmare PDF** in modo programmatico inserendo anche un'immagine personalizzata? Forse stai costruendo un flusso di approvazione e hai bisogno di una firma legalmente vincolante *e* di una miniatura della foto del firmatario nella stessa pagina. In breve, vuoi **add digital signature pdf** content, crop that picture, e poi **add image to pdf** senza sforzo. + +Questo tutorial ti guida passo passo—dalla lettura di un certificato ECDSA PKCS#7 al ritaglio di un JPEG e al suo inserimento nella pagina firmata. Alla fine avrai un unico file C# eseguibile che firma la pagina 1, ritaglia una foto a 400 × 400 px e la posiziona in modo preciso. Nessuno script esterno, nessuna magia, solo codice chiaro e spiegazioni. + +## Prerequisiti + +- .NET 6.0 o successivo (il codice funziona anche con .NET Framework 4.7+) +- **Aspose.Pdf for .NET** pacchetto NuGet (versione 23.9 o più recente) +- Un certificato ECDSA P‑256 in formato PKCS#7 (`.pfx`) e la relativa password +- Un’immagine JPEG da incorporare (ad es., `photo.jpg`) + +> **Consiglio esperto:** Tieni il file del certificato fuori dal controllo del codice sorgente e proteggi la password con un gestore di segreti. + +--- + +## Passo 1: Configurare il progetto e le importazioni + +Per prima cosa, crea un’app console (o integra questo codice in un servizio esistente). Aggiungi il riferimento a Aspose.Pdf: + +```bash +dotnet add package Aspose.Pdf +``` + +Quindi includi gli spazi dei nomi necessari: + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +Queste istruzioni `using` ti danno accesso alle classi `Document`, `Signature` e `Rectangle` che utilizzeremo più avanti. + +## Passo 2: Caricare il PDF e preparare la firma + +Apriremo un PDF esistente (`source.pdf`) e creeremo un oggetto **digital signature pdf** che utilizza una firma PKCS#7 detached. Il certificato è una chiave ECDSA P‑256, ampiamente accettata per la conformità. + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**Perché è importante:** L’utilizzo di una firma PKCS#7 detached mantiene intatto il contenuto originale del PDF mentre incorpora un hash crittografico. Questo è l’approccio standard del settore per PDF legalmente vincolanti. + +## Passo 3: Applicare la firma digitale a una pagina specifica + +Ora posizioneremo il campo firma visibile sulla **pagina 1**. Il rettangolo definisce dove appare la casella della firma (le coordinate sono in punti, dove 1 inch = 72 punti). + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +Se non ti serve una casella visibile, imposta `isVisible` a `false`. Il `signatureRect` può essere regolato per adattarsi al layout del tuo documento. + +## Passo 4: Aprire lo stream dell’immagine e definire le aree di ritaglio + +Leggeremo il file JPEG in uno stream e specificheremo un **source rectangle** che seleziona i primi 400 × 400 pixel in alto a sinistra. Questa è l’operazione **crop image for pdf**. + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **Caso limite:** Se la tua immagine è più piccola di 400 × 400, il ritaglio verrà automaticamente limitato alle dimensioni reali dell’immagine—non verrà sollevata alcuna eccezione. + +## Passo 5: Definire dove deve apparire l’immagine ritagliata + +Successivamente, imposta il **destination rectangle** sulla pagina PDF. In questo esempio posizioniamo l’immagine a (50, 50) con una dimensione di 200 × 200 punti (≈2,78 pollici quadrati). + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +Sentiti libero di sperimentare: cambia le coordinate X/Y per spostare l’immagine, o modifica larghezza/altezza per scalare. + +## Passo 6: Inserire l’immagine ritagliata nella pagina firmata + +Infine, aggiungiamo l’immagine alla **pagina 1** (la stessa pagina che ora contiene la firma). L’overload `AddImage` che utilizziamo accetta i rettangoli di origine e destinazione, eseguendo effettivamente il ritaglio e il posizionamento in una sola chiamata. + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +Dietro le quinte, Aspose.Pdf estrae la regione di 400 × 400 pixel, la ridimensiona a 200 × 200 punti e la scrive nello stream di contenuto del PDF. + +## Passo 7: Salvare il PDF firmato e arricchito di immagine + +Dopo tutte le modifiche, persisti il documento. Puoi sovrascrivere l’originale o scrivere in un nuovo file. + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +Quando apri `output_signed.pdf` in Adobe Acrobat o in qualsiasi visualizzatore PDF, vedrai: + +- Un campo firma visibile alle coordinate specificate. +- La foto ritagliata posizionata a (50, 50) sulla pagina 1. +- La firma digitale convalidata (a condizione che il visualizzatore riconosca il tuo certificato). + +## Domande frequenti (FAQ) + +| Question | Answer | +|----------|--------| +| **Posso firmare una pagina diversa?** | Modifica l'argomento `pageNumber` in `signature.Sign` a qualsiasi indice di pagina valido (basato su 1). | +| **E se ho bisogno di più firme?** | Crea una nuova istanza `Signature` per ogni pagina o posizione, riutilizzando lo stesso `pkcsSignature` se si applica lo stesso certificato. | +| **Il ritaglio dell'immagine è limitato a rettangoli?** | Sì, `AddImage` di Aspose.Pdf funziona con regioni rettangolari. Per forme complesse dovresti pre‑processare l'immagine (ad es., usando System.Drawing) prima di incorporarla. | +| **Come rendere la firma invisibile?** | Imposta `isVisible` a `false` e ometti `signatureRect`. La firma sarà comunque crittograficamente valida. | +| **Quali formati posso incorporare oltre a JPEG?** | PNG, BMP, GIF e TIFF sono tutti supportati. Basta cambiare il percorso del file e assicurarsi che lo stream legga i byte corretti. | + +## Esempio completo funzionante + +Di seguito trovi il programma completo, autonomo. Copialo in `Program.cs`, adatta i percorsi e avvialo. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**Risultato atteso:** Aprendo `output_signed.pdf` vedrai un campo firma (100 × 100 → 300 × 300 punti) e un’immagine di 200 × 200 punti derivata dall’angolo in alto a sinistra di `photo.jpg`. La firma si convalida con il certificato ECDSA fornito. + +## Conclusioni + +Abbiamo coperto **come firmare PDF**, come **add digital signature pdf** a una pagina specifica, come **crop image for pdf**, e infine come **add image to pdf** usando Aspose.Pdf in C#. L’intero flusso—dalla lettura del certificato al salvataggio del documento finale—entra in un unico file sorgente chiaro e leggibile. + +Se sei pronto per la prossima sfida, considera: + +- Aggiungere **multiple signatures** su pagine diverse (usa il concetto di “digital signature pdf page”). +- Incorporare **QR code** che puntano a servizi di verifica. +- Automatizzare il processo in un’API ASP.NET Core per la generazione di PDF on‑the‑fly. + +Ricorda, la chiave per un’automazione PDF robusta è una chiara separazione delle preoccupazioni: gestione della firma, elaborazione dell’immagine e assemblaggio finale del documento. Gioca con le coordinate, cambia il formato dell’immagine o sperimenta con il timestamping—il tuo workflow è ora completamente estensibile. + +Hai domande, scenari limite o un caso d’uso interessante da condividere? Lascia un commento qui sotto, e buona programmazione! + +{{< /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 704b3c6e4..aae2b131d 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,7 @@ 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. | +| [Convalida firma digitale PDF – Guida completa C#](./validate-pdf-digital-signature-complete-c-guide/) | Scopri come convalidare firme digitali nei PDF usando Aspose.PDF per .NET con C#. Guida passo passo completa. | | [Come riparare i file PDF – Guida completa C# con Aspose.Pdf](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | Scopri come riparare i PDF danneggiati con Aspose.PDF per .NET usando C#. Guida passo passo per recuperare i contenuti. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/italian/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/italian/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..094c11400 --- /dev/null +++ b/pdf/italian/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,262 @@ +--- +category: general +date: 2026-03-29 +description: Convalida rapidamente la firma digitale PDF. Scopri come verificare la + firma PDF, controllare lo stato della firma PDF e rilevare PDF manomessi con Aspose.Pdf + in C#. +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: it +og_description: Convalida la firma digitale PDF in C#. Questo tutorial mostra come + verificare la firma PDF, controllare l'integrità della firma PDF e rilevare PDF + manomessi utilizzando Aspose.Pdf. +og_title: Convalida firma digitale PDF – Guida completa C# +tags: +- C# +- Aspose.Pdf +- PDF Security +title: Convalida della firma digitale PDF – Guida completa C# +url: /it/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Convalida della Firma Digitale PDF – Guida Completa in C# + +Ti sei mai chiesto **come verificare una firma PDF** senza impazzire? Forse hai ricevuto un contratto, lo hai aperto e dovevi essere sicuro al 100 % che non fosse stato modificato. La buona notizia è che non ti serve un laboratorio forense—bastano poche righe di C# e Aspose.Pdf per **validare la firma digitale PDF** in un attimo. + +In questo tutorial vedremo tutto quello che devi sapere: dall'installazione della libreria all'interpretazione del risultato, fino alla gestione di casi particolari come firme multiple o un file corrotto. Alla fine, sarai in grado di **controllare lo stato della firma PDF** programmaticamente e **rilevare PDF manomessi** prima che causino problemi. + +## Cosa Ti Serve + +- **.NET 6.0 o successivo** (il codice funziona anche su .NET Framework, ma .NET 6 è il punto ideale). +- **Aspose.Pdf for .NET** – lo puoi ottenere da NuGet (`Install-Package Aspose.Pdf`). +- Un **PDF firmato** che vuoi testare. Se non ne hai uno, crea un semplice documento firmato con Adobe Acrobat o qualsiasi firmatario PDF. + +> Pro tip: tieni i tuoi file PDF fuori dalla cartella radice del progetto; un percorso relativo come `./Samples/signed.pdf` funziona bene e evita commit accidentali di file riservati. + +## Implementazione Passo‑Passo + +Di seguito suddividiamo la soluzione in blocchi logici. Ogni blocco ha il proprio header H2—uno di essi contiene persino la keyword principale, soddisfacendo la regola SEO. + +### ## Passo 1 – Installa e Referenzia Aspose.Pdf + +Per prima cosa, aggiungi il pacchetto NuGet al tuo progetto: + +```powershell +dotnet add package Aspose.Pdf +``` + +Oppure, se usi la Console di Gestione Pacchetti: + +```powershell +Install-Package Aspose.Pdf +``` + +Dopo l'installazione, Visual Studio aggiungerà automaticamente lo spazio dei nomi `using Aspose.Pdf;`. Nessuna ulteriore gestione di DLL è necessaria. + +### ## Passo 2 – Carica il Documento PDF Firmato + +Ora apriamo effettivamente il file. L'istruzione `using` garantisce che il documento venga smaltito correttamente, cosa particolarmente importante per PDF di grandi dimensioni. + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +> **Perché è importante:** Caricare il documento ci dà accesso all'oggetto `DigitalSignatureInfo`, il punto di ingresso per tutte le query relative alle firme. + +### ## Passo 3 – Recupera le Informazioni sulla Firma Digitale + +Aspose.Pdf incapsula i dettagli PKI di basso livello in un'API amichevole. Ottieni la proprietà `DigitalSignatureInfo` e avrai tutto il necessario per **controllare la salute della firma PDF**. + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +Se il PDF contiene più firme, `signatureInfo` le aggrega, esponendo proprietà come `Count`, `Certificates` e `IsCompromised`. Per un file con firma singola, quelle collezioni conterranno un solo elemento. + +### ## Passo 4 – Determina se la Firma è Compromessa + +Il flag `IsCompromised` indica se il documento è stato modificato **dopo** la firma. Un valore `true` significa che il PDF è stato manomesso—esattamente ciò che vogliamo per **rilevare PDF manomessi**. + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +Se devi **verificare la firma PDF** in modo più approfondito (ad esempio la validazione della catena di certificati), puoi anche esaminare `signatureInfo.Certificates` e chiamare `Validate()` su ciascuno. Per la maggior parte dei casi d'uso, `IsCompromised` è sufficiente. + +### ## Passo 5 – Stampa il Risultato sulla Console + +Infine, informa l'utente di quanto accaduto. Stamperemo un messaggio amichevole e restituiremo anche un codice di uscita appropriato per gli script di automazione. + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### Output Atteso + +``` +Signature compromised: False +``` + +Se manometti deliberatamente il PDF (ad esempio aggiungendo un carattere estraneo), l'output diventa `True`. È il momento in cui sai che l'integrità del documento è stata violata. + +### ## Gestione dei Casi Limite e degli Errori Comuni + +#### 1. Firme Multiple + +Quando un PDF ha più di un firmatario, `IsCompromised` riflette lo stato *complessivo*—se **qualsiasi** firma è rotta, il flag diventa `true`. Per individuare quale firmatario è responsabile: + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. Firma Mancante + +Se il PDF non è firmato, `signatureInfo.Count` sarà `0`. Dovresti proteggerti da una falsa sensazione di sicurezza: + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. File PDF Corrotto + +Un file corrotto genera una `PdfException`. Avvolgi la logica di caricamento in un try‑catch per fornire un messaggio di errore pulito: + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. Validazione del Certificato (Avanzato) + +Se devi assicurarti che il certificato di firma sia ancora valido (non revocato, entro il periodo di validità), puoi chiamare: + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +Questo passaggio ti porta da un semplice **check PDF signature** a un flusso completo **how to verify PDF signature**. + +### ## Esempio Completo Funzionante + +Mettendo tutto insieme, ecco il programma completo, pronto per l'esecuzione: + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +Esegui il programma dalla riga di comando: + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +Dovresti vedere un report chiaro che indica se il PDF è intatto, quali firmatari sono coinvolti e se i loro certificati sono ancora affidabili. + +## Panoramica Visiva + +Di seguito trovi un diagramma rapido che illustra il flusso dal **caricamento del PDF** al **output del risultato di validazione**. È un riferimento utile quando progetti l'architettura di una pipeline di elaborazione documenti più ampia. + +![valida firma digitale PDF workflow diagram](image.png "Diagramma che mostra Caricamento PDF → DigitalSignatureInfo → Controllo IsCompromised") + +*Alt text: valida firma digitale PDF workflow diagram* + +## Conclusione + +Abbiamo appena coperto una **soluzione completa, end‑to‑end per validare la firma digitale PDF** usando Aspose.Pdf in C#. I punti chiave: + +- Carica il PDF con `Document`. +- Ottieni `DigitalSignatureInfo` e controlla `IsCompromised` per **rilevare PDF manomessi**. +- Gestisci firme multiple, firme mancanti e file corrotti in modo elegante. +- Opzionalmente valida il certificato di firma per una checklist completa **how to verify PDF signature**. + +Da qui puoi ampliare la logica—memorizzare i risultati di validazione in un database, rifiutare upload non firmati in una Web API, o integrarla con un sistema di gestione documentale. Se sei curioso di altre funzionalità di sicurezza PDF, dai un'occhiata a **controllare i timestamp delle firme PDF**, **aggiungere una nuova firma**, o **cifrare i PDF**. + +Hai domande sui casi limite, o vuoi vedere come **verificare la firma PDF** con una libreria diversa come iText 7? Lascia un commento qui sotto e continuiamo la conversazione. 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/japanese/net/conversion-export/_index.md b/pdf/japanese/net/conversion-export/_index.md index f25e5ee23..001f141a0 100644 --- a/pdf/japanese/net/conversion-export/_index.md +++ b/pdf/japanese/net/conversion-export/_index.md @@ -74,12 +74,20 @@ Aspose.PDF for .NET を使用してPDFファイルをHTML形式に変換し、 ### [Aspose.PDF for .NET で PDF を HTML に変換: TTF および WOFF 形式でフォントを保持](./convert-pdf-html-aspose-net-truetype-woff/) Aspose.PDF for .NET を使用して、TrueType (TTF) および Web Open Font Format (WOFF) フォントを維持しながら PDF を HTML に変換する方法を学びます。コード例を交えたステップバイステップのガイドです。 +### [AsposeでPDFをHTMLとして保存する – 完全C#ガイド](./save-pdf-as-html-with-aspose-complete-c-guide/) +Aspose.PDF for .NET と C# を使用して、PDF を HTML に変換し保存する方法をステップバイステップで学びます。 + +### [C# で PDF を HTML として保存する – 完全ステップバイステップガイド](./save-pdf-as-html-with-c-complete-step-by-step-guide/) + ### [Aspose.PDF を使用して PDF をカスタムディメンションで HTML に変換する](./convert-pdf-html-custom-dimensions-asposepdf-net/) Aspose.PDF Net のコードチュートリアル ### [Aspose.PDF .NET を使用してカスタム画像 URL で PDF を HTML に変換する: 包括的なガイド](./convert-pdf-html-custom-image-urls-aspose-pdf-net/) 画像の URL をカスタマイズし、カスタマイズされたリソース節約戦略を実装するなど、Aspose.PDF for .NET を使用して PDF ドキュメントを HTML 形式に変換する方法を学習します。 +### [Aspose.PDF .NET を使用してカスタム画像 URL で PDF を HTML に変換する: 包括的なガイド](./convert-pdf-html-custom-image-urls-aspose-pdf-net/) +画像の URL をカスタマイズし、カスタマイズされたリソース節約戦略を実装するなど、Aspose.PDF for .NET を使用して PDF ドキュメントを HTML 形式に変換する方法を学習します。 + ### [Aspose.PDF .NET で PDF を PNG に変換: フォントヒントを強化して鮮明なテキスト レンダリングを実現](./convert-pdf-png-aspose-net-font-hinting/) Aspose.PDF .NET を使用して PDF ドキュメントを高品質の PNG 画像に変換し、フォントヒントを通じて鮮明なテキスト レンダリングを実現する方法を学習します。 @@ -104,6 +112,8 @@ Aspose.PDF for .NET を使用して PDF ファイルを XML 形式に変換す ### [Aspose.PDF .NET を使用して PDF/A を標準 PDF に変換する: 包括的なガイド](./convert-pdf-a-standard-pdf-aspose-net/) このステップバイステップ ガイドでは、Aspose.PDF for .NET を使用して PDF/A ドキュメントを標準の PDF にシームレスに変換する方法を学習します。 +### [PDF を PDF/X-1A に変換し、ページを PNG としてエクスポート、テキストスタンプを追加](./convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/) + ### [Aspose.PDF .NET を使用して PDF をカスタム CSS 付きのインタラクティブ HTML に変換する](./convert-pdfs-to-html-custom-css-aspose-pdf-net/) Aspose.PDF .NET を使用して、カスタム CSS スタイルを備えたインタラクティブな Web 対応 HTML 形式に PDF ドキュメントを変換する方法を学習します。 @@ -144,7 +154,7 @@ Aspose.PDF for .NET を使用して、アプリケーションから PDF へデ Aspose.PDF for .NET を使用して、PDF から注釈を効率的にエクスポートする方法を学びます。このガイドでは、セットアップ、実装、ベストプラクティスについて説明します。 ### [Aspose.PDF for .NET で PDF データを XML にエクスポートする: ステップバイステップ ガイド](./export-pdf-data-to-xml-aspose-dotnet-guide/) -PDF 操作用に設計された強力なライブラリである Aspose.PDF for .NET を使用して、PDF フォーム データを構造化 XML に効率的にエクスポートする方法を学習します。 +Aspose.PDF for .NET を使用して、PDF フォーム データを構造化 XML に効率的にエクスポートする方法を学習します。 ### [Aspose.PDF for .NET を使用して HTML を PDF にフォーマットする: ステップバイステップ ガイド](./format-html-pdf-aspose-dotnet-guide/) この包括的なガイドでは、Aspose.PDF for .NET を使用して PDF 内の HTML コンテンツを簡単にフォーマットする方法を学習できます。効率的な変換プロセスを求める開発者に最適です。 @@ -191,7 +201,7 @@ Aspose.PDF for .NET を使用して、PDF を高品質な複数ページの TIFF ### [Aspose.PDF を使用して C# で PDF を PostScript に変換する方法: 包括的なガイド](./convert-pdf-to-postscript-aspose-csharp/) Aspose.PDF for .NET を使用してPDFファイルをPostScript形式に変換する方法を、ステップバイステップで解説するガイドです。高品質な印刷ニーズに最適です。 -### [Aspose.PDF for .NET を使用して PDF を TIFF に変換する方法: ステップバイステップガイド](./convert-pdf-to-tiff-aspose-net/) +### [Aspose.PDF for .NET を使用して PDF を TIFF に変換する方法: ステップバイステップ ガイド](./convert-pdf-to-tiff-aspose-net/) Aspose.PDF for .NET を使用して、PDF ファイルを高品質の TIFF 画像に変換する方法を学びましょう。コード例と設定のヒントを含むステップバイステップのガイドをご覧ください。 ### [Aspose.PDF for .NET を使用して PDF を XML に変換する方法: ステップバイステップガイド](./pdf-to-xml-conversion-aspose-pdf-net/) diff --git a/pdf/japanese/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/japanese/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..d3891a3d6 --- /dev/null +++ b/pdf/japanese/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-03-29 +description: PDF を PDF/X‑1a に変換し、PDF ページを PNG にエクスポートする一連のフロー – さらに、Aspose.Pdf(C#)を使用してテキストスタンプを + PDF に追加する方法を学びます。 +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: ja +og_description: PDF を PDF/X‑1a に変換し、テキストスタンプを追加しながら PDF ページを PNG にエクスポートする – Aspose.Pdf + を使用した完全な C# ガイド. +og_title: PDFをPDF/X-1aに変換、ページをPNGでエクスポート、テキストスタンプを追加 +tags: +- Aspose.Pdf +- C# +- PDF processing +title: PDFをPDF/X-1aに変換、ページをPNGでエクスポート、テキストスタンプを追加 +url: /ja/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF を PDF/X‑1a に変換し、ページを PNG でエクスポート、テキストスタンプを追加 – 完全 C# ガイド + +Ever needed to **convert pdf to pdf/x-1a** but also wanted a quick PNG preview of the first page and a custom text stamp on the same document? You’re not alone. In many production pipelines—think print‑ready pre‑flighting or automated report generation—you’ll often hit that exact combination of requirements. + +このチュートリアルでは、**convert pdf to pdf/x-1a**、**export pdf page png**、**add text stamp pdf** の 3 つの処理を連続で行う、単一で一貫したワークフローを解説します。コードは .NET 用 Aspose.Pdf ライブラリを使用しているため、低レベルの PDF 内部に悩むことなく、プロフェッショナルなソリューションが得られます。最後まで実行すれば、任意のコンソールアプリ、Azure Function、または CI ステップに組み込める実行可能な C# プログラムが手に入ります。 + +> **What you’ll get** – 完全なソースファイル、ステップバイステップの解説、一般的な落とし穴への対策、そして出力をすぐに検証できる方法。 + +## Prerequisites + +- .NET 6.0 以降(API は .NET Framework 4.x でも動作します)。 +- Aspose.Pdf for .NET NuGet パッケージ(`Aspose.Pdf`) – 執筆時点の最新版はバージョン 23.10 です。 +- 入力 PDF(`input.pdf`)と ICC プロファイルファイル(`Coated_Fogra39L_VIGC_300.icc`)を、管理できるフォルダーに配置します。 +- C# と Visual Studio(またはお好みの IDE)に関する基本的な知識。 + +If any of those sound unfamiliar, just install the NuGet package with: + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +Now let’s dive in. + +## Step 1: Load the source PDF document + +The first thing we do is open the PDF we want to work on. Aspose.Pdf’s `Document` class represents the whole file, and it lazily loads content, so you don’t pay a performance penalty until you actually touch the pages. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*Why this matters*: Loading the document early gives us a single object to pass around for conversion, rendering, and stamping. If you skip the explicit load and try to work on a non‑existent file, you’ll get a cryptic `FileNotFoundException` later on. + +## Step 2: Convert the document to PDF/X‑1a using a custom ICC profile + +PDF/X‑1a is the de‑facto standard for print‑ready PDFs. The conversion step also lets you embed an **Output Intent** (the ICC profile) so downstream RIPs know exactly how colors should be interpreted. + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*Pro tip*: If you need stricter error handling, replace `ConvertErrorAction.Delete` with `ConvertErrorAction.Throw`. That way the conversion will abort on the first compliance issue, which is handy for automated QA pipelines. + +## Step 3: Export the first page as a PNG while analyzing fonts + +A PNG preview is often required for quick visual checks or thumbnail generation. By enabling `AnalyzeFonts`, Aspose makes sure any embedded fonts are correctly rasterized, avoiding missing‑glyph surprises. + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +After this runs you’ll find `page1.png` next to your source files. Open it in any image viewer to confirm the conversion looks right. + +## Step 4: Add a text stamp that automatically adjusts its font size + +A **text stamp** is a handy way to watermark or annotate a PDF without altering the underlying content streams. Setting `AutoAdjustFontSizeToFitStampRectangle` means the library will shrink or grow the text so it never overflows the rectangle you define. + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*Why auto‑size?* If you later change the stamp text to something longer (e.g., a dynamic timestamp), you won’t have to recalculate font sizes manually—the stamp adapts on the fly. + +## Step 5: Save the updated PDF document + +Finally, write everything back to disk. You can either overwrite the original file or create a brand‑new one; the example below creates `output.pdf`. + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +When the save completes, you have: + +1. PDF/X‑1a に準拠したファイル(`output.pdf`)。 +2. 最初のページの PNG プレビュー(`page1.png`)。 +3. 矩形内にぴったり収まるテキストスタンプ。 + +### Quick verification checklist + +| ✅ チェック | 確認方法 | +|--------|---------------| +| PDF/X‑1a 準拠 | Adobe Acrobat で `output.pdf` を開き、*Print Production* → *Preflight* を選択し、“PDF/X‑1a:2001” を選ぶ。 | +| PNG が正しいか | `page1.png` を Windows フォトビューアや任意の画像エディタで開く。 | +| スタンプが表示されるか | `output.pdf` をスクロールし、テキスト “Auto‑size” がページ 1 の中央にあることを確認。 | + +![auto‑size テキストスタンプ付きの convert pdf to pdf/x-1a プレビュー](image.png "auto‑size テキストスタンプ付きの convert pdf to pdf/x-1a プレビュー showing stamped page") + +*Image alt text*: **auto‑size テキストスタンプ付きの convert pdf to pdf/x-1a プレビュー** – すべての手順を実行した後の最終 PDF を示しています。 + +## Common Variations & Edge Cases + +- **Multiple pages** – すべてのページにスタンプを付ける必要がある場合は、`pdfDoc.Pages` をループし、ループ内で `AddStamp` を呼び出します。 +- **Different output format** – アーカイブ用 PDF にするには、`PdfFormat.PDF_X_1A` を `PdfFormat.PDF_A_1B` に変更します。 +- **Higher‑resolution PNG** – 印刷品質のサムネイル用に、`RenderingOptions` の `Resolution = 600` を設定します。 +- **Custom font for the stamp** – スタンプを追加する前に `autoSizeStamp.Font = FontRepository.FindFont("Arial")` を設定します。 +- **Error handling** – 各主要ステップを `try/catch` で囲み、`ConversionException` や `FileNotFoundException` をログに記録してデバッグを容易にします。 + +## Full Working Example (Copy‑Paste Ready) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Setup paths + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Load the source document + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Convert to PDF/X‑1a (print‑ready) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Export first page as PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Add auto‑sizing text stamp (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/japanese/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..09b2657fe --- /dev/null +++ b/pdf/japanese/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,267 @@ +--- +category: general +date: 2026-03-29 +description: C# で Aspose.PDF を使用して PDF を HTML に保存します。PDF を HTML に変換し、画像を除外し、PDF 署名を検証する方法をひとつのチュートリアルで学べます。 +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: ja +og_description: C# で Aspose.PDF を使用して PDF を HTML に保存します。このガイドでは、PDF を HTML に変換し、画像をスキップし、PDF + のデジタル署名を検証する方法を示します。 +og_title: AsposeでPDFをHTMLに保存する – 完全なC#ガイド +tags: +- Aspose.PDF +- C# +- PDF processing +title: AsposeでPDFをHTMLに保存 – 完全C#ガイド +url: /ja/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# AsposeでPDFをHTMLとして保存 – 完全なC#ガイド + +すべての埋め込み画像を取り込まずに **PDF を HTML として保存** したことはありませんか?軽量なウェブプレビューを作成しようとしていて、余分な画像データがページ速度を低下させているかもしれません。良いニュースは、カスタムパーサーを書く必要はなく、Aspose.PDF がその重い処理を代行してくれることです。このチュートリアルでは **PDF を HTML に変換** し、画像を除去し、さらに **PDF 署名を検証** してドキュメントが改ざんされていないことを確認します。 + +コードを一行ずつ解説し、各設定が *なぜ* 重要なのかを説明します。また、大容量 PDF や署名がないケースといったエッジケースにも触れます。最後まで実行できる C# コンソールアプリが完成し、クリーンな HTML ファイルとデジタル署名の true/false 結果が得られます。 + +## 学習できること + +- Aspose.PDF を使用して PDF ファイルを読み込む。 +- `HtmlSaveOptions` を使用して画像を除外しながら **PDF を HTML に変換** する。 +- 変換された HTML をディスクに保存する。 +- `PdfFileSignature` オブジェクトを設定して **PDF 署名を検証** する。 +- ブール結果を解釈し、一般的な落とし穴に対処する。 +- パフォーマンスとトラブルシューティングに関するボーナスヒント。 + +### 前提条件 + +- .NET 6.0 以降(コードは .NET Framework 4.7+ でも動作します)。 +- Aspose.PDF for .NET NuGet パッケージ(バージョン 23.12 以上)。 +- 署名付き PDF(`input.pdf`)で、署名名が “Sig1” のもの。 +- C# とコンソールアプリケーションの基本的な知識。 + +> **プロのコツ:** まだ Aspose.PDF パッケージをインストールしていない場合は、プロジェクトフォルダーで `dotnet add package Aspose.PDF` を実行してください。 + +--- + +## 手順 1: ソース PDF ドキュメントの読み込み + +何かを行う前に、PDF のメモリ内表現が必要です。Aspose.PDF の `Document` クラスはファイルを読み込み、ページ、リソース、アノテーションのツリーを構築します。 + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**Why this matters:** ドキュメントを一度だけ読み込むことでメモリ使用量が予測可能になります。多数の PDF をループで処理する場合は、`pdfDocument.Dispose()` を呼んだ後に同じ `Document` インスタンスを再利用することを検討してください。 + +--- + +## 手順 2: HTML 保存オプションの設定 – 画像をスキップ + +**PDF を HTML として保存** したいが、重い画像データは除外したい。`HtmlSaveOptions` は細かい制御を提供し、`SkipImages` フラグで Aspose に `` タグを完全に省くよう指示できます。 + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**Why you might skip images:** プレビュー ポータルやモバイルファーストのデザインでは、1KB でも重要です。画像を除去すれば、元の PDF に著作権で保護されたグラフィックが含まれている場合のライセンス問題も回避できます。 + +--- + +## 手順 3: 画像なしで PDF を HTML ファイルとしてエクスポート + +いよいよ HTML ファイルを書き出します。`Save` メソッドは上記で設定したオプションを尊重します。 + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**Result you’ll see:** テキストコンテンツ、テーブル、ベクターグラフィック(存在すれば)だけを含む `.html` ファイルが生成され、`` タグはありません。ブラウザーで開くと、元の PDF のクリーンで画像なしのレンダリングが確認できます。 + +--- + +## 手順 4: 同じドキュメント用の署名検証器を準備 + +Aspose.PDF の `PdfFileSignature` クラスを使うと、PDF に埋め込まれたデジタル署名を検査できます。ここでは、すでに読み込んだ同じ `Document` を指すインスタンスを作成します。 + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**Note on resource handling:** `using` ステートメントにより、検証器は使用後にネイティブハンドルを解放し、Windows でのファイルロック問題を防ぎます。 + +--- + +## 手順 5: “Sig1” という署名を SHA‑3‑256 で検証 + +多くの PDF は SHA‑256 または SHA‑1 を使用しますが、Aspose は新しい SHA‑3 系もサポートしています。ここでは明示的に `Sha3_256` を要求します。署名が存在しない、またはアルゴリズムが一致しない場合は `false` が返ります。 + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**What “false” could mean:** + +1. **署名が見つからない** – PDF が別の名前を使用している可能性があります。`signatureVerifier.GetSignatureNames()` で署名一覧を取得してください。 +2. **アルゴリズムの不一致** – PDF が SHA‑256 で署名されているかもしれません。`DigestHashAlgorithm.Sha256` を試してください。 +3. **ドキュメントが変更された** – 署名後に変更が加わるとハッシュが無効になり、`false` が返ります。 + +--- + +## 一般的なエッジケースの処理 + +### 大きな PDF + +ソース PDF が数百メガバイトを超える場合は、**メモリ節約モード** を有効にすることを検討してください: + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +これによりページがオンデマンドでストリーミングされ、RAM の使用量が削減されます。 + +### 署名が見つからない場合 + +署名名が不明なときは、以下のように列挙します: + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +`VerifySignature` を呼び出す前に、一覧から正しい名前を選択してください。 + +### ブラウザ互換性 + +Aspose のデフォルト CSS を含む HTML は一部のブラウザーで問題を起こすことがあります。`htmlSaveOptions.EmbedCss = true`(前述のコード参照)を設定すると、スタイルがインライン化され、ファイルのポータビリティが向上します。 + +--- + +## 完全な動作例 + +以下は、すべての手順、エラーハンドリング、オプション診断を含む、コピー&ペーストで使用できる完全なプログラムです。 + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**期待されるコンソール出力**(パスは異なる場合があります): + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +署名が無効な場合、最後の行は `Signature valid: False` と表示されます。 + +--- + +## よくある質問 + +**Q: 画像付きで PDF を HTML に変換できますか?** +A: もちろん可能です。`SkipImages = false` に設定するか、プロパティ自体を省略してください。Aspose は各画像を HTML の隣にあるサブフォルダーに別ファイルとして埋め込みます。 + +**Q: これは Linux でも動作しますか?** +A: はい。Aspose.PDF はクロスプラットフォームです。`YOUR_DIRECTORY` のパスはスラッシュ(/)を使用するか、`Path.Combine` を利用してください。 + +**Q: カスタム証明書で PDF のデジタル署名を検証したい場合は?** +A: `PdfFileSignature.ValidateSignature` のオーバーロードで `X509Certificate2` オブジェクトを受け取ります。そのメソッドは詳細な `SignatureInfo` も返すので、さらに検査できます。 + +**Q: `aspose convert pdf` は C# に限定されていますか?** +A: いいえ。同じ API は Java、Python、その他の .NET 言語でも利用可能です。概念(ロード、オプション設定、保存、検証)は同じです。 + +--- + +## 結論 + +Aspose.PDF を使用して **PDF を HTML として保存** し、不要な画像を除去し、**PDF 署名を検証** する方法が正確に理解できました。手順はシンプル:ロード → 設定 → エクスポート → 検証。オプション診断とエッジケース処理も網羅しているので、バッチジョブ、Web サービス、デスクトップユーティリティなどに容易に適用できます。 + +次のステップに進みませんか?画像を保持したまま **PDF を HTML に変換** してみる、あるいは異なるハッシュアルゴリズムで **PDF デジタル署名を検証** して自社 PKI と照合してみる。さらに、Aspose の PDF から DOCX への変換や、複数 PDF の結合後にエクスポートすることも可能です。すべてが今回構築したワークフローの自然な拡張です。 + +Happy coding, and may your HTML previews stay lightweight and your signatures stay trustworthy! + +![save pdf as html example](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/japanese/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..25b643ca0 --- /dev/null +++ b/pdf/japanese/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-03-29 +description: C# と Aspose.PDF を使用して PDF を HTML に保存します。PDF にページを挿入する方法、空白の PDF ページを追加する方法、そして + 1 つのフローで PKCS7 デタッチド署名を作成する方法を学びます。 +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: ja +og_description: Aspose.PDF を使用して C# で PDF を HTML に保存します。このガイドでは、PDF の読み込み、ページの挿入、空白ページの追加、PKCS7 + での署名、HTML へのエクスポート方法を示します。 +og_title: C#でPDFをHTMLとして保存 – 完全プログラミングチュートリアル +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: C#でPDFをHTMLとして保存する – 完全ステップバイステップガイド +url: /ja/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# で PDF を HTML として保存 – 完全ステップバイステップガイド + +PDF を **save PDF as HTML** したいが、レイアウトを保ちつつソースドキュメントを調整する方法が分からないことはありませんか? あなただけではありません—開発者は変換前にページングの修正、空白ページ、デジタル署名などを頻繁に扱います。このチュートリアルでは、まさにそれを実現する単一の統合ワークフローを順に解説し、途中で **insert page into PDF**、**add blank PDF page**、**create PKCS7 detached signature** の方法も紹介します。 + +このガイドの最後まで読むと、既存の PDF を読み込み、ページを再配置し、最初のページに署名を付与し、Unicode CMap を優先して HTML にエクスポートする、すぐに実行可能な C# プログラムが手に入ります。余計な参照はなく、任意の .NET プロジェクトに組み込める自己完結型ソリューションです。 + +## 必要なもの + +- **Aspose.PDF for .NET**(執筆時点の最新バージョン 23.x)。 +- **.NET 6.0** 以上 – .NET Framework 4.7 でもコンパイル可能ですが、.NET 6 が最もパフォーマンスが高いです。 +- PKCS7 署名用の **証明書ファイル**(`.pfx`)とそのパスワード。 +- 操作対象の入力 PDF(`input.pdf`)。 + +これらが揃っていればすぐにコードへ進めます。まだの場合は、公式サイトから 30 日間の無料 Aspose トライアルを取得してください。API は有料版と同一です。 + +--- + +## Step 1 – Load PDF Document in C# (Primary Action) + +最初に PDF をメモリに読み込みます。Aspose の `Document` クラスがすべての重い処理を担います。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*Why this matters:* ファイルをロードすると、変更可能なオブジェクトモデルが得られます。ここから **insert page into PDF**、空白ページの追加、署名の適用などを、ディスク上の元ファイルに触れずに行えます。 + +--- + +## Step 2 – Insert a Page and Add a Blank PDF Page + +ソース PDF にページングの不具合があることがあります—たとえば欠落ページや重複ページです。以下では、ページ 2 をページ 1 の直後にコピーし、最後に完全な空白ページを追加します。 + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*Pro tip:* `UpdatePagination()` はフッターやヘッダーに自動生成されたページ番号を再計算します。このステップを省くと、最終 HTML に古い番号が残る可能性があります。 + +--- + +## Step 3 – Create a PKCS7 Detached Signature (SHA‑512) + +Detached PKCS7 署名は、署名データを PDF コンテンツストリームに直接埋め込まずに文書の完全性を証明します。ここでは PFX ファイルに格納された証明書を使用します。 + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*Why SHA‑512?* SHA‑256 よりも強力なハッシュを提供しつつ、広くサポートされています。古い規格に準拠する必要がある場合は、`Sha512` を `Sha256` に置き換えてください。 + +--- + +## Step 4 – Apply the Digital Signature to Page 1 with a Visible Rectangle + +最初のページに可視署名フィールドを配置します。矩形は署名画像(またはプレースホルダー)が表示される位置を定義します。 + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*Edge case:* 対象ページに同名のフォームフィールドが既に存在すると、API は例外をスローします。フィールド名は一意にするか、署名前に既存フィールドをクリアしてください。 + +--- + +## Step 5 – Configure HTML Save Options to Prioritize Unicode CMap + +HTML へ変換する際、Aspose はフォントを Base‑64 埋め込み、サブセット化、または Unicode CMap のいずれかで出力できます。Unicode を優先するとファイルサイズが削減され、テキスト検索性が向上します。 + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*What does this do?* 可能な限りカスタムフォント埋め込みよりも Unicode CMap を優先させるようコンバータに指示します。多言語 PDF に最適です。 + +--- + +## Step 6 – Save the Signed Document as HTML + +最後に、処理済み PDF を HTML フォルダーとして書き出します(Aspose は CSS や画像などのサポートファイルを含むディレクトリを自動生成します)。 + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +`cmap.html` をブラウザーで開くと、元の PDF レイアウトが HTML としてレンダリングされ、ページ 1 に可視署名画像が表示されます。 + +--- + +## Full Working Example (All Steps Combined) + +以下はコンソール アプリにコピペできる完全プログラムです。必要な `using` ディレクティブとエラーハンドリングをすべて含んでいます。 + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**Expected result:** +- `cmap.html`(メイン HTML ファイル) +- `cmap_files` フォルダー(CSS、画像、フォントリソースを含む) +- 1 ページ目に設定した座標で可視署名ボックスが表示されること + +--- + +## Frequently Asked Questions & Edge Cases + +| Question | Answer | +|----------|--------| +| *Can I use a self‑signed certificate?* | はい、Aspose.PDF は有効な PFX であればどれでも受け付けます。ただし、ブラウザーは署名を信頼できないものとしてフラグを立てる可能性があります。 | +| *What if I need to sign multiple pages?* | 各ページごとに別々の `PdfFileSignature` 呼び出しを行うか、`pageNumber` を更新するループを使用してください。 | +| *Is there a way to embed the signature image instead of a rectangle?* | `PdfFileSignature.Sign` に `SignatureAppearance` オブジェクトと画像ストリームを渡すことで実現できます。 | +| *My PDF has encrypted content—can I still convert?* | まず `pdfDoc.Decrypt("ownerPassword")` で復号し、その後手順を実行してください。 | +| *Will the HTML keep hyperlinks from the original PDF?* | Aspose はデフォルトでリンク注釈を保持します。リンクが欠落している場合は、`htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;` を設定してください。 | + +--- + +## Wrapping Up + +**save PDF as HTML** を実現しつつ **insert page into PDF**、**add blank PDF page**、**create PKCS7 detached signature** をすべて C# で行う方法を示しました。ワークフローは直線的でデバッグしやすく、規模の大きなプロジェクトにも柔軟にカスタマイズ可能です。 + +次に試したいこと: + +- **バッチ処理** – フォルダー内の PDF をループで順次変換。 +- **カスタム CSS** – `HtmlSaveOptions.CustomCss` を調整してサイトのデザインに合わせる。 +- **高度な署名** – タイムスタンプサーバーや LTV(長期検証)を利用してコンプライアンス対応の署名を実装。 + +ぜひこれらに挑戦し、SEO に強く AI アシスタントでも引用しやすい、堅牢な PDF‑to‑HTML パイプラインを構築してください。Happy coding! + +--- + +![Diagram showing PDF loaded, pages inserted, signature applied, then HTML output](/images/save-pdf-as-html-workflow.png "save pdf as html workflow") + +*Image alt text:* **save pdf as html workflow diagram** + +{{< /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 cdbd9f70d..1c438e08b 100644 --- a/pdf/japanese/net/digital-signatures/_index.md +++ b/pdf/japanese/net/digital-signatures/_index.md @@ -59,6 +59,9 @@ PDF ドキュメントを読み込み、PDF/X‑4 に変換し、署名情報を ### [Aspose を使用した PDF 署名の検証 – PDF を HTML に変換](./validate-pdf-signature-with-aspose-convert-pdf-to-html/) Aspose を利用して PDF の署名を検証し、PDF を HTML に変換する手順を解説します。 +### [PDF に署名して画像を追加する方法 – 完全 C# ガイド](./how-to-sign-pdf-and-add-images-complete-c-guide/) +C# を使用して PDF にデジタル署名を行い、画像を埋め込む手順をステップバイステップで解説します。 + ## 追加リソース - [Aspose.PDF for Net ドキュメント](https://docs.aspose.com/pdf/net/) diff --git a/pdf/japanese/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/japanese/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..77b7290ab --- /dev/null +++ b/pdf/japanese/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,244 @@ +--- +category: general +date: 2026-03-29 +description: C#でデジタル署名を使用してPDFに署名し、トリミングした画像を追加する方法。デジタル署名付きPDFの追加、PDF用画像のトリミング、そして画像をPDFに簡単に追加する方法を学びましょう。 +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: ja +og_description: C#でAspose.Pdfを使用してデジタル署名でPDFに署名し、切り抜いた画像を埋め込む方法。このガイドで完全なソリューションをご確認ください。 +og_title: PDFに署名し画像を追加する方法 – ステップバイステップ C# チュートリアル +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: PDFに署名して画像を追加する方法 – 完全C#ガイド +url: /ja/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDFに署名して画像を追加する方法 – 完全なC#ガイド + +プログラムで **PDFに署名** しながらカスタム画像を挿入したことはありますか?承認ワークフローを構築していて、法的に有効な署名 *と* 同じページに署名者のサムネイル写真が必要になることがあります。要するに、 **digital signature pdf** を追加し、画像をトリミングして、 **add image to pdf** を手間なく実現したいということです。 + +このチュートリアルでは、ECDSA PKCS#7 証明書の読み込みから JPEG のトリミング、署名ページへのスタンプまで、すべての手順を解説します。最終的に、ページ 1 に署名し、写真を 400 × 400 px にトリミングして正確な位置に配置する、単一の実行可能 C# ファイルが手に入ります。外部スクリプト不要、魔法も不要、コードと解説だけです。 + +## Prerequisites + +- .NET 6.0 以降(コードは .NET Framework 4.7+ でも動作します) +- **Aspose.Pdf for .NET** NuGet パッケージ(バージョン 23.9 以上) +- PKCS#7(`.pfx`)形式の ECDSA P‑256 証明書とそのパスワード +- 埋め込みたい JPEG 画像(例: `photo.jpg`) + +> **Pro tip:** 証明書ファイルはソース管理から除外し、パスワードはシークレットマネージャで保護してください。 + +--- + +## Step 1: Set Up the Project and Imports + +まずコンソールアプリを作成します(既存のサービスに統合しても構いません)。Aspose.Pdf の参照を追加します: + +```bash +dotnet add package Aspose.Pdf +``` + +次に必要な名前空間をインクルードします: + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +これらの `using` 文により、後で使用する `Document`、`Signature`、`Rectangle` クラスが利用可能になります。 + +## Step 2: Load the PDF and Prepare the Signature + +既存の PDF(`source.pdf`)を開き、PKCS#7 の分離署名を使用する **digital signature pdf** オブジェクトを作成します。証明書は広く受け入れられている ECDSA P‑256 キーです。 + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**Why this matters:** 分離型 PKCS#7 署名を使用すると、元の PDF コンテンツはそのままで暗号ハッシュが埋め込まれます。これは法的に有効な PDF の業界標準手法です。 + +## Step 3: Apply the Digital Signature to a Specific Page + +次に、**page 1** に可視署名フィールドを配置します。矩形は署名ボックスの表示位置を定義します(座標はポイント単位、1 inch = 72 points)。 + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +可視ボックスが不要な場合は `isVisible` を `false` に設定してください。`signatureRect` は文書レイアウトに合わせて調整可能です。 + +## Step 4: Open the Image Stream and Define Crop Areas + +JPEG ファイルをストリームとして読み込み、左上 400 × 400 ピクセルを選択する **source rectangle** を指定します。これが **crop image for pdf** 操作です。 + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **Edge case:** 画像が 400 × 400 未満の場合、トリミングは自動的に画像の実際のサイズにクランプされ、例外は発生しません。 + +## Step 5: Define Where the Cropped Image Should Appear + +次に、PDF ページ上の **destination rectangle** を設定します。この例では (50, 50) の位置に 200 × 200 points(≈2.78 インチ四方)のサイズで画像を配置します。 + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +自由に試してみてください:X/Y 座標を変更して画像の位置を移動したり、幅・高さを調整してスケーリングしたりできます。 + +## Step 6: Insert the Cropped Image onto the Signed Page + +最後に、**page 1**(署名が付与された同じページ)に画像を追加します。使用する `AddImage` のオーバーロードは、ソース矩形とデスティネーション矩形を受け取り、1 回の呼び出しでトリミングと配置を同時に行います。 + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +内部的には、Aspose.Pdf が 400 × 400 ピクセル領域を抽出し、200 × 200 points にリスケールして PDF コンテンツストリームに書き込みます。 + +## Step 7: Save the Signed and Image‑Enhanced PDF + +すべての変更が完了したら、ドキュメントを永続化します。元ファイルを上書きするか、新しいファイルに書き出すかは自由です。 + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +`output_signed.pdf` を Adobe Acrobat や任意の PDF ビューアで開くと、以下が確認できます: + +- 指定した座標に表示される署名フィールド +- ページ 1 の (50, 50) に配置されたトリミング済み写真 +- 証明書が信頼されていればデジタル署名が検証される + +--- + +## Frequently Asked Questions (FAQ) + +| Question | Answer | +|----------|--------| +| **Can I sign a different page?** | `signature.Sign` の `pageNumber` 引数を任意の有効なページインデックス(1 ベース)に変更してください。 | +| **What if I need multiple signatures?** | 各ページまたは各位置ごとに新しい `Signature` インスタンスを作成し、同じ証明書を使用する場合は同じ `pkcsSignature` を再利用できます。 | +| **Is the image cropping limited to rectangles?** | はい、Aspose.Pdf の `AddImage` は矩形領域のみ対応します。複雑な形状が必要な場合は、埋め込む前に System.Drawing などで画像を前処理してください。 | +| **How do I make the signature invisible?** | `isVisible` を `false` に設定し、`signatureRect` を省略します。署名は暗号的に有効なままです。 | +| **What formats can I embed besides JPEG?** | PNG、BMP、GIF、TIFF もサポートされています。ファイルパスを変更し、ストリームが正しいバイトを読み込むようにしてください。 | + +--- + +## Full Working Example + +以下に完全な単体プログラムを示します。`Program.cs` にコピペし、パスを調整して実行してください。 + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**Expected result:** `output_signed.pdf` を開くと、署名フィールド(100 × 100 → 300 × 300 points)と、`photo.jpg` の左上から切り出した 200 × 200 point の画像が表示されます。署名は提供された ECDSA 証明書で検証可能です。 + +--- + +## Wrapping Up + +**how to sign PDF**、**add digital signature pdf**、**crop image for pdf**、そして **add image to pdf** を Aspose.Pdf と C# で実装する方法を網羅しました。証明書の読み込みから最終ドキュメントの保存まで、すべてが 1 つの読みやすいソースファイルに収まります。 + +次のステップに挑戦したい方は、以下を検討してください: + +- 異なるページに **multiple signatures** を追加する(“digital signature pdf page” の概念を利用)。 +- 検証サービスへリンクする **QR codes** を埋め込む。 +- ASP.NET Core API でオンザフライの 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/japanese/net/programming-with-security-and-signatures/_index.md b/pdf/japanese/net/programming-with-security-and-signatures/_index.md index 06d10a864..bcb3ed485 100644 --- a/pdf/japanese/net/programming-with-security-and-signatures/_index.md +++ b/pdf/japanese/net/programming-with-security-and-signatures/_index.md @@ -35,6 +35,7 @@ | [署名フィールドを使用してスマートカードで署名する](./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 ファイルの修復方法 – Aspose.Pdf を使用した完全な C# ガイド](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) Aspose.PDF for .NET を使用して PDF ファイルを修復する方法を学びましょう。ステップバイステップのガイドで、破損した文書を復元できます。 | +| [PDF デジタル署名の検証 – 完全な C# ガイド](./validate-pdf-digital-signature-complete-c-guide/) Aspose.PDF for .NET を使用して、C# で PDF のデジタル署名を検証し、信頼性を確認する方法をステップバイステップで解説します。 | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/japanese/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/japanese/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..9707913f3 --- /dev/null +++ b/pdf/japanese/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,259 @@ +--- +category: general +date: 2026-03-29 +description: PDF デジタル署名を迅速に検証します。Aspose.Pdf を使用した C# で、PDF 署名の検証方法、署名ステータスの確認、改ざんされた + PDF の検出方法を学びましょう。 +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: ja +og_description: C#でPDFのデジタル署名を検証します。このチュートリアルでは、PDF署名の検証方法、署名の完全性チェック、そしてAspose.Pdfを使用した改ざんPDFの検出方法を示します。 +og_title: PDF デジタル署名の検証 – 完全な C# ガイド +tags: +- C# +- Aspose.Pdf +- PDF Security +title: PDF デジタル署名の検証 – 完全な C# ガイド +url: /ja/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF デジタル署名の検証 – 完全 C# ガイド + +PDF の署名を **どうやって検証すればいいのか** と悩んだことはありませんか?たとえば契約書を受け取り、開いたときに 100 % 安全で改ざんされていないことを確認したい…。フォレンジックラボは不要です。数行の C# と Aspose.Pdf さえあれば、**PDF デジタル署名の検証** が瞬時にできます。 + +このチュートリアルでは、ライブラリのインストールから結果の解釈、さらには複数署名や破損ファイルといったエッジケースの処理まで、必要なすべてを解説します。最後まで読めば、プログラムで **PDF 署名のチェック** ができ、**改ざんされた PDF** を問題になる前に検出できるようになります。 + +## 必要なもの + +- **.NET 6.0 以降**(コードは .NET Framework でも動作しますが、.NET 6 が最適です)。 +- **Aspose.Pdf for .NET** – NuGet から取得できます(`Install-Package Aspose.Pdf`)。 +- テストしたい **署名済み PDF**。持っていない場合は、Adobe Acrobat などで簡単な署名ドキュメントを作成してください。 + +> プロのコツ: PDF ファイルはプロジェクトのルートフォルダーに置かないでください。`./Samples/signed.pdf` のような相対パスを使うと、機密ファイルが誤ってコミットされるリスクを回避できます。 + +## 手順別実装 + +以下で解決策を論理的なチャンクに分けて説明します。各チャンクは独自の H2 見出しを持ち、そのうちのひとつは主要キーワードを含んで SEO ルールを満たしています。 + +### ## Step 1 – Install and Reference Aspose.Pdf + +まず、NuGet パッケージをプロジェクトに追加します: + +```powershell +dotnet add package Aspose.Pdf +``` + +または、Package Manager Console を使用する場合: + +```powershell +Install-Package Aspose.Pdf +``` + +パッケージがインストールされると、Visual Studio が自動的に `using Aspose.Pdf;` 名前空間を追加します。追加の DLL 操作は不要です。 + +### ## Step 2 – Load the Signed PDF Document + +次に実際にファイルを開きます。`using` ステートメントにより、ドキュメントが正しく破棄されるので、大きな PDF でも安心です。 + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +> **なぜ重要か:** ドキュメントをロードすると `DigitalSignatureInfo` オブジェクトにアクセスでき、署名関連のすべてのクエリのエントリーポイントになります。 + +### ## Step 3 – Retrieve Digital Signature Information + +Aspose.Pdf は低レベルの PKI 詳細を使いやすい API にラップしています。`DigitalSignatureInfo` プロパティを取得すれば、**PDF 署名の状態** をチェックするために必要な情報がすべて手に入ります。 + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +PDF に複数の署名が含まれている場合、`signatureInfo` はそれらを集約し、`Count`、`Certificates`、`IsCompromised` といったプロパティを公開します。単一署名の場合は、これらのコレクションに 1 件だけが入ります。 + +### ## Step 4 – Determine Whether the Signature Is Compromised + +`IsCompromised` フラグは、署名後にドキュメントが **変更されたか** を示します。`true` の場合は PDF が改ざんされていることを意味し、**改ざんされた PDF の検出** が目的です。 + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +より徹底的に **PDF 署名の検証**(例: 証明書チェーンの検証)したい場合は、`signatureInfo.Certificates` を調べ、各証明書に対して `Validate()` を呼び出すこともできます。多くのユースケースでは `IsCompromised` だけで十分です。 + +### ## Step 5 – Output the Result to the Console + +最後に、ユーザーに結果を伝えます。フレンドリーなメッセージを表示し、さらに自動化スクリプト用に適切な終了コードを返します。 + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### Expected Output + +``` +Signature compromised: False +``` + +PDF を意図的に改ざん(例: 余計な文字を追加)すると、出力は `True` に変わります。これがドキュメントの整合性が失われた瞬間です。 + +### ## Handling Edge Cases and Common Pitfalls + +#### 1. Multiple Signatures + +PDF に複数の署名者がいる場合、`IsCompromised` は *全体* の状態を示します—**いずれか** の署名が破損していればフラグは `true` になります。どの署名者が問題か特定したいときは次のようにします: + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. Missing Signature + +PDF がまったく署名されていない場合、`signatureInfo.Count` は `0` になります。偽の安心感に陥らないようガードしてください: + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. Corrupted PDF File + +破損したファイルは `PdfException` をスローします。ロードロジックを try‑catch で包み、クリーンなエラーメッセージを提供しましょう: + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. Certificate Validation (Advanced) + +署名証明書がまだ有効か(失効していないか、有効期間内か)を確認したい場合は、次のように呼び出します: + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +このステップにより、単なる **PDF 署名のチェック** から、完全な **PDF 署名の検証方法** ワークフローへと進化します。 + +### ## Full Working Example + +すべてをまとめた、実行可能な完全プログラムは以下の通りです: + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +コマンドラインからプログラムを実行します: + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +PDF が無事か、どの署名者が関与しているか、証明書がまだ信頼できるかを示す明確なレポートが表示されます。 + +## Visual Overview + +以下は **PDF のロード** から **検証結果の出力** までのフローを示す簡易図です。大規模な文書処理パイプラインの設計時に便利なリファレンスとなります。 + +![validate pdf digital signature workflow diagram](image.png "Diagram showing PDF load → DigitalSignatureInfo → IsCompromised check") + +*Alt text: validate pdf digital signature workflow diagram* → *代替テキスト: PDF デジタル署名ワークフロー図* + +## Conclusion + +ここまでで、Aspose.Pdf を使用した **PDF デジタル署名の完全なエンドツーエンド検証** を C# で実装する方法を解説しました。主なポイントは次の通りです: + +- `Document` で PDF をロードする。 +- `DigitalSignatureInfo` を取得し、`IsCompromised` で **改ざんされた PDF** を検出する。 +- 複数署名、署名なし、破損ファイルのケースを適切に処理する。 +- 必要に応じて署名証明書を検証し、完全な **PDF 署名の検証方法** チェックリストを実装する。 + +ここからはロジックを拡張して、検証結果をデータベースに保存したり、Web API で署名なしのアップロードを拒否したり、文書管理システムと統合したりできます。他の PDF セキュリティ機能に興味があるなら、**PDF 署名タイムスタンプの確認**、**新しい署名の追加**、**PDF の暗号化** などを調べてみてください。 + +エッジケースに関する質問や、iText 7 など別のライブラリで **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/korean/net/conversion-export/_index.md b/pdf/korean/net/conversion-export/_index.md index a2361bd42..3859e16bd 100644 --- a/pdf/korean/net/conversion-export/_index.md +++ b/pdf/korean/net/conversion-export/_index.md @@ -41,6 +41,9 @@ Aspose.PDF for .NET을 사용하여 Excel 워크시트를 PDF 표로 효율적 ### [Aspose.PDF를 사용하여 C#에서 HTML을 PDF로 변환: 완벽한 가이드](./convert-html-pdf-aspose-pdf-net-csharp/) Aspose.PDF for .NET 및 C#을 사용하여 HTML 콘텐츠를 전문적인 PDF로 변환하는 방법을 알아보세요. 이 가이드에서는 인증된 HTTP 요청, 변환 프로세스 및 자격 증명 설정에 대해 다룹니다. +### [C#를 사용하여 PDF를 HTML로 저장하기 – 완전 단계별 가이드](./save-pdf-as-html-with-c-complete-step-by-step-guide/) +Aspose.PDF for .NET을 사용하여 C#에서 PDF를 HTML로 저장하는 방법을 단계별로 안내합니다. + ### [Aspose.PDF를 사용하여 .NET에서 Markdown을 PDF로 변환: 포괄적인 가이드](./convert-markdown-pdf-aspose-net-tutorial/) Aspose.PDF for .NET을 사용하여 마크다운 파일을 PDF로 변환하는 방법을 알아보세요. 이 단계별 가이드를 따라 애플리케이션에 원활한 문서 변환 기능을 통합해 보세요. @@ -84,7 +87,7 @@ Aspose.PDF for .NET을 사용하여 PDF 문서를 HTML 형식으로 변환하는 Aspose.PDF .NET을 사용하여 PDF 문서를 고품질 PNG 이미지로 변환하는 방법을 알아보고, 글꼴 힌팅을 통해 선명한 텍스트 렌더링을 보장합니다. ### [Aspose.PDF for .NET을 사용하여 PDF를 PPTX로 변환: 단계별 가이드](./convert-pdf-to-pptx-aspose-dotnet-guide/) -Aspose.PDF for .NET을 사용하여 PDF 문서를 PowerPoint 프레젠테이션으로 효율적으로 변환하는 방법을 알아보세요. 이 단계별 가이드에서는 기본 변환, 이미지 슬라이드와 같은 고급 기능, 진행률 추적 등을 다룹니다. +Aspose.PDF for .NET을 사용하여 PDF 문서를 PowerPoint 프레젠테이션으로 효율적으로 변환하는 방법을 알아보세요. 이 단계별 가이드는 기본 변환, 이미지 슬라이드와 같은 고급 기능, 진행률 추적 등을 다룹니다. ### [Aspose.PDF for .NET을 사용하여 PDF를 SVG로 변환: 단계별 가이드](./aspose-pdf-net-pdf-to-svg-conversion/) Aspose.PDF for .NET을 사용하여 PDF를 SVG로 변환하는 방법을 알아보세요. 이 종합 가이드에서는 설정, 변환 단계 및 최적화 팁을 다룹니다. @@ -104,6 +107,9 @@ Aspose.PDF for .NET을 사용하여 PDF 파일을 XML 형식으로 변환하는 ### [Aspose.PDF .NET을 사용하여 PDF/A를 표준 PDF로 변환: 종합 가이드](./convert-pdf-a-standard-pdf-aspose-net/) 이 단계별 가이드를 통해 Aspose.PDF for .NET을 사용하여 PDF/A 문서를 표준 PDF로 원활하게 변환하는 방법을 알아보세요. +### [PDF를 PDF/X-1a로 변환하고, 페이지 PNG 내보내기 및 텍스트 스탬프 추가](./convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/) +Aspose.PDF for .NET을 사용해 PDF를 PDF/X-1a 형식으로 변환하고, 페이지를 PNG 이미지로 내보내며 텍스트 스탬프를 추가하는 방법을 단계별로 안내합니다. + ### [Aspose.PDF .NET을 사용하여 사용자 정의 CSS로 PDF를 대화형 HTML로 변환](./convert-pdfs-to-html-custom-css-aspose-pdf-net/) Aspose.PDF .NET을 사용하여 사용자 정의 CSS 스타일을 적용하여 PDF 문서를 대화형 웹 친화적 HTML 형식으로 변환하는 방법을 알아보세요. @@ -165,7 +171,7 @@ Aspose.PDF for .NET을 사용하여 EPUB 파일을 PDF로 변환하는 방법을 Aspose.PDF .NET을 사용하여 HTML 문서를 전문가 수준의 PDF로 효율적으로 변환하는 방법을 알아보세요. 외부 리소스를 처리하고 복잡한 콘텐츠를 렌더링하는 기술을 알아보세요. ### [Aspose.PDF .NET을 사용하여 대용량 CGM 이미지를 PDF로 변환하는 방법: 포괄적인 가이드](./convert-large-cgm-images-to-pdf-aspose-pdf-net/) -Aspose.PDF .NET을 사용하여 대용량 컴퓨터 그래픽 메타파일(CGM) 이미지를 PDF로 쉽게 변환하는 방법을 알아보세요. 이 가이드에서는 설정, 구현 및 모범 사례를 다룹니다. +Aspose.PDF .NET을 사용하여 대용량 컴퓨터 그래픽 메타파일(CGM) 이미지를 PDF로 쉽게 변환하는 방법을 알아보세요. 이 가이드는 설정, 구현 및 모범 사례를 다룹니다. ### [Aspose.PDF for .NET을 사용하여 MHT 파일을 PDF로 변환하는 방법 - 단계별 가이드](./convert-mht-files-to-pdf-aspose-dotnet/) Aspose.PDF for .NET을 사용하여 MHT 파일을 PDF로 손쉽게 변환하는 방법을 알아보세요. 이 가이드에서는 설정, 변환 단계 및 모범 사례를 다룹니다. @@ -227,6 +233,8 @@ Aspose.PDF Net에 대한 코드 튜토리얼 ### [Aspose.PDF를 사용하여 .NET에서 PDF를 TIFF로 변환: 단계별 가이드](./pdf-to-tiff-conversion-aspose-pdf-net/) Aspose.PDF for .NET을 사용하여 PDF 문서를 TIFF 이미지로 변환하는 방법을 알아보세요. 사용자 정의 색상 심도와 고급 이미지 처리 기술을 익혀보세요. +### [Aspose.PDF를 사용하여 PDF를 HTML로 저장하기: 완전 C# 가이드](./save-pdf-as-html-with-c-complete-step-by-step-guide/) + ## 추가 자료 - [Net 문서용 Aspose.PDF](https://docs.aspose.com/pdf/net/) diff --git a/pdf/korean/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/korean/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..866f5debf --- /dev/null +++ b/pdf/korean/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-03-29 +description: PDF를 PDF/X‑1a로 변환하고 PDF 페이지를 PNG로 내보내는 한 흐름 – 또한 Aspose.Pdf(C#)를 사용하여 + 텍스트 스탬프 PDF를 추가하는 방법을 배웁니다. +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: ko +og_description: PDF를 PDF/X-1a로 변환하고 텍스트 스탬프 PDF를 추가하면서 PDF 페이지를 PNG로 내보내기 – Aspose.Pdf를 + 사용한 완전한 C# 가이드. +og_title: PDF를 PDF/X-1a로 변환하고, 페이지를 PNG로 내보내며 텍스트 스탬프를 추가하기 +tags: +- Aspose.Pdf +- C# +- PDF processing +title: PDF를 PDF/X‑1a로 변환하고, 페이지를 PNG로 내보내며 텍스트 스탬프 추가 +url: /ko/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# pdf를 pdf/x-1a로 변환하고 페이지 png 내보내기 및 텍스트 스탬프 추가 – 완전한 C# 가이드 + +pdf를 **pdf/x-1a로 변환**하면서 첫 페이지의 빠른 PNG 미리보기와 같은 문서에 커스텀 텍스트 스탬프를 추가하고 싶었던 적이 있나요? 당신만 그런 것이 아닙니다. 많은 프로덕션 파이프라인—예를 들어 인쇄‑준비 사전 검사나 자동 보고서 생성—에서 정확히 이 조합의 요구사항을 마주하게 됩니다. + +이 튜토리얼에서는 한 번에 세 가지 작업을 수행하는 단일 워크플로우를 단계별로 살펴봅니다: **pdf를 pdf/x-1a로 변환**, **pdf 페이지를 png로 내보내기**, 그리고 **pdf에 텍스트 스탬프 추가**. 코드는 .NET용 Aspose.Pdf 라이브러리를 사용하므로 저수준 PDF 내부를 직접 다루지 않아도 전문적인 솔루션을 얻을 수 있습니다. 최종적으로 콘솔 앱, Azure Function, 혹은 CI 단계에 바로 넣어 실행할 수 있는 C# 프로그램을 얻게 됩니다. + +> **얻을 수 있는 것** – 전체 소스 파일, 단계별 설명, 흔히 발생하는 함정에 대한 팁, 그리고 출력물을 빠르게 검증하는 방법. + +## Prerequisites + +- .NET 6.0 이상 (API는 .NET Framework 4.x에서도 작동합니다). +- Aspose.Pdf for .NET NuGet 패키지(`Aspose.Pdf`) – 작성 시점 기준 최신 버전은 23.10입니다. +- 입력 PDF(`input.pdf`)와 ICC 프로파일 파일(`Coated_Fogra39L_VIGC_300.icc`)을 직접 관리하는 폴더에 배치합니다. +- C# 및 Visual Studio(또는 선호하는 IDE)에 대한 기본적인 이해. + +위 항목 중 익숙하지 않은 것이 있다면 다음 명령으로 NuGet 패키지를 설치하세요: + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +이제 시작해 보겠습니다. + +## Step 1: Load the source PDF document + +첫 번째로 할 일은 작업할 PDF를 여는 것입니다. Aspose.Pdf의 `Document` 클래스는 전체 파일을 나타내며, 페이지에 실제로 접근하기 전까지는 내용을 지연 로드하므로 성능 페널티가 없습니다. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*왜 중요한가*: 문서를 미리 로드하면 변환, 렌더링, 스탬프 삽입을 모두 같은 객체를 통해 처리할 수 있습니다. 명시적인 로드 없이 존재하지 않는 파일을 다루면 나중에 `FileNotFoundException`이 발생합니다. + +## Step 2: Convert the document to PDF/X‑1a using a custom ICC profile + +PDF/X‑1a는 인쇄‑준비 PDF의 사실상 표준입니다. 변환 단계에서 **Output Intent**(ICC 프로파일)를 삽입하면 이후 RIP가 색상을 정확히 해석할 수 있습니다. + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*프로 팁*: 더 엄격한 오류 처리가 필요하면 `ConvertErrorAction.Delete` 대신 `ConvertErrorAction.Throw`를 사용하세요. 이렇게 하면 첫 번째 규격 위반 시 변환이 중단되어 자동화된 QA 파이프라인에 유용합니다. + +## Step 3: Export the first page as a PNG while analyzing fonts + +PNG 미리보기는 빠른 시각적 확인이나 썸네일 생성에 자주 사용됩니다. `AnalyzeFonts`를 활성화하면 Aspose가 임베드된 폰트를 올바르게 래스터화해 글리프 누락을 방지합니다. + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +이 작업이 끝나면 소스 파일 옆에 `page1.png`가 생성됩니다. 이미지 뷰어에서 열어 변환 결과를 확인하세요. + +## Step 4: Add a text stamp that automatically adjusts its font size + +**텍스트 스탬프**는 PDF 내용 스트림을 변경하지 않고 워터마크나 주석을 추가하는 편리한 방법입니다. `AutoAdjustFontSizeToFitStampRectangle`을 설정하면 라이브러리가 텍스트를 자동으로 축소·확대해 정의한 사각형을 넘지 않게 합니다. + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*자동 크기 조정이 왜 필요할까?* 나중에 스탬프 텍스트를 더 길게(예: 동적 타임스탬프) 바꾸더라도 폰트 크기를 일일이 계산할 필요가 없습니다—스탬프가 자동으로 맞춰집니다. + +## Step 5: Save the updated PDF document + +마지막으로 모든 변경 사항을 디스크에 저장합니다. 원본 파일을 덮어쓰거나 새 파일을 만들 수 있으며, 아래 예제는 `output.pdf`를 생성합니다. + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +저장이 완료되면 다음을 얻게 됩니다: + +1. **PDF/X‑1a** 규격을 만족하는 파일(`output.pdf`). +2. 첫 페이지의 **PNG 미리보기**(`page1.png`). +3. 사각형 안에 완벽히 맞춰진 **텍스트 스탬프**. + +### Quick verification checklist + +| ✅ Check | How to verify | +|--------|---------------| +| PDF/X‑1a compliance | `output.pdf`를 Adobe Acrobat에서 열고 → *Print Production* → *Preflight* 로 이동 후 “PDF/X‑1a:2001”을 선택합니다. | +| PNG looks right | `page1.png`를 Windows Photo Viewer 또는 이미지 편집기에서 엽니다. | +| Stamp appears | `output.pdf`를 스크롤하면서 확인합니다 – 페이지 1에 “Auto‑size” 텍스트가 가운데에 표시됩니다. | + +![convert pdf to pdf/x-1a preview](image.png "convert pdf to pdf/x-1a preview showing stamped page") + +*Image alt text*: **auto‑size 텍스트 스탬프가 포함된 convert pdf to pdf/x-1a 미리보기** – 모든 단계를 수행한 후 최종 PDF를 보여줍니다. + +## Common Variations & Edge Cases + +- **Multiple pages** – 모든 페이지에 스탬프를 붙여야 한다면 `pdfDoc.Pages`를 순회하면서 루프 안에서 `AddStamp`를 호출합니다. +- **Different output format** – `PdfFormat.PDF_X_1A`를 `PdfFormat.PDF_A_1B`로 바꾸면 보관용 PDF를 만들 수 있습니다. +- **Higher‑resolution PNG** – 인쇄 품질 썸네일이 필요하면 `RenderingOptions`의 `Resolution = 600`으로 설정합니다. +- **Custom font for the stamp** – 스탬프를 추가하기 전에 `autoSizeStamp.Font = FontRepository.FindFont("Arial")`를 지정합니다. +- **Error handling** – 각 주요 단계마다 `try/catch` 블록을 사용하고 `ConversionException` 또는 `FileNotFoundException`을 로깅하면 디버깅이 쉬워집니다. + +## Full Working Example (Copy‑Paste Ready) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Setup paths + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Load the source document + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Convert to PDF/X‑1a (print‑ready) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Export first page as PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Add auto‑sizing text stamp (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/korean/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..12f4e7b8b --- /dev/null +++ b/pdf/korean/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,268 @@ +--- +category: general +date: 2026-03-29 +description: C#에서 Aspose.PDF를 사용하여 PDF를 HTML로 저장합니다. PDF를 HTML로 변환하고, 이미지를 제외하며, PDF + 서명을 확인하는 방법을 하나의 튜토리얼에서 배워보세요. +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: ko +og_description: C#에서 Aspose.PDF를 사용하여 PDF를 HTML로 저장합니다. 이 가이드는 PDF를 HTML로 변환하고, 이미지를 + 건너뛰며, PDF 디지털 서명을 검증하는 방법을 보여줍니다. +og_title: Aspose로 PDF를 HTML로 저장하기 – 완전한 C# 가이드 +tags: +- Aspose.PDF +- C# +- PDF processing +title: Aspose를 사용하여 PDF를 HTML로 저장하기 – 완전 C# 가이드 +url: /ko/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Save PDF as HTML with Aspose – Complete C# Guide + +PDF를 **HTML로 저장**하면서 모든 삽입된 이미지를 포함하지 않으려는 적이 있나요? 가벼운 웹 미리보기를 만들고 싶지만 이미지 용량 때문에 페이지 속도가 느려지는 경우가 있을 겁니다. 좋은 소식은 직접 파서를 구현할 필요가 없다는 점입니다—Aspose.PDF가 모든 작업을 대신해 줍니다. 이번 튜토리얼에서는 **PDF를 HTML로 변환**하고 이미지를 제거한 뒤 **PDF 서명을 검증**하여 문서가 변조되지 않았는지 확인하는 방법을 알아봅니다. + +코드 한 줄 한 줄을 살펴보며 각 설정이 왜 중요한지 설명하고, 대용량 PDF나 서명이 없는 경우와 같은 엣지 케이스도 다룹니다. 최종적으로는 깨끗한 HTML 파일을 생성하고 디지털 서명의 true/false 결과를 반환하는 실행 가능한 C# 콘솔 앱을 만들 수 있게 됩니다. + +## What You’ll Learn + +- Aspose.PDF로 PDF 파일 로드하기 +- `HtmlSaveOptions`를 사용해 **PDF를 HTML로 변환**하면서 이미지를 제외하기 +- 결과 HTML을 디스크에 저장하기 +- `PdfFileSignature` 객체를 설정해 **PDF 서명 검증**하기 +- Boolean 결과를 해석하고 일반적인 함정 처리하기 +- 성능 및 트러블슈팅을 위한 보너스 팁 + +### Prerequisites + +- .NET 6.0 이상 (코드는 .NET Framework 4.7+에서도 동작합니다) +- Aspose.PDF for .NET NuGet 패키지 (버전 23.12 이상) +- 서명이 포함된 PDF (`input.pdf`) – 서명 이름은 “Sig1” +- C# 및 콘솔 애플리케이션에 대한 기본 지식 + +> **Pro tip:** 아직 Aspose.PDF 패키지를 설치하지 않았다면 프로젝트 폴더에서 `dotnet add package Aspose.PDF` 명령을 실행하세요. + +--- + +## Step 1: Load the Source PDF Document + +무언가를 하기 전에 먼저 PDF를 메모리 상에 로드해야 합니다. Aspose.PDF의 `Document` 클래스가 파일을 읽어 페이지, 리소스, 주석 트리를 구성합니다. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**Why this matters:** 문서를 한 번만 로드하면 메모리 사용량을 예측 가능하게 유지할 수 있습니다. 여러 PDF를 루프에서 처리하려면 `pdfDocument.Dispose()` 호출 후 동일 `Document` 인스턴스를 재사용하는 것을 고려하세요. + +--- + +## Step 2: Configure HTML Save Options – Skip Images + +**PDF를 HTML로 저장**하되 무거운 이미지 데이터는 제외하고 싶습니다. `HtmlSaveOptions`를 사용하면 세부 옵션을 제어할 수 있으며, `SkipImages` 플래그를 설정하면 Aspose가 `` 태그를 완전히 생략합니다. + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**Why you might skip images:** 미리보기 포털이나 모바일 퍼스트 디자인에서는 킬로바이트 단위도 중요합니다. 이미지를 제거하면 원본 PDF에 저작권이 있는 그래픽이 포함돼 있을 경우 라이선스 문제도 회피할 수 있습니다. + +--- + +## Step 3: Export the PDF as an HTML File Without Images + +이제 실제로 HTML 파일을 씁니다. `Save` 메서드는 앞서 설정한 옵션을 그대로 적용합니다. + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**Result you’ll see:** 텍스트, 테이블, 벡터 그래픽(있는 경우)만 포함된 `.html` 파일이 생성되고 `` 태그는 없습니다. 브라우저에서 열면 원본 PDF의 이미지가 없는 깔끔한 렌더링을 확인할 수 있습니다. + +--- + +## Step 4: Prepare a Signature Verifier for the Same Document + +Aspose.PDF의 `PdfFileSignature` 클래스를 이용해 PDF에 포함된 디지털 서명을 검사합니다. 이미 로드한 `Document`를 가리키는 인스턴스를 생성합니다. + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**Note on resource handling:** `using` 문을 사용하면 검증기가 작업이 끝난 뒤 네이티브 핸들을 해제해 Windows에서 파일 잠금 문제를 방지합니다. + +--- + +## Step 5: Verify the Signature Named “Sig1” Using SHA‑3‑256 + +대부분의 PDF는 SHA‑256 또는 SHA‑1을 사용하지만, Aspose는 최신 SHA‑3 계열도 지원합니다. 여기서는 명시적으로 `Sha3_256`을 요청합니다. 서명이 없거나 알고리즘이 일치하지 않으면 메서드는 `false`를 반환합니다. + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**What “false” could mean:** + +1. **Signature not found** – PDF가 다른 이름을 사용했을 수 있습니다. `signatureVerifier.GetSignatureNames()` 로 서명 목록을 확인하세요. +2. **Algorithm mismatch** – PDF가 SHA‑256으로 서명됐을 수 있습니다. `DigestHashAlgorithm.Sha256`을 시도해 보세요. +3. **Document altered** – 서명 후 문서가 변경되면 해시가 무효화되어 `false`가 반환됩니다. + +--- + +## Handling Common Edge Cases + +### Large PDFs + +소스 PDF가 수백 메가바이트를 초과한다면 **메모리 절약 모드**를 활성화하세요: + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +이 옵션은 페이지를 필요할 때마다 스트리밍하여 RAM 사용량을 낮춥니다. + +### Missing Signature + +서명 이름을 모를 경우 다음과 같이 열거합니다: + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +목록에서 올바른 이름을 선택한 뒤 `VerifySignature`를 호출하세요. + +### Browser Compatibility + +일부 브라우저는 Aspose 기본 CSS가 포함된 HTML을 제대로 표시하지 못합니다. 앞서 보여준 대로 `htmlSaveOptions.EmbedCss = true` 로 스타일을 인라인하면 파일 이동성이 향상됩니다. + +--- + +## Full Working Example + +아래는 모든 단계, 오류 처리, 선택적 진단을 포함한 복사‑붙여넣기 가능한 전체 프로그램입니다. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Expected console output** (경로는 환경에 따라 다름): + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +서명이 유효하지 않으면 마지막 줄에 `Signature valid: False` 가 출력됩니다. + +--- + +## Frequently Asked Questions + +**Q: Can I convert PDF to HTML *with* images?** +A: Absolutely. Just set `SkipImages = false` (or omit the property). Aspose will embed each image as a separate file in a sub‑folder next to the HTML. + +**Q: Does this work on Linux?** +A: Yes. Aspose.PDF is cross‑platform; just make sure the `YOUR_DIRECTORY` paths use forward slashes or `Path.Combine`. + +**Q: What if I need to validate a PDF digital signature with a custom certificate?** +A: Use `PdfFileSignature.ValidateSignature` overload that accepts a `X509Certificate2` object. That method will also return a detailed `SignatureInfo` you can inspect. + +**Q: Is `aspose convert pdf` limited to C#?** +A: No. The same API exists for Java, Python, and other .NET languages. The concepts—load, set options, save, verify—stay the same. + +--- + +## Conclusion + +이제 Aspose.PDF를 사용해 **PDF를 HTML로 저장**하고 불필요한 이미지를 제거하며 **PDF 서명을 검증**하는 방법을 정확히 알게 되었습니다. 과정은 간단합니다: 로드 → 옵션 설정 → 내보내기 → 검증. 선택적 진단 및 엣지 케이스 처리를 포함했으니 배치 작업, 웹 서비스, 데스크톱 유틸리티 등 다양한 시나리오에 적용할 수 있습니다. + +다음 단계가 궁금하신가요? 이미지를 보존하면서 **PDF를 HTML로 변환**하거나, 다른 해시 알고리즘을 사용해 **PDF 디지털 서명을 자체 PKI와 비교**해 보세요. 또한 Aspose의 PDF‑to‑DOCX 변환이나 여러 PDF를 병합한 뒤 내보내는 기능도 탐색해 볼 수 있습니다—모두 방금 만든 워크플로우의 자연스러운 확장입니다. + +Happy coding, and may your HTML previews stay lightweight and your signatures stay trustworthy! + +![save pdf as html example](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/korean/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..98cc9db10 --- /dev/null +++ b/pdf/korean/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-03-29 +description: C#와 Aspose.PDF를 사용하여 PDF를 HTML로 저장합니다. PDF에 페이지를 삽입하고, 빈 PDF 페이지를 추가하며, + 하나의 흐름에서 PKCS7 분리 서명을 만드는 방법을 배웁니다. +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: ko +og_description: Aspose.PDF를 사용하여 C#에서 PDF를 HTML로 저장합니다. 이 가이드는 PDF를 로드하고, 페이지를 삽입하고, + 빈 페이지를 추가하고, PKCS7으로 서명하고, HTML로 내보내는 방법을 보여줍니다. +og_title: C#로 PDF를 HTML로 저장하기 – 전체 프로그래밍 튜토리얼 +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: C#로 PDF를 HTML로 저장하기 – 완전 단계별 가이드 +url: /ko/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#를 사용하여 PDF를 HTML로 저장하기 – 완전 단계별 가이드 + +PDF를 **HTML로 저장**해야 했지만 레이아웃을 유지하면서 원본 문서를 조정하는 방법을 몰랐나요? 당신만 그런 것이 아닙니다—개발자들은 변환 전에 페이지 번호 수정, 빈 페이지 추가, 디지털 서명 등을 자주 다룹니다. 이 튜토리얼에서는 정확히 그 작업을 수행하는 단일 통합 워크플로우를 단계별로 안내하고, 그 과정에서 **insert page into PDF**, **add blank PDF page**, **create PKCS7 detached signature** 방법도 소개합니다. + +이 가이드를 끝까지 따라하면 기존 PDF를 로드하고 페이지를 재구성하며 첫 페이지에 서명을 적용한 뒤, Unicode CMap 우선 순위로 전체를 HTML로 내보내는 실행 가능한 C# 프로그램을 얻을 수 있습니다. 남는 참조 없이, 어떤 .NET 프로젝트에든 바로 넣어 사용할 수 있는 자체 포함 솔루션입니다. + +## 필요 사항 + +- **Aspose.PDF for .NET** (작성 시점 최신 버전, 23.x). +- **.NET 6.0** 이상 – 코드는 .NET Framework 4.7에서도 컴파일되지만, .NET 6이 가장 높은 성능을 제공합니다. +- PKCS7 서명을 위한 **인증서 파일** (`.pfx`) 및 비밀번호. +- 조작하려는 입력 PDF (`input.pdf`). + +위 항목이 준비되었다면 바로 코드로 넘어갈 수 있습니다. 없으면 공식 사이트에서 30일 무료 Aspose 체험판을 받아보세요; API는 유료 버전과 동일합니다. + +--- + +## 1단계 – C#에서 PDF 문서 로드 (주요 작업) + +가장 먼저 PDF를 메모리로 가져와야 합니다. Aspose의 `Document` 클래스가 모든 무거운 작업을 수행합니다. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*Why this matters:* 파일을 로드하면 수정 가능한 객체 모델을 얻게 됩니다. 여기서 **insert page into PDF**, 빈 페이지 추가, 서명 적용 등을 원본 파일을 디스크에 남기지 않고 수행할 수 있습니다. + +--- + +## 2단계 – 페이지 삽입 및 빈 PDF 페이지 추가 + +소스 PDF에 페이지 번호 오류가 있을 수 있습니다—예를 들어 누락된 페이지나 중복된 페이지가 있죠. 아래 예제에서는 페이지 2를 페이지 1 바로 뒤에 복사하고, 마지막에 완전히 빈 페이지를 추가합니다. + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*Pro tip:* `UpdatePagination()`은 Aspose가 생성한 머리글·바닥글에 표시되는 페이지 번호를 다시 계산합니다. 이 단계를 건너뛰면 최종 HTML에 오래된 번호가 남을 수 있습니다. + +--- + +## 3단계 – PKCS7 분리 서명 생성 (SHA‑512) + +분리형 PKCS7 서명은 서명 데이터를 PDF 콘텐츠 스트림에 직접 삽입하지 않고도 문서 무결성을 증명합니다. 여기서는 PFX 파일에 저장된 인증서를 사용합니다. + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*Why SHA‑512?* SHA‑512는 SHA‑256보다 강력한 해시를 제공하면서도 널리 지원됩니다. 오래된 표준을 따라야 한다면 `Sha512`를 `Sha256`으로 교체하면 됩니다. + +--- + +## 4단계 – 가시 사각형을 사용해 1페이지에 디지털 서명 적용 + +첫 페이지에 가시적인 서명 필드를 배치합니다. 사각형은 서명 이미지(또는 자리 표시자)가 표시될 위치를 정의합니다. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*Edge case:* 대상 페이지에 동일한 이름의 폼 필드가 이미 존재하면 API가 예외를 발생시킵니다. 고유한 필드 이름을 사용하거나 서명 전에 기존 필드를 삭제하세요. + +--- + +## 5단계 – Unicode CMap 우선 순위로 HTML 저장 옵션 구성 + +HTML로 변환할 때 Aspose는 폰트를 base‑64로 임베드하거나 서브셋을 사용하거나 Unicode CMap을 활용할 수 있습니다. Unicode를 우선하면 파일 크기가 줄고 텍스트 검색 가능성이 높아집니다. + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*What does this do?* 변환기에 가능한 경우 사용자 정의 폰트 임베드보다 Unicode CMap을 우선 사용하도록 지시합니다. 다국어 PDF에 이상적입니다. + +--- + +## 6단계 – 서명된 문서를 HTML로 저장 + +마지막으로 처리된 PDF를 HTML 폴더 형태로 저장합니다(Aspose가 CSS·이미지 등 지원 파일이 들어 있는 디렉터리를 생성합니다). + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +`cmap.html`을 브라우저에서 열면 원본 PDF 레이아웃이 HTML로 렌더링되고, 1페이지에 가시적인 서명 이미지가 표시됩니다. + +--- + +## 전체 작업 예제 (모든 단계 결합) + +아래는 콘솔 앱에 복사·붙여넣기 할 수 있는 완전한 프로그램입니다. 필요한 `using` 지시문과 오류 처리까지 모두 포함되어 있습니다. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**Expected result:** +- `cmap.html` (주 HTML 파일) +- `cmap_files` 폴더에 CSS, 이미지, 폰트 리소스 포함 +- 첫 페이지에 설정한 좌표에 가시적인 서명 상자가 표시됨 + +--- + +## 자주 묻는 질문 및 엣지 케이스 + +| Question | Answer | +|----------|--------| +| *Can I use a self‑signed certificate?* | Yes, Aspose.PDF accepts any valid PFX. Just remember browsers may flag the signature as untrusted. | +| *What if I need to sign multiple pages?* | Create separate `PdfFileSignature` calls for each page, or use a loop that updates `pageNumber`. | +| *Is there a way to embed the signature image instead of a rectangle?* | Supply a `SignatureAppearance` object with an image stream to `PdfFileSignature.Sign`. | +| *My PDF has encrypted content—can I still convert?* | Decrypt it first using `pdfDoc.Decrypt("ownerPassword")`, then run the steps. | +| *Will the HTML keep hyperlinks from the original PDF?* | Aspose preserves link annotations by default. If you see missing links, set `htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;` | + +--- + +## 마무리 + +우리는 **PDF를 HTML로 저장**하면서 동시에 **insert page into PDF**, **add blank PDF page**, **create PKCS7 detached signature**을 C#만으로 수행하는 방법을 시연했습니다. 워크플로우는 선형적이며 디버그가 쉽고, 대규모 프로젝트에 맞게 완전히 커스터마이즈할 수 있습니다. + +다음과 같은 주제를 살펴볼 수 있습니다: + +- **Batch processing** – 폴더에 있는 여러 PDF를 순회하며 각각 변환. +- **Custom CSS** – `HtmlSaveOptions.CustomCss`를 조정해 사이트 스타일에 맞춤. +- **Advanced signatures** – 타임스탬프 서버나 LTV(장기 검증)를 사용해 규정 수준 서명 구현. + +위 항목들을 시도해 보면 SEO 친화적이며 AI 어시스턴트가 인용하기에도 적합한 견고한 PDF‑to‑HTML 파이프라인을 구축할 수 있습니다. 즐거운 코딩 되세요! + +--- + +![PDF가 로드되고, 페이지가 삽입되고, 서명이 적용된 후 HTML 출력이 되는 다이어그램](/images/save-pdf-as-html-workflow.png "PDF를 HTML로 저장 워크플로우") + +*이미지 대체 텍스트:* **PDF를 HTML로 저장 워크플로우 다이어그램** + +{{< /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 b7d4931cd..373a819c0 100644 --- a/pdf/korean/net/digital-signatures/_index.md +++ b/pdf/korean/net/digital-signatures/_index.md @@ -59,6 +59,9 @@ C#을 사용해 PDF 문서를 로드하고 PDF/X‑4 형식으로 변환한 뒤, ### [Aspose를 사용하여 PDF 서명 검증 – PDF를 HTML로 변환](./validate-pdf-signature-with-aspose-convert-pdf-to-html/) Aspose를 사용해 PDF 서명을 검증하고 PDF를 HTML로 변환하는 방법을 단계별로 안내합니다. +### [PDF에 서명하고 이미지를 추가하는 방법 – 완전 C# 가이드](./how-to-sign-pdf-and-add-images-complete-c-guide/) +C#을 사용해 PDF에 디지털 서명을 적용하고 이미지를 삽입하는 단계별 완전 가이드입니다. + ## 추가 자료 - [Net 문서용 Aspose.PDF](https://docs.aspose.com/pdf/net/) diff --git a/pdf/korean/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/korean/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..1160dea3c --- /dev/null +++ b/pdf/korean/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,240 @@ +--- +category: general +date: 2026-03-29 +description: C#에서 디지털 서명으로 PDF에 서명하고 잘라낸 이미지를 추가하는 방법. 디지털 서명을 PDF에 추가하고, PDF용 이미지를 + 자르고, 이미지를 PDF에 쉽게 추가하는 방법을 배워보세요. +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: ko +og_description: C#에서 Aspose.Pdf를 사용하여 디지털 서명으로 PDF에 서명하고 잘라낸 이미지를 삽입하는 방법. 완전한 솔루션을 + 위해 이 가이드를 따라보세요. +og_title: PDF에 서명하고 이미지 추가하기 – 단계별 C# 튜토리얼 +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: PDF에 서명하고 이미지 추가하기 – 완전한 C# 가이드 +url: /ko/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF에 서명하고 이미지를 추가하는 방법 – 완전한 C# 가이드 + +프로그래밍으로 **PDF에 서명하는 방법**을 궁금해 본 적 있나요? 승인 워크플로를 구축하면서 법적 구속력이 있는 서명 *그리고* 서명자의 사진 썸네일을 같은 페이지에 넣어야 할 수도 있습니다. 요약하면, **디지털 서명 PDF 추가** 콘텐츠를 만들고 사진을 잘라낸 뒤 **PDF에 이미지 추가**를 손쉽게 구현하고 싶은 것입니다. + +이 튜토리얼은 ECDSA PKCS#7 인증서를 로드하고 JPEG를 크롭한 뒤 서명된 페이지에 스탬프하는 모든 과정을 단계별로 안내합니다. 최종적으로 페이지 1에 서명하고 사진을 400 × 400 px로 크롭하여 정확한 위치에 배치하는 단일 실행 가능한 C# 파일을 얻게 됩니다. 외부 스크립트 없이, 마법도 없이, 명확한 코드와 설명만 제공됩니다. + +## 사전 요구 사항 + +- .NET 6.0 이상 (코드는 .NET Framework 4.7+에서도 동작합니다) +- **Aspose.Pdf for .NET** NuGet 패키지 (버전 23.9 이상) +- PKCS#7(`.pfx`) 형식의 ECDSA P‑256 인증서와 비밀번호 +- 삽입하려는 JPEG 이미지 (예: `photo.jpg`) + +> **Pro tip:** 인증서 파일을 소스 제어에서 제외하고 비밀번호는 비밀 관리자에 보관하세요. + +--- + +## 1단계: 프로젝트 설정 및 임포트 + +먼저 콘솔 앱을 만들고(또는 기존 서비스에 통합) Aspose.Pdf 참조를 추가합니다: + +```bash +dotnet add package Aspose.Pdf +``` + +그 다음 필요한 네임스페이스를 포함합니다: + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +이 `using` 문들은 이후에 사용할 `Document`, `Signature`, `Rectangle` 클래스를 사용할 수 있게 해 줍니다. + +## 2단계: PDF 로드 및 서명 준비 + +기존 PDF(`source.pdf`)를 열고 PKCS#7 분리 서명을 사용하는 **디지털 서명 PDF** 객체를 생성합니다. 인증서는 광범위하게 호환되는 ECDSA P‑256 키입니다. + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**Why this matters:** 분리된 PKCS#7 서명을 사용하면 원본 PDF 내용은 그대로 유지하면서 암호화 해시만 삽입됩니다. 이는 법적 구속력이 있는 PDF에 대한 업계 표준 방식입니다. + +## 3단계: 특정 페이지에 디지털 서명 적용 + +이제 **page 1**에 보이는 서명 필드를 배치합니다. 사각형은 서명 박스가 나타나는 위치를 정의하며(좌표는 포인트 단위, 1 inch = 72 points). + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +보이는 박스가 필요 없으면 `isVisible`을 `false`로 설정하세요. `signatureRect`는 문서 레이아웃에 맞게 조정할 수 있습니다. + +## 4단계: 이미지 스트림 열기 및 잘라낼 영역 정의 + +JPEG 파일을 스트림으로 읽고 **source rectangle**을 지정해 좌상단 400 × 400 픽셀 영역을 선택합니다. 이는 **crop image for pdf** 작업입니다. + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **Edge case:** 이미지가 400 × 400보다 작으면 크롭이 자동으로 이미지 실제 크기에 맞게 제한되며 예외가 발생하지 않습니다. + +## 5단계: 잘라낸 이미지가 표시될 위치 정의 + +다음으로 PDF 페이지에 **destination rectangle**을 설정합니다. 이 예시에서는 (50, 50) 위치에 크기 200 × 200 points(≈2.78 인치 정사각형)로 이미지를 배치합니다. + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +자유롭게 실험해 보세요: X/Y 좌표를 바꿔 사진을 이동하거나, 너비/높이를 조정해 스케일링할 수 있습니다. + +## 6단계: 서명된 페이지에 잘라낸 이미지 삽입 + +마지막으로 **page 1**(현재 서명이 들어있는 동일 페이지)에 이미지를 추가합니다. 사용한 `AddImage` 오버로드는 소스와 대상 사각형을 받아 한 번에 크롭 및 배치를 수행합니다. + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +내부적으로 Aspose.Pdf는 400 × 400 픽셀 영역을 추출해 200 × 200 포인트로 재조정하고 PDF 콘텐츠 스트림에 기록합니다. + +## 7단계: 서명 및 이미지가 추가된 PDF 저장 + +모든 수정이 끝나면 문서를 영구 저장합니다. 원본을 덮어쓰거나 새 파일로 저장할 수 있습니다. + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +`output_signed.pdf`를 Adobe Acrobat이나 다른 PDF 뷰어에서 열면 다음을 확인할 수 있습니다: + +- 지정한 좌표에 보이는 서명 필드 +- 페이지 1의 (50, 50) 위치에 배치된 잘라낸 사진 +- 인증서를 신뢰하는 뷰어라면 디지털 서명 검증 완료 + +## 자주 묻는 질문 (FAQ) + +| Question | Answer | +|----------|--------| +| **Can I sign a different page?** | `signature.Sign`의 `pageNumber` 인수를 원하는 페이지 번호(1부터 시작)로 변경하면 됩니다. | +| **What if I need multiple signatures?** | 각 페이지 또는 위치마다 새로운 `Signature` 인스턴스를 생성하고, 동일 인증서를 사용할 경우 동일 `pkcsSignature`를 재사용하면 됩니다. | +| **Is the image cropping limited to rectangles?** | 예, Aspose.Pdf의 `AddImage`는 사각형 영역만 지원합니다. 복잡한 형태가 필요하면 이미지 자체를 미리 처리(예: System.Drawing 사용)해야 합니다. | +| **How do I make the signature invisible?** | `isVisible`을 `false`로 설정하고 `signatureRect`를 생략하면 됩니다. 서명은 여전히 암호학적으로 유효합니다. | +| **What formats can I embed besides JPEG?** | PNG, BMP, GIF, TIFF 모두 지원됩니다. 파일 경로만 변경하고 스트림이 올바른 바이트를 읽도록 하면 됩니다. | + +## 전체 작업 예제 + +아래는 완전하고 독립적인 프로그램 전체 코드입니다. `Program.cs`에 복사·붙여넣기하고 경로만 조정한 뒤 실행하세요. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**Expected result:** `output_signed.pdf`를 열면 서명 필드(100 × 100 → 300 × 300 포인트)와 `photo.jpg` 좌상단에서 추출된 200 × 200 포인트 사진이 표시됩니다. 서명은 제공된 ECDSA 인증서에 대해 검증됩니다. + +## 마무리 + +우리는 **PDF에 서명하는 방법** 파일, 특정 페이지에 **디지털 서명 PDF 추가**, **PDF용 이미지 크롭**, 그리고 Aspose.Pdf를 사용한 **PDF에 이미지 추가** 전 과정을 다루었습니다. 인증서 로드부터 최종 문서 저장까지 전체 흐름이 하나의 읽기 쉬운 소스 파일에 담겨 있습니다. + +다음 단계에 도전하고 싶다면 고려해 보세요: + +- 다른 페이지에 **multiple signatures** 추가(“digital signature pdf page” 개념 활용) +- 검증 서비스로 연결되는 **QR codes** 삽입 +- ASP.NET Core API에서 실시간 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-security-and-signatures/_index.md b/pdf/korean/net/programming-with-security-and-signatures/_index.md index 830a81fe6..1a6cd172e 100644 --- a/pdf/korean/net/programming-with-security-and-signatures/_index.md +++ b/pdf/korean/net/programming-with-security-and-signatures/_index.md @@ -35,6 +35,7 @@ | [서명 필드를 사용하여 스마트 카드로 서명](./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 파일 복구 방법 – Aspose.Pdf와 함께하는 완전한 C# 가이드](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | Aspose.PDF for .NET을 사용하여 PDF 파일을 복구하는 방법을 단계별로 안내합니다. | +| [PDF 디지털 서명 검증 – 완전한 C# 가이드](./validate-pdf-digital-signature-complete-c-guide/) | Aspose.PDF for .NET을 사용하여 PDF 디지털 서명을 검증하는 방법을 단계별로 안내합니다. C# 개발자를 위한 완전 가이드. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/korean/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/korean/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..21d71034c --- /dev/null +++ b/pdf/korean/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,260 @@ +--- +category: general +date: 2026-03-29 +description: PDF 디지털 서명을 빠르게 검증하십시오. PDF 서명을 확인하고, PDF 서명 상태를 점검하며, Aspose.Pdf를 사용해 + C#에서 변조된 PDF를 감지하는 방법을 배워보세요. +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: ko +og_description: C#에서 PDF 디지털 서명을 검증합니다. 이 튜토리얼에서는 Aspose.Pdf를 사용하여 PDF 서명을 확인하고, 서명 + 무결성을 검사하며, 변조된 PDF를 감지하는 방법을 보여줍니다. +og_title: PDF 디지털 서명 검증 – 완전한 C# 가이드 +tags: +- C# +- Aspose.Pdf +- PDF Security +title: PDF 디지털 서명 검증 – 완전 C# 가이드 +url: /ko/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF 디지털 서명 검증 – 완전한 C# 가이드 + +PDF 서명을 **어떻게 검증**할지 고민해 본 적 있나요? 계약서를 받고 열어보았을 때, 100 % 변조되지 않았는지 확인하고 싶을 때 말이죠. 좋은 소식은 포렌식 실험실이 필요 없다는 겁니다—몇 줄의 C# 코드와 Aspose.Pdf만 있으면 **PDF 디지털 서명 검증**을 순식간에 할 수 있습니다. + +이 튜토리얼에서는 라이브러리 설치부터 결과 해석, 다중 서명이나 손상된 파일 같은 엣지 케이스 처리까지 모든 과정을 단계별로 살펴봅니다. 마지막까지 따라오시면 **PDF 서명 상태를 프로그래밍으로 확인**하고 **변조된 PDF** 파일을 사전에 감지할 수 있게 됩니다. + +## 준비물 + +- **.NET 6.0 이상** (코드는 .NET Framework에서도 동작하지만 .NET 6이 가장 적합합니다). +- **Aspose.Pdf for .NET** – NuGet에서 가져올 수 있습니다 (`Install-Package Aspose.Pdf`). +- 테스트할 **서명된 PDF** 파일. 없으시면 Adobe Acrobat이나 다른 PDF 서명 도구로 간단히 서명된 문서를 만들면 됩니다. + +> **Pro tip:** PDF 파일을 프로젝트 루트 폴더에 두지 마세요; `./Samples/signed.pdf` 같은 상대 경로를 사용하면 비밀 파일이 실수로 커밋되는 일을 방지할 수 있습니다. + +## 단계별 구현 + +아래에서는 솔루션을 논리적인 청크로 나누어 설명합니다. 각 청크마다 H2 헤더를 사용했으며, 그 중 하나는 주요 키워드를 포함해 SEO 규칙을 만족합니다. + +### ## Step 1 – Aspose.Pdf 설치 및 참조 + +먼저 NuGet 패키지를 프로젝트에 추가합니다: + +```powershell +dotnet add package Aspose.Pdf +``` + +또는 패키지 관리자 콘솔을 사용할 경우: + +```powershell +Install-Package Aspose.Pdf +``` + +패키지가 설치되면 Visual Studio가 자동으로 `using Aspose.Pdf;` 네임스페이스를 추가합니다. 별도의 DLL 관리가 필요 없습니다. + +### ## Step 2 – 서명된 PDF 문서 로드 + +이제 실제로 파일을 엽니다. `using` 문을 사용하면 문서가 올바르게 해제되어 대용량 PDF에서도 메모리 누수를 방지할 수 있습니다. + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +> **왜 중요한가:** 문서를 로드하면 `DigitalSignatureInfo` 객체에 접근할 수 있게 되며, 이는 모든 서명 관련 질의의 진입점입니다. + +### ## Step 3 – 디지털 서명 정보 가져오기 + +Aspose.Pdf는 저수준 PKI 세부 정보를 친숙한 API로 감싸줍니다. `DigitalSignatureInfo` 속성을 가져오면 **PDF 서명 상태 확인**에 필요한 모든 정보를 얻을 수 있습니다. + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +PDF에 여러 서명이 포함된 경우 `signatureInfo`가 이를 집계하여 `Count`, `Certificates`, `IsCompromised` 같은 속성을 제공합니다. 단일 서명 파일이라면 해당 컬렉션에 하나의 항목만 존재합니다. + +### ## Step 4 – 서명이 손상되었는지 판단 + +`IsCompromised` 플래그는 서명 이후 문서가 **변경**되었는지를 알려줍니다. `true`이면 PDF가 변조된 것으로, 바로 **변조된 PDF 감지**에 해당합니다. + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +보다 철저히 **PDF 서명 검증**을 하고 싶다면(`예: 인증서 체인 검증`) `signatureInfo.Certificates`를 확인하고 각 인증서에 `Validate()`를 호출할 수 있습니다. 대부분의 경우 `IsCompromised`만으로 충분합니다. + +### ## Step 5 – 콘솔에 결과 출력 + +마지막으로 사용자에게 결과를 알려줍니다. 친절한 메시지를 출력하고 자동화 스크립트를 위한 적절한 종료 코드를 반환합니다. + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### Expected Output + +``` +Signature compromised: False +``` + +PDF를 고의로 변조(예: 임의 문자 삽입)하면 출력이 `True`로 바뀝니다. 이때 문서 무결성이 깨졌음을 알 수 있습니다. + +### ## 엣지 케이스 및 흔히 발생하는 함정 처리 + +#### 1. 다중 서명 + +PDF에 서명자가 둘 이상 있는 경우 `IsCompromised`는 *전체* 상태를 반영합니다—**하나라도** 서명이 깨지면 플래그가 `true`가 됩니다. 어느 서명자가 문제인지 파악하려면: + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. 서명 없음 + +PDF에 서명이 전혀 없으면 `signatureInfo.Count`가 `0`이 됩니다. 이 경우 보안에 대한 허위 안심을 피하도록 방어 코드를 작성해야 합니다: + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. 손상된 PDF 파일 + +손상된 파일은 `PdfException`을 발생시킵니다. 로딩 로직을 `try‑catch`로 감싸서 깔끔한 오류 메시지를 제공하세요: + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. 인증서 검증 (고급) + +서명 인증서가 아직 유효한지(폐기되지 않았는지, 유효 기간 내인지) 확인하려면 다음을 호출합니다: + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +이 단계는 단순 **PDF 서명 확인**에서 전체 **PDF 서명 검증 방법** 워크플로우로 확장됩니다. + +### ## 전체 작동 예제 + +모든 코드를 하나로 합치면 다음과 같은 완전한 실행 프로그램이 됩니다: + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +명령줄에서 프로그램을 실행합니다: + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +PDF가 온전한지, 어떤 서명자가 포함되어 있는지, 인증서가 여전히 신뢰할 수 있는지에 대한 명확한 보고서를 확인할 수 있습니다. + +## Visual Overview + +아래는 **PDF 로드**부터 **검증 결과 출력**까지의 흐름을 보여주는 간단한 다이어그램입니다. 더 큰 문서 처리 파이프라인을 설계할 때 유용한 참고 자료가 됩니다. + +![validate pdf digital signature workflow diagram](image.png "Diagram showing PDF load → DigitalSignatureInfo → IsCompromised check") + +*Alt text: PDF 디지털 서명 검증 워크플로우 다이어그램* + +## 결론 + +우리는 Aspose.Pdf를 사용해 C#에서 **PDF 디지털 서명 검증**을 완전하게 구현하는 방법을 다루었습니다. 핵심 포인트는 다음과 같습니다: + +- `Document`로 PDF 로드 +- `DigitalSignatureInfo`를 추출하고 `IsCompromised`를 확인해 **변조된 PDF**를 감지 +- 다중 서명, 서명 없음, 파일 손상 상황을 우아하게 처리 +- 필요에 따라 서명 인증서까지 검증해 전체 **PDF 서명 검증** 체크리스트 완성 + +이제 로직을 확장해 검증 결과를 데이터베이스에 저장하거나, 웹 API에서 서명되지 않은 업로드를 차단하거나, 문서 관리 시스템에 통합할 수 있습니다. 다른 PDF 보안 기능에 관심이 있다면 **PDF 서명 타임스탬프 확인**, **새 서명 추가**, **PDF 암호화** 등을 살펴보세요. + +엣지 케이스에 대한 질문이 있거나 iText 7 같은 다른 라이브러리로 **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/conversion-export/_index.md b/pdf/polish/net/conversion-export/_index.md index 2316b49e9..4d8457ef1 100644 --- a/pdf/polish/net/conversion-export/_index.md +++ b/pdf/polish/net/conversion-export/_index.md @@ -77,6 +77,12 @@ Dowiedz się, jak konwertować pliki PDF do HTML za pomocą Aspose.PDF dla .NET, ### [Konwertuj PDF do HTML z niestandardowymi wymiarami za pomocą Aspose.PDF](./convert-pdf-html-custom-dimensions-asposepdf-net/) Samouczek dotyczący kodu dla Aspose.PDF Net +### [Zapisz PDF jako HTML przy użyciem Aspose – Kompletny przewodnik C#](./save-pdf-as-html-with-aspose-complete-c-guide/) +Kompletny przewodnik w C# pokazujący, jak zapisać plik PDF jako HTML przy użyciu biblioteki Aspose.PDF. + +### [Zapisz PDF jako HTML przy użyciu C# – Kompletny przewodnik krok po kroku](./save-pdf-as-html-with-c-complete-step-by-step-guide/) +Dowiedz się, jak zapisać plik PDF jako HTML w C#, korzystając z Aspose.PDF, krok po kroku z przykładami kodu. + ### [Konwertuj PDF do HTML z niestandardowymi adresami URL obrazów za pomocą Aspose.PDF .NET: kompleksowy przewodnik](./convert-pdf-html-custom-image-urls-aspose-pdf-net/) Dowiedz się, jak konwertować dokumenty PDF do formatu HTML za pomocą Aspose.PDF dla platformy .NET, m.in. jak dostosowywać adresy URL obrazów i wdrażać dostosowaną strategię oszczędzania zasobów. @@ -110,7 +116,7 @@ Dowiedz się, jak za pomocą Aspose.PDF .NET przekształcać dokumenty PDF w int ### [Konwersja PS do PDF w C# przy użyciu Aspose.PDF .NET: Przewodnik krok po kroku](./convert-ps-to-pdf-aspose-dotnet-csharp/) Dowiedz się, jak skutecznie konwertować pliki PostScript do PDF w aplikacjach .NET za pomocą Aspose.PDF. Postępuj zgodnie z tym kompleksowym przewodnikiem z przykładami kodu. -### [Konwertuj pliki PDF RGB na skalę szarości za pomocą Aspose.PDF dla .NET | Kompleksowy przewodnik](./convert-rgb-pdfs-to-grayscale-aspose-pdf-net/) +### [Konwertuj PDF RGB na skalę szarości za pomocą Aspose.PDF dla .NET | Kompleksowy przewodnik](./convert-rgb-pdfs-to-grayscale-aspose-pdf-net/) Dowiedz się, jak skutecznie konwertować pliki PDF RGB na skalę szarości za pomocą Aspose.PDF dla .NET. Ten przewodnik krok po kroku zapewnia spójność projektu i redukcję rozmiaru pliku. ### [Konwersja TeX do PDF za pomocą Aspose.PDF dla .NET: przewodnik krok po kroku](./convert-tex-to-pdf-aspose-dotnet-guide/) @@ -218,7 +224,7 @@ Dowiedz się, jak zoptymalizować konwersję PDF do HTML przy użyciu Aspose.PDF ### [Konwersja PDF do HTML przy użyciu Aspose.PDF .NET: zapisywanie obrazów jako zewnętrznych plików PNG](./pdf-to-html-conversion-external-png-aspose-pdf-net/) Dowiedz się, jak konwertować dokumenty PDF do HTML z zewnętrznymi obrazami PNG za pomocą Aspose.PDF dla .NET. Ten przewodnik zapewnia zachowanie układu i optymalizację wydajności sieci. -### [Konwersja PDF do HTML z Aspose.PDF .NET: kompleksowy przewodnik](./aspose-pdf-net-pdf-to-html-conversion/) +### [Konwersja PDF do HTML przy użyciu Aspose.PDF .NET: kompleksowy przewodnik](./aspose-pdf-net-pdf-to-html-conversion/) Opanuj konwersję PDF-HTML przy użyciu Aspose.PDF dla .NET. Zwiększ dostępność dokumentów i zaangażowanie dzięki konfigurowalnym opcjom. ### [Konwersja PDF do HTML z Aspose.PDF dla .NET](./pdf-to-html-conversion-aspose-dot-net/) @@ -227,6 +233,9 @@ Samouczek dotyczący kodu dla Aspose.PDF Net ### [Konwersja PDF do TIFF w .NET przy użyciu Aspose.PDF: przewodnik krok po kroku](./pdf-to-tiff-conversion-aspose-pdf-net/) Dowiedz się, jak konwertować dokumenty PDF na obrazy TIFF za pomocą Aspose.PDF dla .NET. Opanuj niestandardowe głębie kolorów i zaawansowane techniki przetwarzania obrazu. +### [Konwertuj PDF do PDF/X-1a, wyeksportuj stronę PNG i dodaj znak tekstowy](./convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/) +Dowiedz się, jak konwertować dokument PDF do formatu PDF/X-1a, zapisywać wybraną stronę jako PNG oraz dodawać znak tekstowy przy użyciu Aspose.PDF dla .NET. + ## Dodatkowe zasoby - [Aspose.PDF dla dokumentacji sieciowej](https://docs.aspose.com/pdf/net/) diff --git a/pdf/polish/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/polish/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..87634f4ca --- /dev/null +++ b/pdf/polish/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-03-29 +description: konwertuj pdf do pdf/x-1a i eksportuj stronę pdf jako png w jednym procesie + – dowiedz się także, jak dodać tekstowy stempel do pdf przy użyciu Aspose.Pdf (C#). +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: pl +og_description: konwertuj PDF do PDF/X‑1a i eksportuj stronę PDF jako PNG, dodając + tekstową pieczęć PDF – kompletny przewodnik C# z Aspose.Pdf. +og_title: konwertuj PDF do PDF/X‑1a, wyeksportuj stronę jako PNG i dodaj tekstowy + stempel +tags: +- Aspose.Pdf +- C# +- PDF processing +title: konwertuj pdf do pdf/x-1a, wyeksportuj stronę jako png i dodaj tekstowy stempel +url: /pl/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# konwertować pdf do pdf/x-1a, eksportować stronę png i dodać pieczątkę tekstową – Kompletny przewodnik C# + +Czy kiedykolwiek potrzebowałeś **convert pdf to pdf/x-1a**, ale jednocześnie chciałeś szybki podgląd PNG pierwszej strony oraz własną pieczątkę tekstową w tym samym dokumencie? Nie jesteś sam. W wielu pipeline'ach produkcyjnych — myśl o przygotowaniu do druku lub automatycznym generowaniu raportów — często napotykasz dokładnie takie połączenie wymagań. + +W tym samouczku przeprowadzimy Cię przez jedną spójną sekwencję działań, które wykonują trzy rzeczy po kolei: **convert pdf to pdf/x-1a**, **export pdf page png**, i **add text stamp pdf**. Kod wykorzystuje bibliotekę Aspose.Pdf dla .NET, dzięki czemu otrzymujesz rozwiązanie klasy profesjonalnej bez konieczności zagłębiania się w niskopoziomowe szczegóły PDF. Po zakończeniu będziesz mieć działający program w C#, który możesz wstawić do dowolnej aplikacji konsolowej, Azure Function lub kroku CI. + +> **What you’ll get** – pełny plik źródłowy, wyjaśnienia krok po kroku, wskazówki dotyczące typowych pułapek oraz szybki sposób weryfikacji wyniku. + +## Prerequisites + +- .NET 6.0 lub nowszy (API działa również z .NET Framework 4.x). +- Aspose.Pdf for .NET NuGet package (`Aspose.Pdf`) – version 23.10 is current at the time of writing. +- An input PDF (`input.pdf`) and an ICC profile file (`Coated_Fogra39L_VIGC_300.icc`) placed in a folder you control. +- Basic familiarity with C# and Visual Studio (or your favorite IDE). + +If any of those sound unfamiliar, just install the NuGet package with: + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +Now let’s dive in. + +## Step 1: Load the source PDF document + +The first thing we do is open the PDF we want to work on. Aspose.Pdf’s `Document` class represents the whole file, and it lazily loads content, so you don’t pay a performance penalty until you actually touch the pages. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*Why this matters*: Loading the document early gives us a single object to pass around for conversion, rendering, and stamping. If you skip the explicit load and try to work on a non‑existent file, you’ll get a cryptic `FileNotFoundException` later on. + +## Step 2: Convert the document to PDF/X‑1a using a custom ICC profile + +PDF/X‑1a is the de‑facto standard for print‑ready PDFs. The conversion step also lets you embed an **Output Intent** (the ICC profile) so downstream RIPs know exactly how colors should be interpreted. + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*Pro tip*: If you need stricter error handling, replace `ConvertErrorAction.Delete` with `ConvertErrorAction.Throw`. That way the conversion will abort on the first compliance issue, which is handy for automated QA pipelines. + +## Step 3: Export the first page as a PNG while analyzing fonts + +A PNG preview is often required for quick visual checks or thumbnail generation. By enabling `AnalyzeFonts`, Aspose makes sure any embedded fonts are correctly rasterized, avoiding missing‑glyph surprises. + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +After this runs you’ll find `page1.png` next to your source files. Open it in any image viewer to confirm the conversion looks right. + +## Step 4: Add a text stamp that automatically adjusts its font size + +A **text stamp** is a handy way to watermark or annotate a PDF without altering the underlying content streams. Setting `AutoAdjustFontSizeToFitStampRectangle` means the library will shrink or grow the text so it never overflows the rectangle you define. + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*Why auto‑size?* If you later change the stamp text to something longer (e.g., a dynamic timestamp), you won’t have to recalculate font sizes manually—the stamp adapts on the fly. + +## Step 5: Save the updated PDF document + +Finally, write everything back to disk. You can either overwrite the original file or create a brand‑new one; the example below creates `output.pdf`. + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +When the save completes, you have: + +1. A **PDF/X‑1a** compliant file (`output.pdf`). +2. A **PNG preview** of the first page (`page1.png`). +3. A **text stamp** that fits perfectly within its rectangle. + +### Quick verification checklist + +| ✅ Check | How to verify | +|--------|---------------| +| PDF/X‑1a compliance | Open `output.pdf` in Adobe Acrobat → *Print Production* → *Preflight* and select “PDF/X‑1a:2001”. | +| PNG looks right | Open `page1.png` in Windows Photo Viewer or any image editor. | +| Stamp appears | Scroll through `output.pdf` – the text “Auto‑size” should be centered on page 1. | + +![convert pdf to pdf/x-1a preview](image.png "convert pdf to pdf/x-1a preview showing stamped page") + +*Image alt text*: **convert pdf to pdf/x-1a preview with auto‑size text stamp** – demonstrates the final PDF after all steps. + +## Common Variations & Edge Cases + +- **Multiple pages** – If you need to stamp every page, loop over `pdfDoc.Pages` and call `AddStamp` inside the loop. +- **Different output format** – Change `PdfFormat.PDF_X_1A` to `PdfFormat.PDF_A_1B` for archival PDFs. +- **Higher‑resolution PNG** – Set `Resolution = 600` in the `RenderingOptions` for print‑quality thumbnails. +- **Custom font for the stamp** – Assign `autoSizeStamp.Font = FontRepository.FindFont("Arial")` before adding the stamp. +- **Error handling** – Wrap each major step in a `try/catch` and log `ConversionException` or `FileNotFoundException` for easier debugging. + +## Full Working Example (Copy‑Paste Ready) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Setup paths + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Load the source document + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Convert to PDF/X‑1a (print‑ready) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Export first page as PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Add auto‑sizing text stamp (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/polish/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..7ba3c6c81 --- /dev/null +++ b/pdf/polish/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,268 @@ +--- +category: general +date: 2026-03-29 +description: Zapisz PDF jako HTML przy użyciu Aspose.PDF w C#. Dowiedz się, jak konwertować + PDF na HTML, pomijać obrazy i weryfikować podpis PDF w jednym samouczku. +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: pl +og_description: Zapisz PDF jako HTML przy użyciu Aspose.PDF w C#. Ten przewodnik pokazuje, + jak konwertować PDF na HTML, pomijać obrazy i weryfikować cyfrowy podpis PDF. +og_title: Zapisz PDF jako HTML przy użyciu Aspose – Kompletny przewodnik C# +tags: +- Aspose.PDF +- C# +- PDF processing +title: Zapisz PDF jako HTML z Aspose – Kompletny przewodnik C# +url: /pl/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Zapisz PDF jako HTML przy użyciu Aspose – Kompletny przewodnik C# + +Zastanawiałeś się kiedyś, jak **zapisz PDF jako HTML** bez wciągania każdego osadzonego obrazu? Być może tworzysz lekką podglądową wersję w sieci i dodatkowy ładunek obrazów spowalnia twoją stronę. Dobrą wiadomością jest to, że nie musisz pisać własnego parsera — Aspose.PDF wykona ciężką pracę za Ciebie. W tym samouczku **przekonwertujemy PDF na HTML**, usuniemy obrazy i następnie **zweryfikujemy podpis PDF**, aby upewnić się, że dokument nie został zmodyfikowany. + +Przejdziemy przez każdy wiersz kodu, wyjaśnimy *dlaczego* każde ustawienie ma znaczenie i nawet dotkniemy przypadków brzegowych, takich jak duże pliki PDF czy brakujące podpisy. Po zakończeniu będziesz mieć gotową do uruchomienia aplikację konsolową C#, która generuje czysty plik HTML i zwraca wyraźny wynik true/false dla podpisu cyfrowego. + +## Czego się nauczysz + +- Załaduj plik PDF przy użyciu Aspose.PDF. +- Użyj `HtmlSaveOptions`, aby **przekonwertować PDF na HTML** pomijając obrazy. +- Zapisz powstały HTML na dysku. +- Skonfiguruj obiekt `PdfFileSignature`, aby **zweryfikować podpis PDF**. +- Zinterpretuj wynik logiczny i obsłuż typowe pułapki. +- Dodatkowe wskazówki dotyczące wydajności i rozwiązywania problemów. + +### Wymagania wstępne + +- .NET 6.0 lub nowszy (kod działa również na .NET Framework 4.7+). +- Pakiet NuGet Aspose.PDF dla .NET (wersja 23.12 lub nowsza). +- Podpisany PDF (`input.pdf`) zawierający podpis o nazwie „Sig1”. +- Podstawowa znajomość C# i aplikacji konsolowych. + +> **Pro tip:** Jeśli jeszcze nie zainstalowałeś pakietu Aspose.PDF, uruchom `dotnet add package Aspose.PDF` w folderze projektu. + +--- + +## Krok 1: Załaduj źródłowy dokument PDF + +Zanim będziemy mogli cokolwiek zrobić, potrzebujemy reprezentacji PDF w pamięci. Klasa `Document` z Aspose.PDF odczytuje plik i buduje drzewo stron, zasobów i adnotacji. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**Dlaczego to ważne:** Załadowanie dokumentu raz zapewnia przewidywalne zużycie pamięci. Jeśli planujesz przetwarzać wiele plików PDF w pętli, rozważ ponowne użycie tej samej instancji `Document` po wywołaniu `pdfDocument.Dispose()`. + +--- + +## Krok 2: Skonfiguruj opcje zapisu HTML – pomiń obrazy + +Chcemy **zapisz PDF jako HTML**, ale bez ciężkich danych obrazów. `HtmlSaveOptions` daje nam szczegółową kontrolę, a flaga `SkipImages` instruuje Aspose, aby całkowicie pominął tagi ``. + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**Dlaczego możesz chcieć pominąć obrazy:** Dla portali podglądowych lub projektów mobile‑first każdy kilobajt ma znaczenie. Usunięcie obrazów eliminuje również problemy licencyjne, jeśli źródłowy PDF zawiera chronione prawem autorskim grafiki. + +--- + +## Krok 3: Wyeksportuj PDF jako plik HTML bez obrazów + +Teraz faktycznie zapisujemy plik HTML. Metoda `Save` respektuje wcześniej ustawione opcje. + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**Wynik, który zobaczysz:** Plik `.html` zawierający treść tekstową, tabele i grafikę wektorową (jeśli występuje), ale bez tagów ``. Otwórz go w przeglądarce, a zobaczysz czyste, pozbawione obrazów odwzorowanie oryginalnego PDF. + +--- + +## Krok 4: Przygotuj weryfikator podpisu dla tego samego dokumentu + +Klasa `PdfFileSignature` z Aspose.PDF pozwala nam sprawdzić cyfrowe podpisy osadzone w PDF. Utworzymy instancję, która wskazuje na ten sam `Document`, który już załadowaliśmy. + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**Uwaga dotycząca zarządzania zasobami:** Instrukcja `using` zapewnia, że weryfikator zwalnia wszelkie natywne uchwyty po zakończeniu pracy, zapobiegając problemom z blokowaniem plików w systemie Windows. + +--- + +## Krok 5: Zweryfikuj podpis o nazwie „Sig1” używając SHA‑3‑256 + +Większość PDF‑ów używa SHA‑256 lub SHA‑1, ale Aspose obsługuje również nowszą rodzinę SHA‑3. Tutaj wyraźnie żądamy `Sha3_256`. Jeśli podpis jest nieobecny lub algorytm nie pasuje, metoda zwraca `false`. + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Co może oznaczać „false”:** + +1. **Signature not found** – może PDF używa innej nazwy; wyświetl listę podpisów za pomocą `signatureVerifier.GetSignatureNames()`. +2. **Algorithm mismatch** – PDF mógł zostać podpisany przy użyciu SHA‑256; spróbuj `DigestHashAlgorithm.Sha256`. +3. **Document altered** – każda zmiana po podpisaniu unieważnia hash, co skutkuje wynikiem `false`. + +--- + +## Obsługa typowych przypadków brzegowych + +### Duże pliki PDF + +Jeśli twój źródłowy PDF przekracza kilkaset megabajtów, rozważ włączenie **trybu oszczędzania pamięci**: + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +To strumieniuje strony na żądanie, zmniejszając obciążenie RAM. + +### Brakujący podpis + +Gdy nie jesteś pewien nazwy podpisu, wypisz je wszystkie: + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +Wybierz właściwą nazwę z listy przed wywołaniem `VerifySignature`. + +### Zgodność z przeglądarkami + +Niektóre przeglądarki mają problemy z HTML‑em zawierającym domyślny CSS Aspose. Ustawienie `htmlSaveOptions.EmbedCss = true` (jak pokazano wcześniej) wstawia style bezpośrednio do pliku, co zwiększa jego przenośność. + +--- + +## Pełny działający przykład + +Poniżej znajduje się kompletny, gotowy do skopiowania program, który zawiera wszystkie kroki, obsługę błędów i opcjonalną diagnostykę. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Oczekiwany wynik w konsoli** (ścieżki będą się różnić): + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +Jeśli podpis jest nieprawidłowy, ostatnia linia będzie brzmieć `Signature valid: False`. + +--- + +## Najczęściej zadawane pytania + +**Q: Czy mogę konwertować PDF na HTML *z* obrazami?** +A: Oczywiście. Po prostu ustaw `SkipImages = false` (lub pomiń tę właściwość). Aspose osadzi każdy obraz jako osobny plik w podfolderze obok HTML. + +**Q: Czy to działa na Linuxie?** +A: Tak. Aspose.PDF jest wieloplatformowy; wystarczy, że ścieżki `YOUR_DIRECTORY` używają ukośników (`/`) lub funkcji `Path.Combine`. + +**Q: Co zrobić, jeśli muszę zweryfikować podpis cyfrowy PDF przy użyciu własnego certyfikatu?** +A: Użyj przeciążenia `PdfFileSignature.ValidateSignature`, które przyjmuje obiekt `X509Certificate2`. Metoda zwróci również szczegółowy `SignatureInfo`, który możesz przeanalizować. + +**Q: Czy `aspose convert pdf` jest ograniczone do C#?** +A: Nie. Ten sam API istnieje dla Javy, Pythona i innych języków .NET. Koncepcje — ładowanie, ustawianie opcji, zapisywanie, weryfikacja — pozostają takie same. + +--- + +## Zakończenie + +Teraz wiesz dokładnie, jak **zapisz PDF jako HTML** przy użyciu Aspose.PDF, usunąć niepotrzebne obrazy i **zweryfikować podpis PDF** w jednym, uproszczonym programie C#. Proces jest prosty: załaduj, skonfiguruj, wyeksportuj i zweryfikuj. Dzięki dodatkowej diagnostyce i obsłudze przypadków brzegowych możesz dostosować ten wzorzec do zadań wsadowych, usług sieciowych lub aplikacji desktopowych. + +Gotowy na kolejny krok? Spróbuj **konwertować PDF na HTML** zachowując obrazy lub eksperymentuj z różnymi algorytmami hash, aby **zweryfikować podpis cyfrowy PDF** w swojej własnej infrastrukturze PKI. Możesz także zbadać konwersję Aspose z PDF do DOCX lub łączenie wielu plików PDF przed eksportem — każdy z tych pomysłów jest naturalnym rozszerzeniem zbudowanego właśnie przepływu pracy. + +Miłego kodowania i niech twoje podglądy HTML pozostaną lekkie, a podpisy godne zaufania! + +![save pdf as html example](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/polish/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..0537f1765 --- /dev/null +++ b/pdf/polish/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,258 @@ +--- +category: general +date: 2026-03-29 +description: Zapisz PDF jako HTML przy użyciu C# i Aspose.PDF. Dowiedz się, jak wstawić + stronę do PDF, dodać pustą stronę PDF oraz utworzyć odłączony podpis PKCS7 w jednym + przepływie. +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: pl +og_description: Zapisz PDF jako HTML w C# przy użyciu Aspose.PDF. Ten przewodnik pokazuje, + jak wczytać PDF, wstawić stronę, dodać pustą stronę, podpisać przy użyciu PKCS7 + i wyeksportować do HTML. +og_title: Zapisz PDF jako HTML w C# – Pełny samouczek programowania +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: Zapisz PDF jako HTML w C# – Kompletny przewodnik krok po kroku +url: /pl/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Zapisz PDF jako HTML w C# – Kompletny przewodnik krok po kroku + +Kiedykolwiek potrzebowałeś **zapisz PDF jako HTML**, ale nie wiedziałeś, jak zachować układ dokumentu, jednocześnie modyfikując jego źródło? Nie jesteś sam — programiści często muszą radzić sobie z poprawkami paginacji, pustymi stronami i podpisami cyfrowymi przed konwersją. W tym tutorialu przeprowadzimy Cię przez jedną, spójną procedurę, która robi dokładnie to, a przy okazji pokażemy, jak **insert page into PDF**, **add blank PDF page** oraz **create PKCS7 detached signature**. + +Pod koniec tego przewodnika będziesz mieć gotowy do uruchomienia program w C#, który wczytuje istniejący PDF, przekształca jego strony, podpisuje pierwszą stronę i w końcu eksportuje całość do HTML z priorytetem Unicode CMap. Bez luźnych odwołań, po prostu samodzielne rozwiązanie, które możesz wkleić do dowolnego projektu .NET. + +## Co będzie potrzebne + +- **Aspose.PDF for .NET** (najnowsza wersja, 23.x w momencie pisania). +- **.NET 6.0** lub nowszy – kod kompiluje się także z .NET Framework 4.7, ale .NET 6 zapewnia najlepszą wydajność. +- Plik **certyfikatu** (`.pfx`) i jego hasło do podpisu PKCS7. +- Plik wejściowy PDF (`input.pdf`), który chcesz przetworzyć. + +Jeśli masz te elementy, możemy od razu przejść do kodu. W przeciwnym razie pobierz darmową 30‑dniową wersję próbną Aspose ze strony producenta; API jest identyczne jak w wersji płatnej. + +--- + +## Krok 1 – Wczytaj dokument PDF w C# (Podstawowa akcja) + +Pierwszą rzeczą jest załadowanie PDF do pamięci. Klasa `Document` z Aspose wykonuje całą ciężką pracę. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*Dlaczego to ważne:* Ładowanie pliku daje Ci mutowalny model obiektowy. Od tego momentu możesz **insert page into PDF**, dodać puste strony lub zastosować podpisy, nie modyfikując oryginalnego pliku na dysku. + +--- + +## Krok 2 – Wstaw stronę i dodaj pustą stronę PDF + +Czasami źródłowy PDF ma artefakty paginacji — może brakować strony lub jest zduplikowana. Poniżej kopiujemy stronę 2 zaraz po stronie 1, a następnie dołączamy całkowicie pustą stronę na końcu. + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*Wskazówka:* `UpdatePagination()` przelicza numery stron, które pojawiają się w stopkach lub nagłówkach generowanych przez Aspose. Pominięcie tego kroku może pozostawić nieaktualne numery w końcowym HTML. + +--- + +## Krok 3 – Utwórz odłączony podpis PKCS7 (SHA‑512) + +Odłączony podpis PKCS7 potwierdza integralność dokumentu bez wstawiania danych podpisu bezpośrednio do strumienia treści PDF. Użyjemy certyfikatu przechowywanego w pliku PFX. + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*Dlaczego SHA‑512?* Oferuje silniejszy skrót niż SHA‑256, a jednocześnie jest szeroko wspierany. Jeśli potrzebujesz zgodności ze starszymi standardami, zamień `Sha512` na `Sha256`. + +--- + +## Krok 4 – Zastosuj podpis cyfrowy do strony 1 z widocznym prostokątem + +Umieścimy widoczne pole podpisu na pierwszej stronie. Prostokąt określa, gdzie pojawi się obraz podpisu (lub jego miejsce). + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*Przypadek brzegowy:* Jeśli docelowa strona już zawiera pole formularza o tej samej nazwie, API zgłosi wyjątek. Upewnij się, że nazwy pól są unikalne lub wyczyść istniejące pola przed podpisaniem. + +--- + +## Krok 5 – Skonfiguruj opcje zapisu HTML, aby priorytetyzować Unicode CMap + +Podczas konwersji do HTML, Aspose może osadzać czcionki jako base‑64, używać podzbiorów lub polegać na Unicode CMaps. Priorytetyzowanie Unicode zmniejsza rozmiar pliku i poprawia możliwość wyszukiwania tekstu. + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*Co to robi?* Informuje konwerter, aby w miarę możliwości preferował Unicode CMaps zamiast własnego osadzania czcionek, co jest idealne dla wielojęzycznych PDF‑ów. + +--- + +## Krok 6 – Zapisz podpisany dokument jako HTML + +Na koniec zapisz przetworzony PDF jako folder HTML (Aspose tworzy katalog z plikami pomocniczymi, takimi jak CSS i obrazy). + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +Jeśli otworzysz `cmap.html` w przeglądarce, zobaczysz oryginalny układ PDF przetłumaczony na HTML, wraz z widocznym obrazem podpisu na stronie 1. + +--- + +## Pełny działający przykład (wszystkie kroki razem) + +Poniżej znajduje się kompletny program, który możesz skopiować i wkleić do aplikacji konsolowej. Zawiera wszystkie niezbędne dyrektywy `using` oraz obsługę błędów. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**Oczekiwany rezultat:** +- `cmap.html` (główny plik HTML) +- folder `cmap_files` zawierający CSS, obrazy i zasoby czcionek. +- Pierwsza strona wyświetla widoczne pole podpisu w ustawionych współrzędnych. + +--- + +## Najczęściej zadawane pytania i przypadki brzegowe + +| Pytanie | Odpowiedź | +|----------|-----------| +| *Czy mogę użyć certyfikatu samopodpisanego?* | Tak, Aspose.PDF akceptuje każdy prawidłowy plik PFX. Pamiętaj jednak, że przeglądarki mogą oznaczyć taki podpis jako niezaufany. | +| *Co zrobić, jeśli muszę podpisać wiele stron?* | Utwórz oddzielne wywołania `PdfFileSignature` dla każdej strony lub użyj pętli, która aktualizuje `pageNumber`. | +| *Czy istnieje sposób, aby osadzić obraz podpisu zamiast prostokąta?* | Dostarcz obiekt `SignatureAppearance` z strumieniem obrazu do `PdfFileSignature.Sign`. | +| *Mój PDF jest zaszyfrowany — czy nadal mogę go konwertować?* | Najpierw odszyfruj go przy użyciu `pdfDoc.Decrypt("ownerPassword")`, a potem wykonaj kolejne kroki. | +| *Czy HTML zachowa hiperłącza z oryginalnego PDF?* | Aspose domyślnie zachowuje adnotacje linków. Jeśli zauważysz brakujące linki, ustaw `htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;`. | + +--- + +## Podsumowanie + +Pokazaliśmy, jak **zapisz PDF jako HTML**, jednocześnie **insert page into PDF**, **add blank PDF page** i **create PKCS7 detached signature** — wszystko w C#. Proces jest liniowy, łatwy do debugowania i w pełni konfigurowalny dla większych projektów. + +Następne kroki, które możesz rozważyć: + +- **Przetwarzanie wsadowe** – iteruj po folderze PDF‑ów i konwertuj każdy z nich. +- **Niestandardowy CSS** – dostosuj `HtmlSaveOptions.CustomCss`, aby pasował do stylu Twojej witryny. +- **Zaawansowane podpisy** – użyj serwerów znaczników czasu lub LTV (Long‑Term Validation) dla podpisów spełniających wymogi zgodności. + +Wypróbuj te możliwości i zbuduj solidny pipeline PDF‑do‑HTML, który jest przyjazny SEO i przydatny dla asystentów AI. Powodzenia w kodowaniu! + +--- + +![Diagram showing PDF loaded, pages inserted, signature applied, then HTML output](/images/save-pdf-as-html-workflow.png "save pdf as html workflow") + +*Tekst alternatywny obrazu:* **diagram przepływu zapisu pdf jako html** + +{{< /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 38fd2f4ad..363eb208d 100644 --- a/pdf/polish/net/digital-signatures/_index.md +++ b/pdf/polish/net/digital-signatures/_index.md @@ -64,6 +64,9 @@ Dowiedz się, jak wczytać dokument PDF w C#, przekonwertować go do formatu PDF ### [Weryfikacja podpisu PDF za pomocą Aspose – konwersja PDF do HTML](./validate-pdf-signature-with-aspose-convert-pdf-to-html/) Dowiedz się, jak zweryfikować podpis PDF i jednocześnie przekonwertować dokument do formatu HTML przy użyciu Aspose.PDF. +### [Jak podpisać PDF i dodać obrazy – Kompletny przewodnik C#](./how-to-sign-pdf-and-add-images-complete-c-guide/) +Dowiedz się, jak podpisać plik PDF i dodać obrazy przy użyciu Aspose.PDF w C#. + ## Dodatkowe zasoby - [Aspose.PDF dla dokumentacji sieciowej](https://docs.aspose.com/pdf/net/) diff --git a/pdf/polish/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/polish/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..28fc6620c --- /dev/null +++ b/pdf/polish/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,247 @@ +--- +category: general +date: 2026-03-29 +description: Jak podpisać PDF cyfrowym podpisem i dodać przycięty obraz w C#. Dowiedz + się, jak dodać cyfrowy podpis do PDF, przyciąć obraz do PDF i łatwo dodać obraz + do PDF. +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: pl +og_description: Jak podpisać PDF cyfrowym podpisem i osadzić przycięty obraz przy + użyciu Aspose.Pdf w C#. Skorzystaj z tego przewodnika, aby uzyskać pełne rozwiązanie. +og_title: Jak podpisać PDF i dodać obrazy – krok po kroku w C# +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: Jak podpisać PDF i dodać obrazy – Kompletny przewodnik C# +url: /pl/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak podpisać PDF i dodać obrazy – Kompletny przewodnik C# + +Zastanawiałeś się kiedyś, **jak podpisać pliki PDF** programowo i jednocześnie wstawić własny obraz? Być może tworzysz przepływ zatwierdzania i potrzebujesz prawnie wiążącego podpisu *oraz* miniaturki zdjęcia podpisującego na tej samej stronie. Krótko mówiąc, chcesz **dodać cyfrowy podpis pdf**, przyciąć to zdjęcie i **dodać obraz do pdf** bez problemu. + +Ten tutorial poprowadzi Cię krok po kroku – od wczytania certyfikatu ECDSA PKCS#7 po przycięcie JPEG i umieszczenie go na podpisanej stronie. Na końcu otrzymasz pojedynczy, gotowy do uruchomienia plik C#, który podpisuje stronę 1, przycina zdjęcie do 400 × 400 px i umieszcza je w precyzyjnej lokalizacji. Bez zewnętrznych skryptów, bez magii, tylko przejrzysty kod i wyjaśnienia. + +## Wymagania wstępne + +- .NET 6.0 lub nowszy (kod działa również z .NET Framework 4.7+) +- Pakiet NuGet **Aspose.Pdf for .NET** (wersja 23.9 lub nowsza) +- Certyfikat ECDSA P‑256 w formacie PKCS#7 (`.pfx`) oraz jego hasło +- Obraz JPEG, który chcesz osadzić (np. `photo.jpg`) + +> **Pro tip:** Trzymaj plik certyfikatu poza systemem kontroli wersji i zabezpiecz hasło przy pomocy menedżera sekretów. + +--- + +## Krok 1: Konfiguracja projektu i importy + +Najpierw utwórz aplikację konsolową (lub włącz ten kod do istniejącej usługi). Dodaj odwołanie do Aspose.Pdf: + +```bash +dotnet add package Aspose.Pdf +``` + +Następnie dołącz wymagane przestrzenie nazw: + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +Te dyrektywy `using` dają dostęp do klas `Document`, `Signature` i `Rectangle`, które będą potrzebne później. + +## Krok 2: Wczytaj PDF i przygotuj podpis + +Otworzymy istniejący PDF (`source.pdf`) i stworzymy obiekt **digital signature pdf**, który używa odłączonego podpisu PKCS#7. Certyfikat to klucz ECDSA P‑256, szeroko akceptowany w branży. + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**Dlaczego to ważne:** Użycie odłączonego podpisu PKCS#7 pozostawia oryginalną zawartość PDF nietkniętą, a jedynie wstawia kryptograficzny skrót. To standard branżowy dla prawnie wiążących PDF‑ów. + +## Krok 3: Zastosuj cyfrowy podpis do konkretnej strony + +Teraz umieścimy widoczne pole podpisu na **stronie 1**. Prostokąt definiuje, gdzie pojawi się pole podpisu (współrzędne podawane są w punktach, gdzie 1 cal = 72 punkty). + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +Jeśli nie potrzebujesz widocznego pola, ustaw `isVisible` na `false`. `signatureRect` można dostosować do układu dokumentu. + +## Krok 4: Otwórz strumień obrazu i określ obszary przycięcia + +Wczytamy plik JPEG do strumienia i określimy **prostokąt źródłowy**, który wybiera lewy górny fragment 400 × 400 pikseli. To operacja **crop image for pdf**. + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **Edge case:** Jeśli Twój obraz jest mniejszy niż 400 × 400, przycięcie automatycznie ograniczy się do rzeczywistych wymiarów obrazu – nie zostanie zgłoszony wyjątek. + +## Krok 5: Zdefiniuj, gdzie ma się pojawić przycięty obraz + +Następnie ustaw **prostokąt docelowy** na stronie PDF. W tym przykładzie umieszczamy obraz w (50, 50) o rozmiarze 200 × 200 punktów (≈2,78 cala kwadrat). + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +Śmiało eksperymentuj: zmień współrzędne X/Y, aby przesunąć obraz, lub dostosuj szerokość/wysokość, aby zmienić skalowanie. + +## Krok 6: Wstaw przycięty obraz na podpisaną stronę + +Na koniec dodajemy obraz do **strony 1** (tej samej, na której znajduje się podpis). Przeciążenie `AddImage`, którego używamy, przyjmuje prostokąty źródłowy i docelowy, skutecznie wykonując przycięcie i umieszczenie w jednym wywołaniu. + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +W tle Aspose.Pdf wyodrębnia region 400 × 400 pikseli, przeskalowuje go do 200 × 200 punktów i zapisuje w strumieniu zawartości PDF. + +## Krok 7: Zapisz podpisany i wzbogacony o obraz PDF + +Po wszystkich modyfikacjach zapisz dokument. Możesz nadpisać oryginał lub zapisać do nowego pliku. + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +Po otwarciu `output_signed.pdf` w Adobe Acrobat lub innym przeglądarce PDF zobaczysz: + +- Widoczne pole podpisu w podanych współrzędnych. +- Przycięte zdjęcie umieszczone w (50, 50) na stronie 1. +- Zweryfikowany podpis cyfrowy (o ile przeglądarka ufa Twojemu certyfikatowi). + +--- + +## Najczęściej zadawane pytania (FAQ) + +| Pytanie | Odpowiedź | +|----------|-----------| +| **Czy mogę podpisać inną stronę?** | Zmień argument `pageNumber` w `signature.Sign` na dowolny prawidłowy indeks strony (liczony od 1). | +| **Co zrobić, gdy potrzebuję wielu podpisów?** | Utwórz nową instancję `Signature` dla każdej strony lub lokalizacji, ponownie używając tego samego `pkcsSignature`, jeśli obowiązuje ten sam certyfikat. | +| **Czy przycinanie obrazu ogranicza się do prostokątów?** | Tak, metoda `AddImage` w Aspose.Pdf działa na prostokątnych obszarach. Dla bardziej złożonych kształtów trzeba najpierw przetworzyć obraz (np. przy użyciu System.Drawing) przed osadzeniem. | +| **Jak uczynić podpis niewidocznym?** | Ustaw `isVisible` na `false` i pomiń `signatureRect`. Podpis pozostanie kryptograficznie ważny. | +| **Jakie formaty mogę osadzać oprócz JPEG?** | Obsługiwane są PNG, BMP, GIF oraz TIFF. Wystarczy zmienić ścieżkę pliku i zapewnić, że strumień odczytuje odpowiednie bajty. | + +--- + +## Pełny działający przykład + +Poniżej kompletny, samodzielny program. Skopiuj‑wklej go do `Program.cs`, dostosuj ścieżki i uruchom. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**Oczekiwany rezultat:** Po otwarciu `output_signed.pdf` zobaczysz pole podpisu (100 × 100 → 300 × 300 punktów) oraz obraz o wymiarach 200 × 200 punktów, pochodzący z lewego górnego rogu `photo.jpg`. Podpis zostanie zweryfikowany przy użyciu dostarczonego certyfikatu ECDSA. + +--- + +## Podsumowanie + +Omówiliśmy **jak podpisać PDF** programowo, jak **dodać digital signature pdf** do konkretnej strony, jak **crop image for pdf**, oraz w końcu jak **add image to pdf** przy użyciu Aspose.Pdf w C#. Cały proces – od wczytania certyfikatu po zapis finalnego dokumentu – mieści się w jednym, łatwym do zrozumienia pliku źródłowym. + +Jeśli jesteś gotowy na kolejny krok, rozważ: + +- Dodanie **wielu podpisów** na różnych stronach (użyj koncepcji „digital signature pdf page”). +- Osadzenie **kodów QR** prowadzących do usług weryfikacji. +- Automatyzację procesu w API ASP.NET Core, aby generować PDF‑y „w locie”. + +Pamiętaj, kluczem do solidnej automatyzacji PDF jest wyraźny podział obowiązków: obsługa podpisu, przetwarzanie obrazu i ostateczne składanie dokumentu. Baw się współrzędnymi, wymieniaj formaty obrazów lub eksperymentuj z timestampowaniem – Twój workflow jest teraz w pełni rozszerzalny. + +Masz pytania, nietypowe scenariusze lub ciekawy pomysł do podzielenia się? zostaw komentarz poniżej i powodzenia w kodowaniu! + +{{< /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 90fccd5f4..b13afe0e7 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,7 @@ 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. | +| [Walidacja cyfrowego podpisu PDF – Kompletny przewodnik C#](./validate-pdf-digital-signature-complete-c-guide/) | Dowiedz się, jak weryfikować cyfrowe podpisy PDF w C# przy użyciu Aspose.PDF – krok po kroku. | | [Jak naprawić pliki PDF – Kompletny przewodnik C# z Aspose.Pdf](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | Dowiedz się, jak naprawić uszkodzone pliki PDF przy użyciu Aspose.PDF dla .NET w języku C# – krok po kroku. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/polish/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/polish/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..63a0f07e9 --- /dev/null +++ b/pdf/polish/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,262 @@ +--- +category: general +date: 2026-03-29 +description: Szybko zweryfikuj cyfrowy podpis PDF. Dowiedz się, jak sprawdzić podpis + PDF, zweryfikować jego status oraz wykryć sfałszowany PDF przy użyciu Aspose.Pdf + w C#. +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: pl +og_description: Sprawdź cyfrowy podpis PDF w C#. Ten samouczek pokazuje, jak zweryfikować + podpis PDF, sprawdzić integralność podpisu PDF oraz wykryć sfałszowany PDF przy + użyciu Aspose.Pdf. +og_title: Weryfikacja cyfrowego podpisu PDF – Kompletny przewodnik C# +tags: +- C# +- Aspose.Pdf +- PDF Security +title: Walidacja cyfrowego podpisu PDF – Kompletny przewodnik C# +url: /pl/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Walidacja cyfrowego podpisu PDF – Kompletny przewodnik C# + +Zastanawiałeś się kiedyś **jak zweryfikować podpis PDF** bez wyrywania sobie włosów? Być może otrzymałeś umowę, otworzyłeś ją i musiałeś mieć 100 % pewności, że nie została zmieniona. Dobra wiadomość: nie potrzebujesz laboratorium kryminalistycznego — wystarczy kilka linijek C# i Aspose.Pdf, aby **zweryfikować cyfrowy podpis PDF** w mgnieniu oka. + +W tym samouczku przejdziemy przez wszystko, co musisz wiedzieć: od instalacji biblioteki po interpretację wyniku, a także obsługę przypadków brzegowych, takich jak wiele podpisów czy uszkodzony plik. Po zakończeniu będziesz mógł **sprawdzać status podpisu PDF** programowo i **wykrywać zmodyfikowane pliki PDF**, zanim spowodują problemy. + +## Czego będziesz potrzebować + +- **.NET 6.0 lub nowszy** (kod działa także na .NET Framework, ale .NET 6 to optymalne rozwiązanie). +- **Aspose.Pdf for .NET** – możesz go pobrać z NuGet (`Install-Package Aspose.Pdf`). +- Podpisany **PDF**, który chcesz przetestować. Jeśli go nie masz, utwórz prosty podpisany dokument w Adobe Acrobat lub dowolnym programie do podpisywania PDF. + +> Pro tip: Trzymaj pliki PDF poza katalogiem głównym projektu; względna ścieżka taka jak `./Samples/signed.pdf` działa bez problemu i zapobiega przypadkowym commitom poufnych plików. + +## Implementacja krok po kroku + +Poniżej dzielimy rozwiązanie na logiczne fragmenty. Każdy fragment ma własny nagłówek H2 — jeden z nich nawet zawiera główne słowo kluczowe, spełniając wymóg SEO. + +### ## Krok 1 – Instalacja i odwołanie do Aspose.Pdf + +Najpierw dodaj pakiet NuGet do swojego projektu: + +```powershell +dotnet add package Aspose.Pdf +``` + +Lub, jeśli używasz konsoli Package Manager: + +```powershell +Install-Package Aspose.Pdf +``` + +Po zainstalowaniu pakietu Visual Studio automatycznie doda przestrzeń nazw `using Aspose.Pdf;`. Nie ma potrzeby ręcznego zarządzania DLL‑ami. + +### ## Krok 2 – Załaduj podpisany dokument PDF + +Teraz faktycznie otwieramy plik. Instrukcja `using` zapewnia prawidłowe zwolnienie zasobów dokumentu, co jest szczególnie ważne przy dużych plikach PDF. + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +**Dlaczego to ważne:** Załadowanie dokumentu daje dostęp do obiektu `DigitalSignatureInfo`, będącego punktem wejścia dla wszystkich zapytań związanych z podpisami. + +### ## Krok 3 – Pobierz informacje o cyfrowym podpisie + +Aspose.Pdf owija szczegóły PKI niskiego poziomu w przyjazne API. Pobierz właściwość `DigitalSignatureInfo`, a będziesz mieć wszystko, co potrzebne do **sprawdzenia zdrowia podpisu PDF**. + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +Jeśli PDF zawiera wiele podpisów, `signatureInfo` agreguje je, udostępniając właściwości takie jak `Count`, `Certificates` i `IsCompromised`. W przypadku pliku z jednym podpisem te kolekcje będą zawierały tylko jedną pozycję. + +### ## Krok 4 – Określ, czy podpis jest naruszony + +Flaga `IsCompromised` informuje, czy dokument został zmieniony **po** jego podpisaniu. Wartość `true` oznacza, że PDF został sforsowany — dokładnie to, co chcemy **wykrywać w zmodyfikowanym PDF**. + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +Jeśli potrzebujesz **zweryfikować podpis PDF** dokładniej (np. walidacja łańcucha certyfikatów), możesz również przejrzeć `signatureInfo.Certificates` i wywołać `Validate()` na każdym z nich. Dla większości zastosowań `IsCompromised` wystarczy. + +### ## Krok 5 – Wyświetl wynik w konsoli + +Na koniec poinformuj użytkownika, co się stało. Wydrukujemy przyjazną wiadomość i zwrócimy odpowiedni kod wyjścia dla skryptów automatyzujących. + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### Oczekiwany wynik + +``` +Signature compromised: False +``` + +Jeśli celowo sforsujesz PDF (np. dodasz zbędny znak), wynik zmieni się na `True`. To moment, w którym wiesz, że integralność dokumentu została naruszona. + +### ## Obsługa przypadków brzegowych i typowych pułapek + +#### 1. Wiele podpisów + +Gdy PDF ma więcej niż jednego podpisującego, `IsCompromised` odzwierciedla *całkowity* stan — jeśli **dowolny** podpis jest uszkodzony, flaga przyjmuje wartość `true`. Aby określić, który podpis jest winny: + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. Brak podpisu + +Jeśli PDF nie jest w ogóle podpisany, `signatureInfo.Count` będzie równe `0`. Powinieneś zabezpieczyć się przed fałszywym poczuciem bezpieczeństwa: + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. Uszkodzony plik PDF + +Uszkodzony plik generuje `PdfException`. Owiń logikę ładowania w blok try‑catch, aby zwrócić przejrzysty komunikat o błędzie: + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. Walidacja certyfikatu (zaawansowane) + +Jeśli musisz upewnić się, że certyfikat podpisującego jest nadal ważny (nie unieważniony, w okresie ważności), możesz wywołać: + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +Ten krok przenosi Cię od prostego **sprawdzenia podpisu PDF** do pełnego **jak zweryfikować podpis PDF** workflow. + +### ## Pełny działający przykład + +Łącząc wszystko razem, oto kompletny, gotowy do uruchomienia program: + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +Uruchom program z wiersza poleceń: + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +Powinieneś zobaczyć czytelny raport informujący, czy PDF jest nienaruszony, którzy podpisujący są zaangażowani oraz czy ich certyfikaty są nadal godne zaufania. + +## Przegląd wizualny + +Poniżej znajduje się szybki diagram ilustrujący przepływ od **ładowania PDF** do **wyświetlenia wyniku walidacji**. To przydatna referencja, gdy projektujesz architekturę większego potoku przetwarzania dokumentów. + +![diagram przepływu walidacji cyfrowego podpisu PDF](image.png "Diagram pokazujący ładowanie PDF → DigitalSignatureInfo → sprawdzenie IsCompromised") + +*Alt text: diagram przepływu walidacji cyfrowego podpisu PDF* + +## Zakończenie + +Właśnie przedstawiliśmy **kompletne, end‑to‑end rozwiązanie do walidacji cyfrowego podpisu PDF** przy użyciu Aspose.Pdf w C#. Najważniejsze wnioski: + +- Załaduj PDF przy użyciu `Document`. +- Pobierz `DigitalSignatureInfo` i sprawdź `IsCompromised`, aby **wykrywać zmodyfikowany PDF**. +- Elegancko obsłuż wielokrotne podpisy, brak podpisów i uszkodzone pliki. +- Opcjonalnie zwaliduj certyfikat podpisującego, aby uzyskać pełną listę kontrolną **jak zweryfikować podpis PDF**. + +Od tego momentu możesz rozbudować logikę — zapisywać wyniki walidacji w bazie danych, odrzucać niepodpisane pliki w API webowym lub integrować się z systemem zarządzania dokumentami. Jeśli interesują Cię inne funkcje bezpieczeństwa PDF, sprawdź **sprawdzanie znaczników czasu podpisu PDF**, **dodawanie nowego podpisu** lub **szyfrowanie PDF‑ów**. + +Masz pytania dotyczące przypadków brzegowych lub chcesz zobaczyć, jak **zweryfikować podpis PDF** przy użyciu innej biblioteki, takiej jak iText 7? zostaw komentarz poniżej i kontynuujmy dyskusję. 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/portuguese/net/conversion-export/_index.md b/pdf/portuguese/net/conversion-export/_index.md index ed681c816..b915c376f 100644 --- a/pdf/portuguese/net/conversion-export/_index.md +++ b/pdf/portuguese/net/conversion-export/_index.md @@ -57,7 +57,7 @@ Aprenda a converter páginas PDF em imagens PNG de alta qualidade usando o Aspos Aprenda como converter páginas PDF em imagens BMP de alta qualidade usando o Aspose.PDF para .NET com este guia abrangente. ### [Converter PDF para EMF usando Aspose.PDF para .NET: um guia completo](./convert-pdf-emf-aspose-net-guide/) -Aprenda a converter páginas PDF para o formato EMF usando o Aspose.PDF para .NET. Este guia aborda a configuração, instruções passo a passo e práticas recomendadas. +Aprenda a converter páginas PDF para o formato EMF usando o Aspose.PDF para .NET. Este guia aborda a configuração, instruções passo a passo e prácticas recomendadas. ### [Converter PDF para EMF com Aspose.PDF para .NET](./convert-pdf-to-emf-aspose-dotnet/) Um tutorial de código para Aspose.PDF Net @@ -224,9 +224,18 @@ Domine a conversão de PDF para HTML usando o Aspose.PDF para .NET. Melhore a ac ### [Conversão de PDF para HTML com Aspose.PDF para .NET](./pdf-to-html-conversion-aspose-dot-net/) Um tutorial de código para Aspose.PDF Net +### [Salvar PDF como HTML com Aspose – Guia completo em C#](./save-pdf-as-html-with-aspose-complete-c-guide/) +Aprenda a salvar PDFs como HTML usando Aspose.PDF em C#, com exemplos passo a passo e dicas de otimização. + +### [Salvar PDF como HTML com C# – Guia Completo Passo a Passo](./save-pdf-as-html-with-c-complete-step-by-step-guide/) +Aprenda a converter PDFs em HTML usando C# com Aspose.PDF, seguindo um guia detalhado passo a passo. + ### [Conversão de PDF para TIFF no .NET usando Aspose.PDF: um guia passo a passo](./pdf-to-tiff-conversion-aspose-pdf-net/) Aprenda a converter documentos PDF em imagens TIFF usando o Aspose.PDF para .NET. Domine profundidades de cores personalizadas e técnicas avançadas de processamento de imagens. +### [Converter PDF para PDF/X-1a, exportar página PNG e adicionar selo de texto](./convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/) +Aprenda a converter PDFs para o padrão PDF/X-1a, exportar páginas como PNG e adicionar marcas de texto usando Aspose.PDF para .NET. + ## Recursos adicionais - [Aspose.PDF para documentação da Net](https://docs.aspose.com/pdf/net/) diff --git a/pdf/portuguese/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/portuguese/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..48a87c617 --- /dev/null +++ b/pdf/portuguese/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-03-29 +description: Converter PDF para PDF/X‑1a e exportar página PDF como PNG em um único + fluxo – também aprenda como adicionar selo de texto ao PDF usando Aspose.Pdf (C#). +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: pt +og_description: converter PDF para PDF/X-1a e exportar página PDF como PNG enquanto + adiciona um selo de texto PDF – guia completo em C# com Aspose.Pdf. +og_title: converter pdf para pdf/x-1a, exportar página png e adicionar selo de texto +tags: +- Aspose.Pdf +- C# +- PDF processing +title: converter pdf para pdf/x-1a, exportar página png e adicionar selo de texto +url: /pt/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# converter pdf para pdf/x-1a, exportar página png e adicionar selo de texto – Guia Completo em C# + +Já precisou **converter pdf para pdf/x-1a** mas também queria uma pré‑visualização PNG rápida da primeira página e um selo de texto personalizado no mesmo documento? Você não está sozinho. Em muitas linhas de produção — pense em pré‑checagem pronta‑para‑impressão ou geração automática de relatórios — você frequentemente se depara com essa combinação exata de requisitos. + +Neste tutorial vamos percorrer um fluxo de trabalho único e coeso que faz três coisas em sequência: **converter pdf para pdf/x-1a**, **exportar página pdf como png** e **adicionar selo de texto pdf**. O código usa a biblioteca Aspose.Pdf para .NET, então você obtém uma solução de nível profissional sem precisar lidar com detalhes internos de PDF de baixo nível. Ao final, você terá um programa C# executável que pode ser inserido em qualquer aplicativo console, Azure Function ou etapa de CI. + +> **O que você receberá** – um arquivo fonte completo, explicações passo a passo, dicas para armadilhas comuns e uma forma rápida de validar a saída. + +## Pré‑requisitos + +- .NET 6.0 ou superior (a API também funciona com .NET Framework 4.x). +- Pacote NuGet Aspose.Pdf for .NET (`Aspose.Pdf`) – versão 23.10 é a mais recente no momento da escrita. +- Um PDF de entrada (`input.pdf`) e um arquivo de perfil ICC (`Coated_Fogra39L_VIGC_300.icc`) colocados em uma pasta que você controla. +- Familiaridade básica com C# e Visual Studio (ou sua IDE favorita). + +Se algum desses itens lhe for desconhecido, basta instalar o pacote NuGet com: + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +Agora vamos mergulhar. + +## Etapa 1: Carregar o documento PDF de origem + +A primeira coisa que fazemos é abrir o PDF que queremos manipular. A classe `Document` do Aspose.Pdf representa o arquivo inteiro e carrega o conteúdo de forma preguiçosa, então você não paga penalidade de desempenho até realmente acessar as páginas. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*Por que isso importa*: Carregar o documento antecipadamente nos fornece um único objeto para passar nas etapas de conversão, renderização e selo. Se você pular o carregamento explícito e tentar trabalhar em um arquivo inexistente, receberá uma enigmática `FileNotFoundException` mais adiante. + +## Etapa 2: Converter o documento para PDF/X‑1a usando um perfil ICC personalizado + +PDF/X‑1a é o padrão de fato para PDFs prontos‑para‑impressão. A etapa de conversão também permite incorporar um **Output Intent** (o perfil ICC) para que os RIPs downstream saibam exatamente como as cores devem ser interpretadas. + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*Dica profissional*: Se precisar de tratamento de erro mais rigoroso, substitua `ConvertErrorAction.Delete` por `ConvertErrorAction.Throw`. Assim, a conversão abortará ao primeiro problema de conformidade, o que é útil para pipelines de QA automatizados. + +## Etapa 3: Exportar a primeira página como PNG enquanto analisa fontes + +Uma pré‑visualização PNG costuma ser necessária para verificações visuais rápidas ou geração de miniaturas. Ao habilitar `AnalyzeFonts`, o Aspose garante que quaisquer fontes incorporadas sejam rasterizadas corretamente, evitando surpresas de glifos ausentes. + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +Depois que isso for executado, você encontrará `page1.png` ao lado dos seus arquivos de origem. Abra-o em qualquer visualizador de imagens para confirmar que a conversão ficou correta. + +## Etapa 4: Adicionar um selo de texto que ajusta automaticamente o tamanho da fonte + +Um **selo de texto** é uma maneira prática de marcar ou anotar um PDF sem alterar os fluxos de conteúdo subjacentes. Definir `AutoAdjustFontSizeToFitStampRectangle` faz com que a biblioteca diminua ou aumente o texto para que nunca ultrapasse o retângulo que você definiu. + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*Por que auto‑ajuste?* Se mais tarde você mudar o texto do selo para algo mais longo (por exemplo, um timestamp dinâmico), não precisará recalcular tamanhos de fonte manualmente — o selo se adapta em tempo real. + +## Etapa 5: Salvar o documento PDF atualizado + +Finalmente, gravamos tudo de volta no disco. Você pode sobrescrever o arquivo original ou criar um totalmente novo; o exemplo abaixo cria `output.pdf`. + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +Quando a gravação for concluída, você terá: + +1. Um arquivo **PDF/X‑1a** compatível (`output.pdf`). +2. Uma **pré‑visualização PNG** da primeira página (`page1.png`). +3. Um **selo de texto** que se encaixa perfeitamente dentro do seu retângulo. + +### Checklist rápido de verificação + +| ✅ Verificação | Como validar | +|--------|---------------| +| Conformidade PDF/X‑1a | Abra `output.pdf` no Adobe Acrobat → *Print Production* → *Preflight* e selecione “PDF/X‑1a:2001”. | +| PNG está correto | Abra `page1.png` no Windows Photo Viewer ou em qualquer editor de imagens. | +| Selo aparece | Role o `output.pdf` — o texto “Auto‑size” deve estar centralizado na página 1. | + +![convert pdf to pdf/x-1a preview](image.png "convert pdf to pdf/x-1a preview showing stamped page") + +*Texto alternativo da imagem*: **visualização de conversão pdf para pdf/x-1a com selo de texto auto‑size** – demonstra o PDF final após todas as etapas. + +## Variações Comuns & Casos de Borda + +- **Múltiplas páginas** – Se precisar selar todas as páginas, faça um loop sobre `pdfDoc.Pages` e chame `AddStamp` dentro do loop. +- **Formato de saída diferente** – Altere `PdfFormat.PDF_X_1A` para `PdfFormat.PDF_A_1B` para PDFs de arquivamento. +- **PNG de alta resolução** – Defina `Resolution = 600` nas `RenderingOptions` para miniaturas com qualidade de impressão. +- **Fonte personalizada para o selo** – Atribua `autoSizeStamp.Font = FontRepository.FindFont("Arial")` antes de adicionar o selo. +- **Tratamento de erros** – Envolva cada etapa principal em um `try/catch` e registre `ConversionException` ou `FileNotFoundException` para facilitar a depuração. + +## Exemplo Completo Funcional (Pronto para Copiar‑Colar) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Configurar caminhos + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Carregar o documento de origem + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Converter para PDF/X‑1a (pronto‑para‑impressão) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Exportar a primeira página como PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Adicionar selo de texto com ajuste automático (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/portuguese/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..736dab36c --- /dev/null +++ b/pdf/portuguese/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,268 @@ +--- +category: general +date: 2026-03-29 +description: Salvar PDF como HTML usando Aspose.PDF em C#. Aprenda como converter + PDF para HTML, omitir imagens e verificar a assinatura do PDF em um único tutorial. +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: pt +og_description: Salvar PDF como HTML com Aspose.PDF em C#. Este guia mostra como converter + PDF para HTML, ignorar imagens e validar a assinatura digital do PDF. +og_title: Salvar PDF como HTML com Aspose – Guia Completo em C# +tags: +- Aspose.PDF +- C# +- PDF processing +title: Salvar PDF como HTML com Aspose – Guia Completo em C# +url: /pt/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Salvar PDF como HTML com Aspose – Guia Completo em C# + +Já se perguntou como **salvar PDF como HTML** sem incluir todas as imagens incorporadas? Talvez você esteja criando uma visualização web leve e a carga extra de imagens esteja prejudicando a velocidade da sua página. A boa notícia é que você não precisa escrever um analisador personalizado—Aspose.PDF faz o trabalho pesado por você. Neste tutorial, vamos **converter PDF para HTML**, remover as imagens e então **verificar a assinatura do PDF** para garantir que o documento não foi adulterado. + +Percorreremos cada linha de código, explicaremos *por que* cada configuração é importante e até abordaremos casos extremos, como PDFs grandes ou assinaturas ausentes. Ao final, você terá um aplicativo de console C# pronto‑para‑executar que produz um arquivo HTML limpo e fornece um resultado verdadeiro/falso claro para a assinatura digital. + +## O que você aprenderá + +- Carregar um arquivo PDF com Aspose.PDF. +- Usar `HtmlSaveOptions` para **converter PDF para HTML** omitindo imagens. +- Salvar o HTML resultante no disco. +- Configurar um objeto `PdfFileSignature` para **verificar a assinatura do PDF**. +- Interpretar o resultado booleano e lidar com armadilhas comuns. +- Dicas bônus para desempenho e solução de problemas. + +### Pré-requisitos + +- .NET 6.0 ou superior (o código também funciona no .NET Framework 4.7+). +- Pacote NuGet Aspose.PDF for .NET (versão 23.12 ou mais recente). +- Um PDF assinado (`input.pdf`) que contém uma assinatura chamada “Sig1”. +- Familiaridade básica com C# e aplicativos de console. + +> **Dica profissional:** Se ainda não instalou o pacote Aspose.PDF, execute `dotnet add package Aspose.PDF` a partir da pasta do seu projeto. + +--- + +## Etapa 1: Carregar o Documento PDF de Origem + +Antes de podermos fazer qualquer coisa, precisamos de uma representação em memória do PDF. A classe `Document` do Aspose.PDF lê o arquivo e constrói uma árvore de páginas, recursos e anotações. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**Por que isso importa:** Carregar o documento uma única vez mantém o uso de memória previsível. Se você planeja processar muitos PDFs em um loop, considere reutilizar a mesma instância `Document` após chamar `pdfDocument.Dispose()`. + +--- + +## Etapa 2: Configurar Opções de Salvamento HTML – Ignorar Imagens + +Queremos **salvar PDF como HTML** mas sem os dados pesados de imagem. `HtmlSaveOptions` nos oferece controle granular, e a flag `SkipImages` indica ao Aspose que omita completamente as tags ``. + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**Por que você pode ignorar imagens:** Para portais de pré‑visualização ou designs mobile‑first, cada kilobyte conta. Remover imagens também evita questões de licenciamento se o PDF de origem contiver gráficos protegidos por direitos autorais. + +--- + +## Etapa 3: Exportar o PDF como um Arquivo HTML Sem Imagens + +Agora realmente gravamos o arquivo HTML. O método `Save` respeita as opções que definimos acima. + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**Resultado que você verá:** Um arquivo `.html` contendo o conteúdo textual, tabelas e gráficos vetoriais (se houver), mas sem tags ``. Abra‑o em um navegador e você deverá ver uma renderização limpa, sem imagens, do PDF original. + +--- + +## Etapa 4: Preparar um Verificador de Assinatura para o Mesmo Documento + +A classe `PdfFileSignature` do Aspose.PDF nos permite inspecionar assinaturas digitais incorporadas no PDF. Criaremos uma instância que aponta para o mesmo `Document` que já carregamos. + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**Observação sobre o gerenciamento de recursos:** A instrução `using` garante que o verificador libere quaisquer handles nativos assim que terminarmos, evitando problemas de bloqueio de arquivos no Windows. + +--- + +## Etapa 5: Verificar a Assinatura Nomeada “Sig1” Usando SHA‑3‑256 + +A maioria dos PDFs usa SHA‑256 ou SHA‑1, mas o Aspose também suporta a família mais recente SHA‑3. Aqui solicitamos explicitamente `Sha3_256`. Se a assinatura estiver ausente ou o algoritmo não corresponder, o método retorna `false`. + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**O que “false” pode significar:** + +1. **Assinatura não encontrada** – talvez o PDF use um nome diferente; liste as assinaturas com `signatureVerifier.GetSignatureNames()`. +2. **Incompatibilidade de algoritmo** – o PDF pode ter sido assinado com SHA‑256; tente `DigestHashAlgorithm.Sha256`. +3. **Documento alterado** – qualquer alteração após a assinatura invalida o hash, resultando em `false`. + +--- + +## Lidando com Casos de Borda Comuns + +### PDFs Grandes + +Se o seu PDF de origem exceder algumas centenas de megabytes, considere habilitar o **modo de economia de memória**: + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +Isso transmite as páginas sob demanda, reduzindo a pressão sobre a RAM. + +### Assinatura Ausente + +Quando você não tem certeza do nome da assinatura, enumere‑as: + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +Escolha o nome correto da lista antes de chamar `VerifySignature`. + +### Compatibilidade com Navegadores + +Alguns navegadores têm dificuldades com HTML que contém o CSS padrão da Aspose. Definir `htmlSaveOptions.EmbedCss = true` (conforme mostrado anteriormente) incorpora os estilos, tornando o arquivo mais portátil. + +--- + +## Exemplo Completo Funcional + +Abaixo está o programa completo, pronto para copiar e colar, que inclui todas as etapas, tratamento de erros e diagnósticos opcionais. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Saída esperada no console** (os caminhos podem variar): + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +Se a assinatura for inválida, a última linha exibirá `Signature valid: False`. + +--- + +## Perguntas Frequentes + +**P: Posso converter PDF para HTML *com* imagens?** +R: Absolutamente. Basta definir `SkipImages = false` (ou omitir a propriedade). O Aspose incorporará cada imagem como um arquivo separado em uma subpasta ao lado do HTML. + +**P: Isso funciona no Linux?** +R: Sim. Aspose.PDF é multiplataforma; apenas certifique-se de que os caminhos `YOUR_DIRECTORY` usem barras normais ou `Path.Combine`. + +**P: E se eu precisar validar uma assinatura digital de PDF com um certificado personalizado?** +R: Use a sobrecarga `PdfFileSignature.ValidateSignature` que aceita um objeto `X509Certificate2`. Esse método também retornará um `SignatureInfo` detalhado que você pode inspecionar. + +**P: O `aspose convert pdf` está limitado ao C#?** +R: Não. A mesma API existe para Java, Python e outras linguagens .NET. Os conceitos—carregar, definir opções, salvar, verificar—permanecem os mesmos. + +--- + +## Conclusão + +Agora você sabe exatamente como **salvar PDF como HTML** usando Aspose.PDF, remover imagens desnecessárias e **verificar a assinatura do PDF** em um único programa C# simplificado. O processo é direto: carregar, configurar, exportar e validar. Com os diagnósticos opcionais e o tratamento de casos extremos cobertos, você pode adaptar esse padrão para trabalhos em lote, serviços web ou utilitários de desktop. + +Pronto para o próximo passo? Experimente **converter PDF para HTML** preservando as imagens, ou teste diferentes algoritmos de hash para **validar a assinatura digital do PDF** contra sua própria PKI. Você também pode explorar a conversão de PDF para DOCX da Aspose ou mesclar vários PDFs antes da exportação—cada um é uma extensão natural do fluxo de trabalho que acabamos de construir. + +Feliz codificação, e que suas pré‑visualizações HTML permaneçam leves e suas assinaturas, confiáveis! + +![save pdf as html example](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/portuguese/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..57f3f18a5 --- /dev/null +++ b/pdf/portuguese/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,236 @@ +--- +category: general +date: 2026-03-29 +description: Salvar PDF como HTML usando C# e Aspose.PDF. Aprenda como inserir página + em PDF, adicionar página em branco ao PDF e criar assinatura PKCS7 destacada em + um único fluxo. +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: pt +og_description: Salve PDF como HTML em C# com Aspose.PDF. Este guia mostra como carregar + PDF, inserir página, adicionar página em branco, assinar com PKCS7 e exportar para + HTML. +og_title: Salvar PDF como HTML com C# – Tutorial Completo de Programação +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: Salvar PDF como HTML com C# – Guia Completo Passo a Passo +url: /pt/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Salvar PDF como HTML com C# – Guia Completo Passo a Passo + +Já precisou **salvar PDF como HTML** mas não sabia como manter o layout intacto enquanto ajustava o documento de origem? Você não está sozinho — desenvolvedores frequentemente lidam com correções de paginação, páginas em branco e assinaturas digitais antes da conversão. Neste tutorial percorreremos um fluxo de trabalho único e coeso que faz exatamente isso, e ainda mostraremos como **inserir página no PDF**, **adicionar página PDF em branco** e **criar assinatura PKCS7 destacada** ao longo do caminho. + +Ao final deste guia você terá um programa C# pronto‑para‑executar que carrega um PDF existente, remodela suas páginas, assina a primeira página e, finalmente, exporta tudo para HTML com prioridade de Unicode CMap. Sem referências pendentes, apenas uma solução autônoma que você pode inserir em qualquer projeto .NET. + +## O que você precisará + +- **Aspose.PDF for .NET** (última versão, 23.x no momento da escrita). +- **.NET 6.0** ou superior – o código também compila com .NET Framework 4.7, mas .NET 6 oferece o melhor desempenho. +- Um **arquivo de certificado** (`.pfx`) e sua senha para a assinatura PKCS7. +- Um PDF de entrada (`input.pdf`) que você deseja manipular. + +Se você já tem esses itens, podemos ir direto ao código. Caso contrário, obtenha uma avaliação gratuita de 30 dias da Aspose no site oficial; a API é idêntica à versão paga. + +## Etapa 1 – Carregar Documento PDF em C# (Ação Principal) + +A primeira coisa a fazer é trazer o PDF para a memória. A classe `Document` da Aspose realiza todo o trabalho pesado. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*Por que isso importa:* Carregar o arquivo fornece um modelo de objeto mutável. A partir daí você pode **inserir página no PDF**, adicionar páginas em branco ou aplicar assinaturas sem tocar no arquivo original no disco. + +## Etapa 2 – Inserir uma Página e Adicionar uma Página PDF em Branco + +Às vezes o PDF de origem tem artefatos de paginação — talvez uma página ausente ou duplicada. Abaixo copiamos a página 2 logo após a página 1 e, em seguida, adicionamos uma página totalmente em branco ao final. + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*Dica profissional:* `UpdatePagination()` recalcula os números de página que aparecem em rodapés ou cabeçalhos gerados pela Aspose. Pular esta etapa pode deixar números desatualizados no HTML final. + +## Etapa 3 – Criar uma Assinatura PKCS7 Destacada (SHA‑512) + +Uma assinatura PKCS7 destacada comprova a integridade do documento sem incorporar os dados da assinatura diretamente ao fluxo de conteúdo do PDF. Usaremos um certificado armazenado em um arquivo PFX. + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*Por que SHA‑512?* Ele oferece um hash mais forte que o SHA‑256, ainda sendo amplamente suportado. Se precisar de conformidade com padrões mais antigos, troque `Sha512` por `Sha256`. + +## Etapa 4 – Aplicar a Assinatura Digital na Página 1 com um Retângulo Visível + +Colocaremos um campo de assinatura visível na primeira página. O retângulo define onde a imagem da assinatura (ou placeholder) aparece. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*Caso extremo:* Se a página de destino já contém um campo de formulário com o mesmo nome, a API lançará uma exceção. Garanta nomes de campo únicos ou limpe os campos existentes antes de assinar. + +## Etapa 5 – Configurar Opções de Salvamento HTML para Priorizar Unicode CMap + +Ao converter para HTML, a Aspose pode incorporar fontes como base‑64, usar subconjuntos ou depender de Unicode CMaps. Priorizar Unicode reduz o tamanho do arquivo e melhora a pesquisabilidade do texto. + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*O que isso faz?* Informa ao conversor para preferir Unicode CMaps em vez de incorporação de fontes personalizadas sempre que possível, o que é ideal para PDFs multilíngues. + +## Etapa 6 – Salvar o Documento Assinado como HTML + +Finalmente, grave o PDF processado como uma pasta HTML (a Aspose cria um diretório com arquivos de suporte como CSS e imagens). + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +Se você abrir `cmap.html` em um navegador, verá o layout original do PDF renderizado como HTML, completo com a imagem da assinatura visível na página 1. + +## Exemplo Completo Funcional (Todas as Etapas Combinadas) + +Abaixo está o programa completo que você pode copiar‑colar em um aplicativo de console. Ele inclui todas as diretivas `using` necessárias e tratamento de erros. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**Resultado esperado:** +- `cmap.html` (o arquivo HTML principal) +- pasta `cmap_files` contendo CSS, imagens e recursos de fontes. +- A primeira página mostra uma caixa de assinatura visível nas coordenadas que você definiu. + +## Perguntas Frequentes & Casos Limite + +| Pergunta | Resposta | +|----------|----------| +| *Posso usar um certificado auto‑assinado?* | Sim, Aspose.PDF aceita qualquer PFX válido. Apenas lembre-se de que os navegadores podem marcar a assinatura como não confiável. | +| *E se eu precisar assinar várias páginas?* | Crie chamadas separadas de `PdfFileSignature` para cada página, ou use um loop que atualiza `pageNumber`. | +| *Existe uma forma de incorporar a imagem da assinatura em vez de um retângulo?* | Forneça um objeto `SignatureAppearance` com um fluxo de imagem para `PdfFileSignature.Sign`. | +| *Meu PDF tem conteúdo criptografado — ainda posso converter?* | Descriptografe-o primeiro usando `pdfDoc.Decrypt("ownerPassword")`, então execute as etapas. | +| *O HTML manterá os hyperlinks do PDF original?* | Aspose preserva as anotações de link por padrão. Se você notar links ausentes, defina `htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;` | + +## Conclusão + +Acabamos de demonstrar como **salvar PDF como HTML** enquanto simultaneamente **inserimos página no PDF**, **adicionamos página PDF em branco** e **criamos assinatura PKCS7 destacada** — tudo usando C#. O fluxo de trabalho é linear, fácil de depurar e totalmente personalizável para projetos maiores. + +Em seguida, você pode querer explorar: + +- **Processamento em lote** – percorrer uma pasta de PDFs e converter cada um. +- **CSS personalizado** – ajustar `HtmlSaveOptions.CustomCss` para combinar com o estilo do seu site. +- **Assinaturas avançadas** – usar servidores de timestamp ou LTV (Validação de Longo Prazo) para assinaturas de nível de conformidade. + +Experimente essas opções e você terá um pipeline robusto de PDF‑para‑HTML que é amigável ao SEO e adequado para citações por assistentes de IA. Feliz codificação! + +![Diagrama mostrando PDF carregado, páginas inseridas, assinatura aplicada e saída HTML](/images/save-pdf-as-html-workflow.png "fluxo de trabalho salvar pdf como html") + +{{< /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 2a6e4f62c..6025d9832 100644 --- a/pdf/portuguese/net/digital-signatures/_index.md +++ b/pdf/portuguese/net/digital-signatures/_index.md @@ -23,6 +23,9 @@ Aprenda a implementar assinaturas digitais em PDFs usando o Aspose.PDF para .NET ### [Assine digitalmente um PDF com aparência personalizada usando Aspose.PDF para .NET: um guia passo a passo](./digitally-sign-pdf-custom-appearance-aspose-pdf-net/) Aprenda a assinar digitalmente um PDF com aparência personalizada usando o Aspose.PDF para .NET. Este guia aborda a configuração, a personalização e as aplicações práticas de assinaturas digitais em seus documentos. +### [Como assinar PDF e adicionar imagens – Guia completo em C#](./how-to-sign-pdf-and-add-images-complete-c-guide/) +Aprenda a assinar PDFs e inserir imagens usando Aspose.PDF para .NET com exemplos completos em C#. + ### [Extraia informações de assinatura digital de PDFs com Aspose.PDF](./extract-digital-signature-info-from-pdfs-aspose-pdf/) Um tutorial de código para Aspose.PDF Net @@ -58,6 +61,7 @@ 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. + ### [Carregar documento PDF C# – Converter para PDF/X‑4 e listar assinaturas](./load-pdf-document-c-convert-to-pdf-x-4-list-signatures/) Aprenda a carregar um PDF em C#, convertê‑lo para o padrão PDF/X‑4 e listar as assinaturas presentes. diff --git a/pdf/portuguese/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/portuguese/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..0afce83de --- /dev/null +++ b/pdf/portuguese/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-03-29 +description: Como assinar PDF com uma assinatura digital e adicionar uma imagem recortada + em C#. Aprenda a adicionar assinatura digital ao PDF, recortar imagem para PDF e + inserir imagem no PDF facilmente. +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: pt +og_description: Como assinar PDF com uma assinatura digital e incorporar uma imagem + recortada usando Aspose.Pdf em C#. Siga este guia para uma solução completa. +og_title: Como assinar PDF e adicionar imagens – Tutorial passo a passo em C# +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: Como assinar PDF e adicionar imagens – Guia completo de C# +url: /pt/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como Assinar PDF e Adicionar Imagens – Guia Completo em C# + +Já se perguntou **como assinar PDF** programaticamente enquanto também insere uma imagem personalizada? Talvez você esteja construindo um fluxo de aprovação e precise de uma assinatura legalmente vinculante *e* uma miniatura da foto do assinante na mesma página. Em resumo, você quer **adicionar assinatura digital pdf** ao conteúdo, recortar essa imagem e então **adicionar imagem ao pdf** sem esforço. + +Este tutorial guia você por cada passo — desde o carregamento de um certificado ECDSA PKCS#7 até o recorte de um JPEG e sua inserção na página assinada. Ao final, você terá um único arquivo C# executável que assina a página 1, recorta uma foto para 400 × 400 px e a posiciona em um local preciso. Sem scripts externos, sem mágica, apenas código claro e explicações. + +## Pré-requisitos + +- .NET 6.0 ou superior (o código também funciona com .NET Framework 4.7+) +- **Aspose.Pdf for .NET** pacote NuGet (versão 23.9 ou mais recente) +- Um certificado ECDSA P‑256 em formato PKCS#7 (`.pfx`) e sua senha +- Uma imagem JPEG que você deseja incorporar (ex.: `photo.jpg`) + +> **Dica profissional:** Mantenha seu arquivo de certificado fora do controle de versão e proteja a senha com um gerenciador de segredos. + +--- + +## Etapa 1: Configurar o Projeto e as Importações + +Primeiro, crie um aplicativo console (ou integre isso a qualquer serviço existente). Adicione a referência ao Aspose.Pdf: + +```bash +dotnet add package Aspose.Pdf +``` + +Em seguida, inclua os namespaces necessários: + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +Essas declarações `using` dão acesso às classes `Document`, `Signature` e `Rectangle` que usaremos mais adiante. + +## Etapa 2: Carregar o PDF e Preparar a Assinatura + +Vamos abrir um PDF existente (`source.pdf`) e criar um objeto **digital signature pdf** que usa uma assinatura PKCS#7 destacada. O certificado é uma chave ECDSA P‑256, amplamente aceita para conformidade. + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**Por que isso importa:** Usar uma assinatura PKCS#7 destacada mantém o conteúdo original do PDF intacto enquanto incorpora um hash criptográfico. Essa é a abordagem padrão da indústria para PDFs legalmente vinculantes. + +## Etapa 3: Aplicar a Assinatura Digital em uma Página Específica + +Agora vamos posicionar o campo de assinatura visível na **página 1**. O retângulo define onde a caixa de assinatura aparece (as coordenadas são em pontos, onde 1 polegada = 72 pontos). + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +Se você não precisar de uma caixa visível, defina `isVisible` como `false`. O `signatureRect` pode ser ajustado para corresponder ao layout do seu documento. + +## Etapa 4: Abrir o Stream da Imagem e Definir Áreas de Recorte + +Vamos ler o arquivo JPEG em um stream e especificar um **source rectangle** que seleciona os 400 × 400 pixels superiores‑esquerdos. Esta é a operação **crop image for pdf**. + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **Caso de borda:** Se sua imagem for menor que 400 × 400, o recorte será automaticamente limitado às dimensões reais da imagem — nenhuma exceção será lançada. + +## Etapa 5: Definir Onde a Imagem Recortada Deve Aparecer + +Em seguida, defina o **destination rectangle** na página do PDF. Neste exemplo colocamos a imagem em (50, 50) com tamanho de 200 × 200 points (≈2,78 polegadas quadradas). + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +Sinta‑se à vontade para experimentar: altere as coordenadas X/Y para mover a foto ou ajuste largura/altura para redimensionamento. + +## Etapa 6: Inserir a Imagem Recortada na Página Assinada + +Por fim, adicionamos a imagem à **página 1** (a mesma página que agora contém a assinatura). A sobrecarga `AddImage` que usamos aceita os retângulos de origem e destino, realizando efetivamente o recorte e o posicionamento em uma única chamada. + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +Nos bastidores, o Aspose.Pdf extrai a região de 400 × 400 pixels, redimensiona para 200 × 200 points e a grava no fluxo de conteúdo do PDF. + +## Etapa 7: Salvar o PDF Assinado e com Imagem Aprimorada + +Depois de todas as modificações, persista o documento. Você pode sobrescrever o original ou gravar em um novo arquivo. + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +Ao abrir `output_signed.pdf` no Adobe Acrobat ou em qualquer visualizador de PDF, você verá: + +- Um campo de assinatura visível nas coordenadas especificadas. +- A foto recortada posicionada em (50, 50) na página 1. +- A assinatura digital validada (desde que o visualizador confie no seu certificado). + +--- + +## Perguntas Frequentes (FAQ) + +| Pergunta | Resposta | +|----------|----------| +| **Posso assinar uma página diferente?** | Altere o argumento `pageNumber` em `signature.Sign` para qualquer índice de página válido (baseado em 1). | +| **E se eu precisar de múltiplas assinaturas?** | Crie uma nova instância `Signature` para cada página ou local, reutilizando o mesmo `pkcsSignature` se o mesmo certificado for aplicável. | +| **O recorte de imagem está limitado a retângulos?** | Sim, o `AddImage` do Aspose.Pdf funciona com regiões retangulares. Para formas complexas, você precisará pré‑processar a imagem (ex.: usando System.Drawing) antes de incorporá‑la. | +| **Como tornar a assinatura invisível?** | Defina `isVisible` como `false` e omita o `signatureRect`. A assinatura ainda será criptograficamente válida. | +| **Quais formatos posso incorporar além de JPEG?** | PNG, BMP, GIF e TIFF são todos suportados. Basta mudar o caminho do arquivo e garantir que o stream leia os bytes corretos. | + +## Exemplo Completo em Funcionamento + +Abaixo está o programa completo e autocontido. Copie‑e‑cole em `Program.cs`, ajuste os caminhos e execute. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**Resultado esperado:** Ao abrir `output_signed.pdf` você verá um campo de assinatura (100 × 100 → 300 × 300 points) e uma imagem de 200 × 200 points derivada do canto superior‑esquerdo de `photo.jpg`. A assinatura valida contra o certificado ECDSA fornecido. + +## Conclusão + +Cobremos **como assinar PDF** files, como **add digital signature pdf** a uma página específica, como **crop image for pdf**, e finalmente como **add image to pdf** usando Aspose.Pdf em C#. Todo o fluxo — do carregamento do certificado à gravação do documento final — cabe em um único arquivo fonte fácil de ler. + +Se você está pronto para o próximo desafio, considere: + +- Adicionar **multiple signatures** em páginas diferentes (use o conceito “digital signature pdf page”). +- Incorporar **QR codes** que apontem para serviços de verificação. +- Automatizar o processo em uma API ASP.NET Core para geração de PDF on‑the‑fly. + +Lembre‑se, a chave para uma automação robusta de PDFs é a separação clara de responsabilidades: manipulação de assinatura, processamento de imagem e montagem final do documento. Brinque com as coordenadas, troque o formato da imagem ou experimente timestamping — seu fluxo de trabalho agora está totalmente extensível. + +Tem perguntas, cenários de borda ou um caso de uso interessante para compartilhar? Deixe um comentário abaixo e feliz 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-security-and-signatures/_index.md b/pdf/portuguese/net/programming-with-security-and-signatures/_index.md index bdab41d47..98d5f5158 100644 --- a/pdf/portuguese/net/programming-with-security-and-signatures/_index.md +++ b/pdf/portuguese/net/programming-with-security-and-signatures/_index.md @@ -34,7 +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 reparar arquivos PDF – Guia completo em C# com Aspose.Pdf](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | Aprenda a reparar arquivos PDF corrompidos usando Aspose.PDF para .NET em C#, passo a passo. | +| [Como reparar arquivos PDF – Guia completo em C# com Aspose.Pdf](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | Aprenda a reparar arquivos PDF corrompidos usando Aspose.PDF para .NET em C#, passo a passo. | +| [Validar assinatura digital de PDF – Guia completo em C#](./validate-pdf-digital-signature-complete-c-guide/) | Aprenda a validar assinaturas digitais em PDFs usando C# e Aspose.PDF, passo a passo, garantindo a integridade dos documentos. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/portuguese/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/portuguese/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..049ce4268 --- /dev/null +++ b/pdf/portuguese/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,262 @@ +--- +category: general +date: 2026-03-29 +description: Valide rapidamente a assinatura digital de PDF. Aprenda como verificar + a assinatura de PDF, checar o status da assinatura de PDF e detectar PDFs adulterados + com Aspose.Pdf em C#. +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: pt +og_description: Validar assinatura digital de PDF em C#. Este tutorial mostra como + verificar a assinatura de PDF, checar a integridade da assinatura e detectar PDFs + adulterados usando Aspose.Pdf. +og_title: Validar Assinatura Digital de PDF – Guia Completo em C# +tags: +- C# +- Aspose.Pdf +- PDF Security +title: Validar Assinatura Digital de PDF – Guia Completo em C# +url: /pt/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Validate PDF Digital Signature – Complete C# Guide + +Já se perguntou **como verificar uma assinatura de PDF** sem perder a cabeça? Talvez você tenha recebido um contrato, aberto e precise ter 100 % de certeza de que ele não foi alterado. A boa notícia é que você não precisa de um laboratório forense — apenas algumas linhas de C# e Aspose.Pdf podem **validar assinatura digital de PDF** em um instante. + +Neste tutorial vamos percorrer tudo o que você precisa saber: desde a instalação da biblioteca até a interpretação do resultado, e até como lidar com casos especiais como múltiplas assinaturas ou um arquivo corrompido. Ao final, você será capaz de **verificar assinatura de PDF** programaticamente e **detectar PDF adulterado** antes que cause problemas. + +## O que você vai precisar + +- **.NET 6.0 ou superior** (o código também funciona no .NET Framework, mas o .NET 6 é o ponto ideal). +- **Aspose.Pdf for .NET** – você pode obtê‑lo via NuGet (`Install-Package Aspose.Pdf`). +- Um **PDF assinado** que você queira testar. Se não tiver um, crie um documento simples assinado com o Adobe Acrobat ou qualquer outro assinador de PDF. + +> Dica de especialista: mantenha seus arquivos PDF fora da pasta raiz do projeto; um caminho relativo como `./Samples/signed.pdf` funciona bem e evita commits acidentais de arquivos confidenciais. + +## Implementação passo a passo + +A seguir dividimos a solução em blocos lógicos. Cada bloco tem seu próprio cabeçalho H2 — um deles contém a palavra‑chave principal, atendendo à regra de SEO. + +### ## Passo 1 – Instalar e Referenciar Aspose.Pdf + +Primeiro, adicione o pacote NuGet ao seu projeto: + +```powershell +dotnet add package Aspose.Pdf +``` + +Ou, se estiver usando o Package Manager Console: + +```powershell +Install-Package Aspose.Pdf +``` + +Depois que o pacote for instalado, o Visual Studio adicionará automaticamente o namespace `using Aspose.Pdf;`. Não é necessário lidar com DLLs manualmente. + +### ## Passo 2 – Carregar o Documento PDF Assinado + +Agora realmente abrimos o arquivo. A instrução `using` garante que o documento seja descartado corretamente, o que é especialmente importante para PDFs grandes. + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +> **Por que isso importa:** Carregar o documento nos dá acesso ao objeto `DigitalSignatureInfo`, ponto de entrada para todas as consultas relacionadas à assinatura. + +### ## Passo 3 – Recuperar Informações da Assinatura Digital + +Aspose.Pdf encapsula os detalhes de PKI de baixo nível em uma API amigável. Obtenha a propriedade `DigitalSignatureInfo` e você terá tudo que precisa para **verificar a saúde da assinatura de PDF**. + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +Se o PDF contiver múltiplas assinaturas, `signatureInfo` as agrega, expondo propriedades como `Count`, `Certificates` e `IsCompromised`. Para um arquivo com assinatura única, essas coleções terão apenas um item. + +### ## Passo 4 – Determinar se a Assinatura está Comprometida + +A bandeira `IsCompromised` indica se o documento foi alterado **depois** de assinado. Um valor `true` significa que o PDF foi adulterado — exatamente o que queremos para **detectar PDF adulterado**. + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +Se precisar **verificar assinatura de PDF** de forma mais aprofundada (por exemplo, validação da cadeia de certificados), você também pode examinar `signatureInfo.Certificates` e chamar `Validate()` em cada um. Para a maioria dos casos, `IsCompromised` é suficiente. + +### ## Passo 5 – Exibir o Resultado no Console + +Por fim, informe ao usuário o que aconteceu. Vamos imprimir uma mensagem amigável e também retornar um código de saída adequado para scripts de automação. + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### Saída esperada + +``` +Signature compromised: False +``` + +Se você adulterar deliberadamente o PDF (por exemplo, inserir um caractere extra), a saída mudará para `True`. Esse é o momento em que você sabe que a integridade do documento foi quebrada. + +### ## Tratamento de Casos Limite e Armadilhas Comuns + +#### 1. Múltiplas Assinaturas + +Quando um PDF tem mais de um assinante, `IsCompromised` reflete o estado *geral* — se **qualquer** assinatura estiver quebrada, a bandeira se torna `true`. Para identificar qual assinante está em falta: + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. Assinatura Ausente + +Se o PDF não estiver assinado, `signatureInfo.Count` será `0`. Você deve proteger contra uma sensação falsa de segurança: + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. Arquivo PDF Corrompido + +Um arquivo corrompido lança uma `PdfException`. Envolva a lógica de carregamento em um try‑catch para fornecer uma mensagem de erro limpa: + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. Validação de Certificado (Avançado) + +Se precisar garantir que o certificado de assinatura ainda seja válido (não revogado, dentro do período de validade), você pode chamar: + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +Esta etapa eleva você de um simples **check PDF signature** para um fluxo completo de **how to verify PDF signature**. + +### ## Exemplo Completo em Funcionamento + +Juntando tudo, aqui está o programa completo, pronto para ser executado: + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +Execute o programa a partir da linha de comando: + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +Você deverá ver um relatório claro indicando se o PDF está intacto, quais assinantes estão envolvidos e se seus certificados ainda são confiáveis. + +## Visão Geral Visual + +Abaixo está um diagrama rápido ilustrando o fluxo desde o **carregamento do PDF** até a **exibição do resultado da validação**. É uma referência útil ao esboçar a arquitetura de um pipeline maior de processamento de documentos. + +![validate pdf digital signature workflow diagram](image.png "Diagrama mostrando carregamento de PDF → DigitalSignatureInfo → Verificação de IsCompromised") + +*Alt text: diagrama de fluxo de validação de assinatura digital de PDF* + +## Conclusão + +Acabamos de cobrir uma **solução completa, ponta a ponta, para validar assinatura digital de PDF** usando Aspose.Pdf em C#. Os principais pontos: + +- Carregue o PDF com `Document`. +- Recupere `DigitalSignatureInfo` e verifique `IsCompromised` para **detectar PDF adulterado**. +- Trate assinaturas múltiplas, assinaturas ausentes e arquivos corrompidos de forma elegante. +- Opcionalmente valide o certificado de assinatura para um checklist completo de **how to verify PDF signature**. + +A partir daqui você pode expandir a lógica — armazenar resultados de validação em um banco de dados, rejeitar uploads não assinados em uma API web, ou integrar com um sistema de gerenciamento de documentos. Se estiver curioso sobre outros recursos de segurança de PDF, explore **verificar timestamps de assinatura de PDF**, **adicionar uma nova assinatura**, ou **criptografar PDFs**. + +Tem dúvidas sobre casos limites, ou quer ver como **verificar assinatura de PDF** com outra biblioteca como iText 7? Deixe um comentário abaixo e vamos continuar a conversa. Feliz 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/russian/net/conversion-export/_index.md b/pdf/russian/net/conversion-export/_index.md index cef572e3c..77825ee5e 100644 --- a/pdf/russian/net/conversion-export/_index.md +++ b/pdf/russian/net/conversion-export/_index.md @@ -51,7 +51,7 @@ Учебник по коду для Aspose.PDF Net ### [Конвертируйте PDF-страницы в PNG с помощью Aspose.PDF .NET: подробное руководство](./convert-pdf-pages-to-png-aspose-net/) -Узнайте, как преобразовать страницы PDF в высококачественные изображения PNG с помощью Aspose.PDF для .NET. Следуйте этому пошаговому руководству, чтобы эффективно автоматизировать процесс преобразования. +Узнайте, как преобразовать страницы PDF в высококачественные изображения PNG с помощью Aspose.PDF для .NET. Следуйте этому подробному руководству, чтобы эффективно автоматизировать процесс преобразования. ### [Конвертируйте PDF в BMP с помощью Aspose.PDF для .NET: пошаговое руководство](./convert-pdf-to-bmp-aspose-pdf-net/) Узнайте, как преобразовать страницы PDF в высококачественные изображения BMP с помощью Aspose.PDF для .NET с помощью этого подробного руководства. @@ -104,6 +104,9 @@ ### [Конвертируйте PDF/A в стандартный PDF с помощью Aspose.PDF .NET: подробное руководство](./convert-pdf-a-standard-pdf-aspose-net/) Узнайте, как легко преобразовать документы PDF/A в стандартные PDF-файлы с помощью Aspose.PDF для .NET с помощью этого пошагового руководства. +### [Конвертировать PDF в PDF/X-1a, экспортировать страницу PNG и добавить текстовый штамп](./convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/) +Преобразуйте PDF в стандарт PDF/X-1a, экспортируйте страницу в PNG и наложите текстовый штамп. + ### [Конвертируйте PDF-файлы в интерактивный HTML с пользовательским CSS с помощью Aspose.PDF .NET](./convert-pdfs-to-html-custom-css-aspose-pdf-net/) Узнайте, как преобразовывать PDF-документы в интерактивные, удобные для веб-пространства форматы HTML с помощью Aspose.PDF .NET, дополненные пользовательскими стилями CSS. @@ -141,7 +144,7 @@ Узнайте, как эффективно экспортировать данные из приложений в PDF с помощью Aspose.PDF для .NET. В этом руководстве рассматриваются настройка, примеры кода на C# и основные функции. ### [Экспорт аннотаций PDF с помощью Aspose.PDF .NET: подробное руководство](./export-annotations-aspose-pdf-net/) -Узнайте, как эффективно экспортировать аннотации из PDF-файлов с помощью Aspose.PDF для .NET. Это руководство охватывает настройку, реализацию и лучшие практики. +Узнайте, как эффективно экспортировать аннотации из PDF-файлов с помощью Aspose.PDF .NET. Это руководство охватывает настройку, реализацию и лучшие практики. ### [Экспорт данных PDF в XML с помощью Aspose.PDF для .NET: пошаговое руководство](./export-pdf-data-to-xml-aspose-dotnet-guide/) Узнайте, как эффективно экспортировать данные PDF-форм в структурированный XML с помощью Aspose.PDF для .NET — мощной библиотеки, предназначенной для работы с PDF-файлами. @@ -152,6 +155,9 @@ ### [Как добавить HTML-контент в PDF-файлы с помощью Aspose.PDF .NET: полное руководство](./add-html-pdf-aspose-dotnet-guide/) Узнайте, как легко добавлять HTML-контент в документы PDF с помощью Aspose.PDF .NET. Это руководство охватывает настройку, реализацию и практические приложения для динамической генерации документов. +### [Как добавить HTML-контент в PDF-файлы с помощью Aspose.PDF .NET: полное руководство](./add-html-pdf-aspose-dotnet-guide/) +Узнайте, как легко добавлять HTML-контент в документы PDF с помощью Aspose.PDF .NET. Это руководство охватывает настройку, реализацию и практические приложения для динамической генерации документов. + ### [Как конвертировать файлы CGM в PDF с помощью Aspose.PDF для .NET](./aspose-pdf-net-cgm-to-pdf-conversion/) Узнайте, как легко преобразовать файлы Computer Graphics Metafile (CGM) в PDF с помощью Aspose.PDF для .NET. Это руководство охватывает настройку, преобразование и интеграцию для приложений .NET. @@ -224,8 +230,11 @@ ### [Преобразование PDF в HTML с помощью Aspose.PDF для .NET](./pdf-to-html-conversion-aspose-dot-net/) Учебник по коду для Aspose.PDF Net -### [Преобразование PDF в TIFF в .NET с использованием Aspose.PDF: пошаговое руководство](./pdf-to-tiff-conversion-aspose-pdf-net/) -Узнайте, как преобразовывать документы PDF в изображения TIFF с помощью Aspose.PDF для .NET. Освойте пользовательские глубины цвета и передовые методы обработки изображений. +### [Сохранить PDF как HTML с Aspose – Полное руководство на C#](./save-pdf-as-html-with-aspose-complete-c-guide/) +Подробное руководство по сохранению PDF в HTML с помощью Aspose.PDF для .NET на C#, включая настройку параметров и примеры кода. + +### [Сохранить PDF как HTML с C# – Полное пошаговое руководство](./save-pdf-as-html-with-c-complete-step-by-step-guide/) +Подробное руководство по сохранению PDF в HTML с помощью C#, охватывающее настройки, параметры и примеры кода. ## Дополнительные ресурсы diff --git a/pdf/russian/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/russian/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..98196e87a --- /dev/null +++ b/pdf/russian/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,244 @@ +--- +category: general +date: 2026-03-29 +description: Конвертировать PDF в PDF/X‑1a и экспортировать страницу PDF в PNG в одном + потоке — также узнать, как добавить текстовый штамп в PDF с помощью Aspose.Pdf (C#). +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: ru +og_description: Конвертировать PDF в PDF/X‑1a и экспортировать страницу PDF в PNG, + добавляя текстовый штамп PDF — полное руководство по C# с Aspose.Pdf. +og_title: конвертировать pdf в pdf/x-1a, экспортировать страницу в png и добавить + текстовый штамп +tags: +- Aspose.Pdf +- C# +- PDF processing +title: Конвертировать PDF в PDF/X-1a, экспортировать страницу в PNG и добавить текстовый + штамп +url: /ru/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# конвертировать pdf в pdf/x-1a, экспортировать страницу png и добавить текстовый штамп – Полное руководство C# + +Когда‑то вам **нужно было конвертировать pdf в pdf/x-1a**, но при этом захотелось быстро получить PNG‑превью первой страницы и добавить пользовательский текстовый штамп в тот же документ? Вы не одиноки. Во многих производственных конвейерах — например, при подготовке к печати или автоматической генерации отчётов — часто встречается именно такая комбинация требований. + +В этом уроке мы пройдём сквозной рабочий процесс, который последовательно делает три вещи: **конвертировать pdf в pdf/x-1a**, **экспортировать страницу pdf в png** и **добавить текстовый штамп в pdf**. Код использует библиотеку Aspose.Pdf для .NET, поэтому вы получаете профессиональное решение без необходимости вникать в низкоуровневую структуру PDF. К концу вы получите готовую программу на C#, которую можно вставить в любой консольный проект, Azure Function или шаг CI. + +> **Что вы получите** — полный исходный файл, пошаговые объяснения, советы по типичным подводным камням и быстрый способ проверить результат. + +## Требования + +- .NET 6.0 или новее (API также работает с .NET Framework 4.x). +- NuGet‑пакет Aspose.Pdf for .NET (`Aspose.Pdf`) — версия 23.10 актуальна на момент написания. +- Входной PDF (`input.pdf`) и файл ICC‑профиля (`Coated_Fogra39L_VIGC_300.icc`), размещённые в папке, которой вы управляете. +- Базовые знания C# и Visual Studio (или любой другой IDE). + +Если что‑то из перечисленного вам незнакомо, просто установите NuGet‑пакет командой: + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +А теперь приступим. + +## Шаг 1: Загрузка исходного PDF‑документа + +Первым делом открываем PDF, с которым будем работать. Класс `Document` из Aspose.Pdf представляет весь файл и загружает содержимое «лениво», поэтому вы не платите за производительность, пока не начнёте обращаться к страницам. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*Почему это важно*: ранняя загрузка документа даёт один объект, который можно передавать дальше для конвертации, рендеринга и штамповки. Если пропустить явную загрузку и попытаться работать с несуществующим файлом, позже вы получите непонятное `FileNotFoundException`. + +## Шаг 2: Конвертация документа в PDF/X‑1a с пользовательским ICC‑профилем + +PDF/X‑1a — де‑факто стандарт для готовых к печати PDF‑файлов. На этапе конвертации также можно внедрить **Output Intent** (ICC‑профиль), чтобы последующие RIP‑системы точно знали, как интерпретировать цвета. + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*Совет профи*: если нужен более строгий контроль ошибок, замените `ConvertErrorAction.Delete` на `ConvertErrorAction.Throw`. Тогда конвертация прервётся при первой проблеме совместимости, что удобно для автоматических QA‑конвейеров. + +## Шаг 3: Экспорт первой страницы в PNG с анализом шрифтов + +PNG‑превью часто требуется для быстрой визуальной проверки или создания миниатюр. Включив `AnalyzeFonts`, Aspose гарантирует корректную растеризацию встроенных шрифтов, избегая неожиданного отсутствия глифов. + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +После выполнения вы найдёте `page1.png` рядом с исходными файлами. Откройте его в любом просмотрщике изображений, чтобы убедиться, что конверсия прошла правильно. + +## Шаг 4: Добавление текстового штампа с автоматической подгонкой размера шрифта + +**Текстовый штамп** — удобный способ добавить водяной знак или аннотацию в PDF без изменения основных потоков содержимого. Установка `AutoAdjustFontSizeToFitStampRectangle` заставит библиотеку уменьшать или увеличивать текст так, чтобы он никогда не выходил за пределы заданного прямоугольника. + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*Зачем авто‑размер?* Если позже вы измените текст штампа на более длинный (например, динамический тайм‑стамп), вам не придётся вручную пересчитывать размеры шрифта — штамп адаптируется «на лету». + +## Шаг 5: Сохранение обновлённого PDF‑документа + +Наконец, записываем всё обратно на диск. Можно перезаписать оригинальный файл или создать новый; в примере ниже создаётся `output.pdf`. + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +После завершения сохранения у вас будет: + +1. Файл, соответствующий **PDF/X‑1a** (`output.pdf`). +2. **PNG‑превью** первой страницы (`page1.png`). +3. **Текстовый штамп**, идеально вписанный в свой прямоугольник. + +### Быстрый чек‑лист проверки + +| ✅ Проверка | Как проверить | +|------------|----------------| +| Соответствие PDF/X‑1a | Откройте `output.pdf` в Adobe Acrobat → *Print Production* → *Preflight* и выберите “PDF/X‑1a:2001”. | +| PNG выглядит правильно | Откройте `page1.png` в Windows Photo Viewer или любом графическом редакторе. | +| Штамп отображается | Прокрутите `output.pdf` — текст “Auto‑size” должен быть по центру страницы 1. | + +![convert pdf to pdf/x-1a preview](image.png "convert pdf to pdf/x-1a preview showing stamped page") + +*Текст альтернативы изображения*: **convert pdf to pdf/x-1a preview with auto‑size text stamp** – демонстрирует окончательный PDF после всех шагов. + +## Распространённые варианты и граничные случаи + +- **Несколько страниц** — если нужно штамповать каждую страницу, пройдитесь в цикле по `pdfDoc.Pages` и вызывайте `AddStamp` внутри цикла. +- **Другой формат вывода** — замените `PdfFormat.PDF_X_1A` на `PdfFormat.PDF_A_1B` для архивных PDF. +- **PNG более высокого разрешения** — установите `Resolution = 600` в `RenderingOptions` для миниатюр печатного качества. +- **Свой шрифт для штампа** — присвойте `autoSizeStamp.Font = FontRepository.FindFont("Arial")` перед добавлением штампа. +- **Обработка ошибок** — оберните каждый крупный шаг в `try/catch` и логируйте `ConversionException` или `FileNotFoundException` для упрощения отладки. + +## Полный рабочий пример (готовый к копированию) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Setup paths + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Load the source document + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Convert to PDF/X‑1a (print‑ready) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Export first page as PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Add auto‑sizing text stamp (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/russian/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..8b3207d9d --- /dev/null +++ b/pdf/russian/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,270 @@ +--- +category: general +date: 2026-03-29 +description: Сохраните PDF в формате HTML с помощью Aspose.PDF на C#. Узнайте, как + конвертировать PDF в HTML, исключить изображения и проверить подпись PDF в одном + руководстве. +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: ru +og_description: Сохранить PDF как HTML с помощью Aspose.PDF в C#. Это руководство + показывает, как конвертировать PDF в HTML, пропускать изображения и проверять цифровую + подпись PDF. +og_title: Сохранить PDF в HTML с помощью Aspose – Полное руководство по C# +tags: +- Aspose.PDF +- C# +- PDF processing +title: Сохранить PDF в HTML с Aspose – полное руководство по C# +url: /ru/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Сохранить PDF как HTML с Aspose – Полное руководство на C# + +Когда‑то задавались вопросом, как **сохранить PDF как HTML** без включения каждой встроенной картинки? Возможно, вы создаёте лёгкий веб‑просмотр, а лишний объём изображений замедляет загрузку страницы. Хорошая новость: писать собственный парсер не требуется — Aspose.PDF выполнит всю тяжёлую работу за вас. В этом руководстве мы **конвертируем PDF в HTML**, уберём изображения и затем **проверим подпись PDF**, чтобы убедиться, что документ не был подделан. + +Мы пройдём по каждой строке кода, объясним *почему* каждое настройка важна и даже коснёмся крайних случаев, таких как большие PDF‑файлы или отсутствие подписи. К концу вы получите готовое к запуску консольное приложение на C#, которое генерирует чистый HTML‑файл и выдаёт чёткий результат true/false для цифровой подписи. + +## Что вы узнаете + +- Загрузить PDF‑файл с помощью Aspose.PDF. +- Использовать `HtmlSaveOptions` для **конвертации PDF в HTML** с пропуском изображений. +- Сохранить полученный HTML на диск. +- Настроить объект `PdfFileSignature` для **проверки подписи PDF**. +- Интерпретировать булевый результат и обрабатывать типичные подводные камни. +- Дополнительные советы по производительности и отладке. + +### Предварительные требования + +- .NET 6.0 или новее (код также работает на .NET Framework 4.7+). +- NuGet‑пакет Aspose.PDF for .NET (версия 23.12 или новее). +- Подписанный PDF (`input.pdf`) с подписью под именем «Sig1». +- Базовые знания C# и консольных приложений. + +> **Pro tip:** Если пакет Aspose.PDF ещё не установлен, выполните `dotnet add package Aspose.PDF` в папке проекта. + +--- + +## Шаг 1: Загрузка исходного PDF‑документа + +Прежде чем что‑то делать, нам нужна in‑memory репрезентация PDF. Класс `Document` из Aspose.PDF читает файл и строит дерево страниц, ресурсов и аннотаций. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**Почему это важно:** Загрузка документа один раз делает потребление памяти предсказуемым. Если планируете обрабатывать множество PDF в цикле, рассмотрите возможность повторного использования того же экземпляра `Document` после вызова `pdfDocument.Dispose()`. + +--- + +## Шаг 2: Настройка параметров сохранения HTML – пропустить изображения + +Мы хотим **сохранить PDF как HTML**, но без тяжёлых данных изображений. `HtmlSaveOptions` предоставляет детальный контроль, а флаг `SkipImages` указывает Aspose полностью опустить теги ``. + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**Зачем может понадобиться пропуск изображений:** Для порталов‑превью или мобильных дизайнов каждый килобайт имеет значение. Удаление изображений также избавляет от проблем с лицензированием, если исходный PDF содержит защищённые авторским правом графики. + +--- + +## Шаг 3: Экспорт PDF в HTML‑файл без изображений + +Теперь действительно записываем HTML‑файл. Метод `Save` учитывает параметры, указанные выше. + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**Что вы увидите:** Файл `.html`, содержащий только текстовое содержание, таблицы и векторную графику (если есть), но без тегов ``. Откройте его в браузере — вы получите чистое отображение оригинального PDF без изображений. + +--- + +## Шаг 4: Подготовка проверяющего подпись для того же документа + +Класс `PdfFileSignature` из Aspose.PDF позволяет проверять цифровые подписи, встроенные в PDF. Мы создадим экземпляр, указывающий на уже загруженный `Document`. + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**Примечание по управлению ресурсами:** Оператор `using` гарантирует, что проверяющий освобождает любые нативные дескрипторы после завершения работы, предотвращая блокировки файлов в Windows. + +--- + +## Шаг 5: Проверка подписи с именем «Sig1» с использованием SHA‑3‑256 + +Большинство PDF используют SHA‑256 или SHA‑1, но Aspose также поддерживает более новую семью SHA‑3. Здесь мы явно запрашиваем `Sha3_256`. Если подпись отсутствует или алгоритм не совпадает, метод вернёт `false`. + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Что может означать `false`:** + +1. **Подпись не найдена** — возможно, PDF использует другое имя; список подписей можно получить через `signatureVerifier.GetSignatureNames()`. +2. **Несоответствие алгоритма** — PDF мог быть подписан SHA‑256; попробуйте `DigestHashAlgorithm.Sha256`. +3. **Документ изменён** — любое изменение после подписи аннулирует хеш, что приводит к `false`. + +--- + +## Обработка типовых краевых случаев + +### Большие PDF + +Если ваш исходный PDF превышает несколько сотен мегабайт, включите **режим экономии памяти**: + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +Это будет потоково загружать страницы по мере необходимости, снижая нагрузку на ОЗУ. + +### Отсутствующая подпись + +Когда имя подписи неизвестно, перечислите их: + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +Выберите правильное имя из списка перед вызовом `VerifySignature`. + +### Совместимость с браузерами + +Некоторые браузеры плохо работают с HTML, содержащим CSS по умолчанию от Aspose. Установка `htmlSaveOptions.EmbedCss = true` (как показано выше) встраивает стили непосредственно в файл, делая его более переносимым. + +--- + +## Полный рабочий пример + +Ниже представлен полностью готовый к копированию и вставке код программы, включающий все шаги, обработку ошибок и необязательную диагностику. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Ожидаемый вывод в консоли** (пути будут другими): + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +Если подпись недействительна, последняя строка будет выглядеть так: `Signature valid: False`. + +--- + +## Часто задаваемые вопросы + +**В: Можно ли конвертировать PDF в HTML *с* изображениями?** +О: Конечно. Просто установите `SkipImages = false` (или опустите это свойство). Aspose разместит каждое изображение в отдельный файл в подпапке рядом с HTML. + +**В: Работает ли это на Linux?** +О: Да. Aspose.PDF кроссплатформенный; просто убедитесь, что пути `YOUR_DIRECTORY` используют прямые слэши или `Path.Combine`. + +**В: Как проверить цифровую подпись PDF с пользовательским сертификатом?** +О: Используйте перегрузку `PdfFileSignature.ValidateSignature`, принимающую объект `X509Certificate2`. Этот метод также возвращает подробный `SignatureInfo` для анализа. + +**В: Ограничен ли `aspose convert pdf` только C#?** +О: Нет. Тот же API доступен для Java, Python и других .NET‑языков. Концепции — загрузка, настройка, сохранение, проверка — остаются одинаковыми. + +--- + +## Заключение + +Теперь вы точно знаете, как **сохранить PDF как HTML** с помощью Aspose.PDF, удалить ненужные изображения и **проверить подпись PDF** в одном упрощённом C#‑приложении. Процесс прост: загрузить, настроить, экспортировать и валидировать. С учётом дополнительных диагностических возможностей и обработки краевых случаев вы сможете адаптировать эту схему для пакетных задач, веб‑служб или настольных утилит. + +Готовы к следующему шагу? Попробуйте **конвертировать PDF в HTML**, сохраняя изображения, или поэкспериментируйте с различными хеш‑алгоритмами для **валидации цифровой подписи PDF** в вашей инфраструктуре PKI. Вы также можете изучить конвертацию PDF в DOCX от Aspose или объединение нескольких PDF перед экспортом — каждый из этих вариантов естественно расширяет построенный нами рабочий процесс. + +Счастливого кодинга, и пусть ваши HTML‑превью остаются лёгкими, а подписи — надёжными! + +![save pdf as html example](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/russian/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..a53871abc --- /dev/null +++ b/pdf/russian/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-03-29 +description: Сохранить PDF как HTML с помощью C# и Aspose.PDF. Узнайте, как вставить + страницу в PDF, добавить пустую страницу PDF и создать откреплённую подпись PKCS7 + в одном процессе. +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: ru +og_description: Сохранить PDF как HTML в C# с помощью Aspose.PDF. В этом руководстве + показано, как загрузить PDF, вставить страницу, добавить пустую страницу, подписать + с помощью PKCS7 и экспортировать в HTML. +og_title: Сохранить PDF в HTML с помощью C# – Полный учебник по программированию +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: Сохранить PDF в HTML с помощью C# — Полное пошаговое руководство +url: /ru/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Сохранить PDF как HTML с C# – Полное пошаговое руководство + +Когда‑нибудь вам нужно было **save PDF as HTML**, но вы не знали, как сохранить макет неизменным и при этом подправить исходный документ? Вы не одиноки — разработчики часто сталкиваются с исправлением нумерации страниц, добавлением пустых страниц и цифровыми подписями перед конвертацией. В этом руководстве мы пройдем единый, связный рабочий процесс, который делает именно это, и также покажем, как **insert page into PDF**, **add blank PDF page** и **create PKCS7 detached signature**. + +К концу этого руководства у вас будет готовая к запуску программа на C#, которая загружает существующий PDF, изменяет его страницы, подписывает первую страницу и, наконец, экспортирует всё в HTML с приоритетом Unicode CMap. Никаких висячих ссылок, только автономное решение, которое можно добавить в любой проект .NET. + +## Что понадобится + +- **Aspose.PDF for .NET** (последняя версия, 23.x на момент написания). +- **.NET 6.0** или новее — код также компилируется с .NET Framework 4.7, но .NET 6 обеспечивает лучшую производительность. +- Файл **certificate file** (`.pfx`) и его пароль для подписи PKCS7. +- Входной PDF (`input.pdf`), который вы хотите обработать. + +Если у вас есть всё это, мы можем сразу перейти к коду. В противном случае получите бесплатную 30‑дневную пробную версию Aspose на официальном сайте; API идентичен платной версии. + +## Шаг 1 – Загрузка PDF‑документа в C# (основное действие) + +Первое, что нужно сделать, – загрузить PDF в память. Класс `Document` из Aspose выполняет всю тяжелую работу. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*Почему это важно:* Загрузка файла предоставляет изменяемую объектную модель. Отсюда вы можете **insert page into PDF**, добавить пустые страницы или применить подписи, не изменяя оригинальный файл на диске. + +## Шаг 2 – Вставка страницы и добавление пустой PDF‑страницы + +Иногда в исходном PDF появляются артефакты нумерации — возможно, отсутствует страница или она дублируется. Ниже мы копируем страницу 2 сразу после страницы 1, а затем добавляем полностью пустую страницу в конец. + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*Полезный совет:* `UpdatePagination()` пересчитывает номера страниц, которые отображаются в нижних/верхних колонтитулах, генерируемых Aspose. Пропуск этого шага может оставить устаревшие номера в итоговом HTML. + +## Шаг 3 – Создание откреплённой подписи PKCS7 (SHA‑512) + +Откреплённая подпись PKCS7 подтверждает целостность документа без встраивания данных подписи непосредственно в поток содержимого PDF. Мы будем использовать сертификат, хранящийся в файле PFX. + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*Почему SHA‑512?* Он обеспечивает более сильный хеш, чем SHA‑256, при этом остаётся широко поддерживаемым. Если требуется соответствие более старым стандартам, замените `Sha512` на `Sha256`. + +## Шаг 4 – Применение цифровой подписи к странице 1 с видимым прямоугольником + +Мы разместим видимое поле подписи на первой странице. Прямоугольник определяет, где будет отображаться изображение подписи (или его место). + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*Особый случай:* Если целевая страница уже содержит поле формы с тем же именем, API выбросит исключение. Обеспечьте уникальность имён полей или очистите существующие поля перед подписью. + +## Шаг 5 – Настройка параметров сохранения HTML с приоритетом Unicode CMap + +При конвертации в HTML Aspose может встраивать шрифты в виде base‑64, использовать подмножества или полагаться на Unicode CMap. Приоритет Unicode уменьшает размер файла и улучшает поиск текста. + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*Что это делает?* Это указывает конвертеру предпочитать Unicode CMap вместо встраивания пользовательских шрифтов, когда это возможно, что идеально подходит для многоязычных PDF. + +## Шаг 6 – Сохранение подписанного документа в HTML + +Наконец, сохраняем обработанный PDF в виде папки HTML (Aspose создаёт каталог с поддерживающими файлами, такими как CSS и изображения). + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +Если открыть `cmap.html` в браузере, вы увидите оригинальный макет PDF, отрисованный как HTML, с видимым изображением подписи на странице 1. + +## Полный рабочий пример (все шаги вместе) + +Ниже приведена полная программа, которую можно скопировать и вставить в консольное приложение. Она включает все необходимые директивы `using` и обработку ошибок. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**Ожидаемый результат:** +- `cmap.html` (основной HTML‑файл) +- папка `cmap_files` с CSS, изображениями и ресурсами шрифтов. +- Первая страница отображает видимый блок подписи в указанных координатах. + +## Часто задаваемые вопросы и особые случаи + +| Вопрос | Ответ | +|----------|--------| +| *Могу ли я использовать самоподписанный сертификат?* | Да, Aspose.PDF принимает любой действительный PFX. Просто имейте в виду, что браузеры могут пометить подпись как недоверенную. | +| *Что делать, если нужно подписать несколько страниц?* | Создайте отдельные вызовы `PdfFileSignature` для каждой страницы или используйте цикл, который обновляет `pageNumber`. | +| *Можно ли встроить изображение подписи вместо прямоугольника?* | Передайте объект `SignatureAppearance` с потоком изображения в `PdfFileSignature.Sign`. | +| *Мой PDF зашифрован — можно ли всё равно конвертировать?* | Сначала расшифруйте его, используя `pdfDoc.Decrypt("ownerPassword")`, затем выполните шаги. | +| *Сохранит ли HTML гиперссылки из оригинального PDF?* | Aspose сохраняет аннотации ссылок по умолчанию. Если ссылки отсутствуют, установите `htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;` | + +## Подведение итогов + +Мы только что продемонстрировали, как **save PDF as HTML**, одновременно **insert page into PDF**, **add blank PDF page** и **create PKCS7 detached signature** — всё с помощью C#. Рабочий процесс линейный, легко отлаживаемый и полностью настраиваемый для крупных проектов. + +Далее вы можете изучить: + +- **Batch processing** — перебор папки с PDF‑файлами и конвертация каждого. +- **Custom CSS** — настройте `HtmlSaveOptions.CustomCss` под стиль вашего сайта. +- **Advanced signatures** — используйте серверы меток времени или LTV (долгосрочная проверка) для подписи соответствующего уровня. + +Попробуйте их, и у вас будет надёжный конвейер PDF‑в‑HTML, который одновременно SEO‑дружелюбен и пригоден для цитирования в AI‑ассистентах. Счастливого кодинга! + +![Диаграмма, показывающая загрузку PDF, вставку страниц, применение подписи и вывод HTML](/images/save-pdf-as-html-workflow.png "workflow сохранения pdf как html") + +*Текст альтернативы изображения:* **save pdf as html workflow diagram** + +{{< /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 4550fdd12..e5fa8e445 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, следуя пошаговым инструкциям. @@ -53,6 +53,9 @@ ### [Проверка подписи PDF с Aspose – конвертация PDF в HTML](./validate-pdf-signature-with-aspose-convert-pdf-to-html/) Узнайте, как проверить подпись PDF и преобразовать документ в HTML с помощью Aspose.PDF для .NET. +### [Как подписать PDF и добавить изображения – Полное руководство на C#](./how-to-sign-pdf-and-add-images-complete-c-guide/) +Узнайте, как подписать PDF-файл и добавить изображения с помощью Aspose.PDF в C# шаг за шагом. + ## Дополнительные ресурсы - [Документация Aspose.PDF для сети](https://docs.aspose.com/pdf/net/) diff --git a/pdf/russian/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/russian/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..9842abb95 --- /dev/null +++ b/pdf/russian/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-03-29 +description: Как подписать PDF цифровой подписью и добавить обрезанное изображение + в C#. Узнайте, как добавить цифровую подпись в PDF, обрезать изображение для PDF + и легко вставить изображение в PDF. +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: ru +og_description: Как подписать PDF цифровой подписью и вставить обрезанное изображение + с помощью Aspose.Pdf в C#. Следуйте этому руководству для полного решения. +og_title: Как подписать PDF и добавить изображения – пошаговое руководство на C# +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: Как подписать PDF и добавить изображения – полное руководство по C# +url: /ru/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как подписать PDF и добавить изображения – Полное руководство на C# + +Когда‑нибудь задавались вопросом, **как подписать PDF** файлы программно, одновременно вставляя пользовательскую картинку? Возможно, вы создаёте процесс согласования и вам нужна юридически обязательная подпись *и* миниатюра фотографии подписанта на той же странице. Короче говоря, вы хотите **add digital signature pdf** контент, обрезать эту картинку и затем **add image to pdf** без усилий. + +Этот учебник проведёт вас через каждый шаг — от загрузки сертификата ECDSA PKCS#7 до обрезки JPEG и наложения его на подписанную страницу. К концу у вас будет один исполняемый файл C#, который подписывает страницу 1, обрезает фото до 400 × 400 px и размещает его в точном месте. Никаких внешних скриптов, никакой магии, только понятный код и объяснения. + +## Prerequisites + +- .NET 6.0 или новее (код также работает с .NET Framework 4.7+) +- **Aspose.Pdf for .NET** пакет NuGet (версия 23.9 или новее) +- Сертификат ECDSA P‑256 в формате PKCS#7 (`.pfx`) и его пароль +- JPEG‑изображение, которое вы хотите встроить (например, `photo.jpg`) + +> **Pro tip:** Держите файл сертификата вне системы контроля версий и защищайте пароль с помощью менеджера секретов. + +--- + +## Step 1: Set Up the Project and Imports + +Сначала создайте консольное приложение (или интегрируйте это в любой существующий сервис). Добавьте ссылку на Aspose.Pdf: + +```bash +dotnet add package Aspose.Pdf +``` + +Затем подключите необходимые пространства имён: + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +Эти `using`‑операторы дают вам доступ к классам `Document`, `Signature` и `Rectangle`, которые понадобятся позже. + +## Step 2: Load the PDF and Prepare the Signature + +Откроем существующий PDF (`source.pdf`) и создадим объект **digital signature pdf**, использующий отделённую подпись PKCS#7. Сертификат — ключ ECDSA P‑256, который широко принимается для соответствия требованиям. + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**Почему это важно:** Использование отделённой подписи PKCS#7 сохраняет оригинальное содержимое PDF, одновременно встраивая криптографический хеш. Это отраслевой стандарт для юридически обязательных PDF‑файлов. + +## Step 3: Apply the Digital Signature to a Specific Page + +Теперь разместим видимое поле подписи на **странице 1**. Прямоугольник определяет, где появится коробка подписи (координаты указаны в пунктах, где 1 дюйм = 72 пункта). + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +Если вам не нужна видимая коробка, установите `isVisible` в `false`. `signatureRect` можно скорректировать под макет вашего документа. + +## Step 4: Open the Image Stream and Define Crop Areas + +Прочитаем JPEG‑файл в поток и укажем **исходный прямоугольник**, выбирающий левый верхний угол 400 × 400 пикселей. Это операция **crop image for pdf**. + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **Edge case:** Если ваше изображение меньше 400 × 400, обрезка автоматически ограничится реальными размерами изображения — исключение не будет выброшено. + +## Step 5: Define Where the Cropped Image Should Appear + +Далее задаём **целевой прямоугольник** на странице PDF. В этом примере мы размещаем изображение в точке (50, 50) размером 200 × 200 пунктов (≈2,78 дюйма квадрат). + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +Экспериментируйте: меняйте координаты X/Y, чтобы переместить картинку, или изменяйте ширину/высоту для масштабирования. + +## Step 6: Insert the Cropped Image onto the Signed Page + +Наконец, добавляем изображение на **страницу 1** (ту же страницу, где уже есть подпись). Перегрузка `AddImage`, которую мы используем, принимает исходный и целевой прямоугольники, эффективно выполняя обрезку и размещение за один вызов. + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +За кулисами Aspose.Pdf извлекает область 400 × 400 пикселей, масштабирует её до 200 × 200 пунктов и записывает в поток содержимого PDF. + +## Step 7: Save the Signed and Image‑Enhanced PDF + +После всех изменений сохраняем документ. Можно перезаписать оригинал или записать в новый файл. + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +Когда откроете `output_signed.pdf` в Adobe Acrobat или любом PDF‑просмотрщике, вы увидите: + +- Видимое поле подписи в указанных координатах. +- Обрезанную фотографию, размещённую в (50, 50) на странице 1. +- Проверенную цифровую подпись (при условии, что просмотрщик доверяет вашему сертификату). + +## Frequently Asked Questions (FAQ) + +| Вопрос | Ответ | +|----------|--------| +| **Можно ли подписать другую страницу?** | Измените аргумент `pageNumber` в `signature.Sign` на любой допустимый номер страницы (нумерация начинается с 1). | +| **Что делать, если нужны несколько подписей?** | Создайте новый экземпляр `Signature` для каждой страницы или места, повторно используя тот же `pkcsSignature`, если применяется один и тот же сертификат. | +| **Ограничена ли обрезка изображения только прямоугольниками?** | Да, `AddImage` в Aspose.Pdf работает только с прямоугольными областями. Для сложных форм нужно предварительно обработать изображение (например, с помощью System.Drawing) перед встраиванием. | +| **Как сделать подпись невидимой?** | Установите `isVisible` в `false` и опустите `signatureRect`. Подпись останется криптографически валидной. | +| **Какие форматы можно встраивать помимо JPEG?** | Поддерживаются PNG, BMP, GIF и TIFF. Просто измените путь к файлу и убедитесь, что поток читает правильные байты. | + +## Full Working Example + +Ниже приведена полностью самодостаточная программа. Скопируйте её в `Program.cs`, скорректируйте пути и запустите. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**Ожидаемый результат:** При открытии `output_signed.pdf` вы увидите поле подписи (100 × 100 → 300 × 300 пунктов) и изображение размером 200 × 200 пунктов, полученное из левого верхнего угла `photo.jpg`. Подпись проходит проверку с использованием предоставленного сертификата ECDSA. + +## Wrapping Up + +Мы рассмотрели **how to sign PDF** файлы, как **add digital signature pdf** на конкретную страницу, как **crop image for pdf**, и наконец как **add image to pdf** с помощью Aspose.Pdf в C#. Весь процесс — от загрузки сертификата до сохранения финального документа — умещается в один легко читаемый исходный файл. + +Если вы готовы к следующему вызову, подумайте о: + +- Добавлении **multiple signatures** на разные страницы (используйте концепцию “digital signature pdf page”). +- Встраивании **QR‑кодов**, которые ссылаются на сервисы верификации. +- Автоматизации процесса в ASP.NET Core API для генерации 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-security-and-signatures/_index.md b/pdf/russian/net/programming-with-security-and-signatures/_index.md index 588884d96..dfa610454 100644 --- a/pdf/russian/net/programming-with-security-and-signatures/_index.md +++ b/pdf/russian/net/programming-with-security-and-signatures/_index.md @@ -35,6 +35,7 @@ | [Подпишите с помощью смарт-карты, используя поле подписи](./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.Pdf](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | Узнайте, как восстанавливать поврежденные PDF-файлы с помощью Aspose.PDF для .NET. Пошаговое руководство на C#. | +| [Проверка цифровой подписи PDF – Полное руководство на C#](./validate-pdf-digital-signature-complete-c-guide/) | Узнайте, как проверять цифровые подписи PDF с помощью Aspose.PDF для .NET на C#. Пошаговое руководство. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/russian/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/russian/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..ed5130d61 --- /dev/null +++ b/pdf/russian/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,262 @@ +--- +category: general +date: 2026-03-29 +description: Быстро проверяйте цифровую подпись PDF. Узнайте, как проверить подпись + PDF, проверить статус подписи и обнаружить изменённый PDF с помощью Aspose.Pdf в + C#. +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: ru +og_description: Проверьте цифровую подпись PDF в C#. Этот учебник показывает, как + проверить подпись PDF, проверить её целостность и обнаружить поддельный PDF с помощью + Aspose.Pdf. +og_title: Проверка цифровой подписи PDF – Полное руководство по C# +tags: +- C# +- Aspose.Pdf +- PDF Security +title: Проверка цифровой подписи PDF – Полное руководство по C# +url: /ru/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Проверка цифровой подписи PDF – Полное руководство на C# + +Когда‑нибудь задумывались **как проверить подпись PDF**, не теряя волосы? Возможно, вы получили контракт, открыли его и хотели быть на 100 % уверены, что он не был изменён. Хорошая новость: вам не нужна судебно‑медицинская лаборатория — достаточно нескольких строк C# и Aspose.Pdf, чтобы **проверить цифровую подпись PDF** в два счёта. + +В этом руководстве мы пройдём всё, что нужно знать: от установки библиотеки до интерпретации результата, включая обработку особых случаев, таких как несколько подписей или повреждённый файл. К концу вы сможете **проверять статус подписи PDF** программно и **обнаруживать поддельные PDF**‑файлы до того, как они создадут проблемы. + +## Что понадобится + +- **.NET 6.0 или новее** (код также работает на .NET Framework, но .NET 6 — оптимальный вариант). +- **Aspose.Pdf for .NET** — получите её из NuGet (`Install-Package Aspose.Pdf`). +- **Подписанный PDF**, который вы хотите протестировать. Если у вас его нет, создайте простой подписанный документ в Adobe Acrobat или любом другом подписывающем PDF‑инструменте. + +> Pro tip: Держите PDF‑файлы вне корневой папки проекта; относительный путь вроде `./Samples/signed.pdf` отлично подходит и предотвращает случайные коммиты конфиденциальных файлов. + +## Пошаговая реализация + +Ниже решение разбито на логические блоки. Каждый блок имеет собственный заголовок H2 — один из них даже содержит основной ключевой запрос, удовлетворяя SEO‑правилу. + +### ## Шаг 1 – Установить и подключить Aspose.Pdf + +Сначала добавьте пакет NuGet в ваш проект: + +```powershell +dotnet add package Aspose.Pdf +``` + +Или, если вы используете консоль диспетчера пакетов: + +```powershell +Install-Package Aspose.Pdf +``` + +После установки пакета Visual Studio автоматически добавит пространство имён `using Aspose.Pdf;`. Никакой дополнительной работы с DLL не требуется. + +### ## Шаг 2 – Загрузить подписанный PDF‑документ + +Теперь действительно откроем файл. Оператор `using` гарантирует корректное освобождение документа, что особенно важно для больших PDF‑файлов. + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +> **Почему это важно:** Загрузка документа даёт доступ к объекту `DigitalSignatureInfo`, который является точкой входа для всех запросов, связанных с подписью. + +### ## Шаг 3 – Получить информацию о цифровой подписи + +Aspose.Pdf оборачивает низкоуровневые детали PKI в удобный API. Получите свойство `DigitalSignatureInfo`, и у вас будет всё, что нужно для **проверки состояния подписи PDF**. + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +Если PDF содержит несколько подписей, `signatureInfo` агрегирует их, предоставляя свойства вроде `Count`, `Certificates` и `IsCompromised`. Для файла с одной подписью эти коллекции будут содержать единственный элемент. + +### ## Шаг 4 – Определить, компрометирована ли подпись + +Флаг `IsCompromised` сообщает, был ли документ изменён **после** подписи. Значение `true` означает, что PDF подделан — именно то, что нам нужно для **обнаружения поддельных PDF**. + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +Если требуется более тщательная **проверка подписи PDF** (например, проверка цепочки сертификатов), можно также изучить `signatureInfo.Certificates` и вызвать `Validate()` для каждого. Для большинства сценариев достаточно `IsCompromised`. + +### ## Шаг 5 – Вывести результат в консоль + +Наконец, сообщим пользователю, что произошло. Выведем дружелюбное сообщение и вернём соответствующий код завершения для скриптов автоматизации. + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### Ожидаемый вывод + +``` +Signature compromised: False +``` + +Если вы намеренно подделаете PDF (например, добавив лишний символ), вывод изменится на `True`. В этот момент вы знаете, что целостность документа нарушена. + +### ## Обработка особых случаев и типичных подводных камней + +#### 1. Несколько подписей + +Когда в PDF более одного подписанта, `IsCompromised` отражает *общее* состояние — если **любая** подпись нарушена, флаг становится `true`. Чтобы определить, кто именно виноват: + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. Отсутствие подписи + +Если PDF вовсе не подписан, `signatureInfo.Count` будет `0`. Не позволяйте себе ложного чувства безопасности: + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. Повреждённый PDF‑файл + +Повреждённый файл бросает `PdfException`. Оберните логику загрузки в `try‑catch`, чтобы вывести чистое сообщение об ошибке: + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. Проверка сертификата (Продвинуто) + +Если нужно убедиться, что сертификат подписи всё ещё действителен (не отозван, находится в пределах срока действия), можно вызвать: + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +Этот шаг переводит вас от простой **проверки подписи PDF** к полному **как проверить подпись PDF** процессу. + +### ## Полный рабочий пример + +Объединив всё, получаем полностью готовую к запуску программу: + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +Запустите программу из командной строки: + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +Вы увидите чёткий отчёт о том, целостен ли PDF, какие подписанты задействованы и доверены ли их сертификаты. + +## Визуальный обзор + +Ниже представлена быстрая схема, иллюстрирующая поток от **загрузки PDF** до **вывода результата проверки**. Это удобный справочник, когда вы проектируете более крупный конвейер обработки документов. + +![validate pdf digital signature workflow diagram](image.png "Схема, показывающая: загрузка PDF → DigitalSignatureInfo → проверка IsCompromised") + +*Alt text: схема проверки цифровой подписи PDF* + +## Заключение + +Мы только что рассмотрели **полное сквозное решение для проверки цифровой подписи PDF** с помощью Aspose.Pdf на C#. Ключевые выводы: + +- Загрузите PDF через `Document`. +- Получите `DigitalSignatureInfo` и проверьте `IsCompromised`, чтобы **обнаруживать поддельные PDF**. +- Корректно обрабатывайте несколько подписей, отсутствие подписи и повреждённые файлы. +- При необходимости дополнительно проверяйте сертификат подписи для полного **как проверить подпись PDF** чек‑листа. + +Дальше вы можете расширять логику — сохранять результаты проверки в базе данных, отклонять неподписанные загрузки в веб‑API или интегрировать с системой управления документами. Если вам интересны другие функции безопасности PDF, изучите **проверку временных меток подписи PDF**, **добавление новой подписи** или **шифрование PDF**. + +Есть вопросы о крайних случаях или хотите увидеть, как **проверить подпись PDF** с помощью другой библиотеки, например iText 7? Оставляйте комментарий ниже, и давайте продолжать обсуждение. Счастливого кодинга! + +{{< /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/conversion-export/_index.md b/pdf/spanish/net/conversion-export/_index.md index d83ea04f0..514ba078c 100644 --- a/pdf/spanish/net/conversion-export/_index.md +++ b/pdf/spanish/net/conversion-export/_index.md @@ -68,6 +68,12 @@ Aprenda a convertir archivos PDF a HTML con Aspose.PDF para .NET mediante la sal ### [Convertir PDF a HTML en .NET usando Aspose.PDF sin guardar imágenes](./convert-pdf-html-net-asposepdf-no-images/) Aprenda a convertir archivos PDF a HTML con Aspose.PDF para .NET sin guardar las imágenes por separado. Mantenga la integridad del diseño con nuestra guía detallada. +### [Guardar PDF como HTML con Aspose – Guía completa en C#](./save-pdf-as-html-with-aspose-complete-c-guide/) +Aprenda a guardar archivos PDF como HTML usando Aspose.PDF en C#, con ejemplos paso a paso y opciones de personalización. + +### [Guardar PDF como HTML con C# – Guía completa paso a paso](./save-pdf-as-html-with-c-complete-step-by-step-guide/) +Aprenda a guardar archivos PDF como HTML usando C# y Aspose.PDF con ejemplos detallados paso a paso. + ### [Convierta PDF a HTML en .NET con rutas de imagen personalizadas usando Aspose.PDF](./convert-pdf-html-custom-image-paths-dotnet/) Aprenda a convertir archivos PDF a formato HTML con Aspose.PDF para .NET y personalice las rutas de las imágenes de forma eficiente. Ideal para la integración web. @@ -104,51 +110,12 @@ Aprenda a convertir archivos PDF a formato XML con Aspose.PDF para .NET. Mejore ### [Convertir PDF/A a PDF estándar con Aspose.PDF .NET: una guía completa](./convert-pdf-a-standard-pdf-aspose-net/) Aprenda a convertir sin problemas documentos PDF/A en PDF estándar utilizando Aspose.PDF para .NET con esta guía paso a paso. +### [Convertir PDF a PDF/X-1a, exportar página PNG y agregar sello de texto](./convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/) +Aprenda a convertir documentos PDF a PDF/X-1a, exportar páginas como PNG y añadir marcas de texto con Aspose.PDF para .NET. + ### [Convierta archivos PDF a HTML interactivo con CSS personalizado usando Aspose.PDF .NET](./convert-pdfs-to-html-custom-css-aspose-pdf-net/) Aprenda a transformar documentos PDF en formatos HTML interactivos y compatibles con la Web utilizando Aspose.PDF .NET, completo con estilo CSS personalizado. -### [Convertir PS a PDF en C# usando Aspose.PDF .NET: una guía paso a paso](./convert-ps-to-pdf-aspose-dotnet-csharp/) -Aprenda a convertir archivos PostScript a PDF de forma eficiente en sus aplicaciones .NET con Aspose.PDF. Siga esta guía completa con ejemplos de código. - -### [Convierte archivos PDF RGB a escala de grises con Aspose.PDF para .NET | Guía completa](./convert-rgb-pdfs-to-grayscale-aspose-pdf-net/) -Aprenda a convertir archivos PDF RGB a escala de grises de forma eficiente con Aspose.PDF para .NET. Esta guía paso a paso garantiza la consistencia del diseño y la reducción del tamaño del archivo. - -### [Convertir TeX a PDF con Aspose.PDF para .NET: guía paso a paso](./convert-tex-to-pdf-aspose-dotnet-guide/) -Aprenda a convertir archivos TeX a PDF sin problemas con Aspose.PDF para .NET con esta guía detallada. Descubra consejos y prácticas recomendadas para una conversión eficiente. - -### [Convertir archivos de texto a PDF con Aspose.PDF para .NET: guía paso a paso](./convert-text-files-to-pdf-aspose-dotnet/) -Aprenda a convertir archivos de texto en documentos PDF profesionales sin problemas con Aspose.PDF para .NET. Siga esta guía paso a paso con ejemplos de código y consejos de optimización. - -### [Convertir XML a PDF en C# con Aspose.PDF: una guía completa para desarrolladores .NET](./convert-xml-to-pdf-csharp-aspose-pdf-guide/) -Aprenda a convertir archivos XML en PDF profesionales de forma eficiente con Aspose.PDF y C#. Siga esta guía paso a paso diseñada para desarrolladores .NET. - -### [Convertir XML a PDF con Aspose.PDF para .NET: guía paso a paso](./convert-xml-pdf-aspose-dotnet/) -Aprenda a transformar sus datos XML en archivos PDF con estilos usando Aspose.PDF y XSLT en .NET. Esta guía abarca la configuración, los pasos de conversión y las aplicaciones prácticas. - -### [Convierta XML a PDF con imágenes dinámicas usando Aspose.PDF para .NET](./convert-xml-to-pdf-dynamic-images-aspose-net/) -Aprenda a convertir datos XML en un documento PDF de aspecto profesional utilizando Aspose.PDF para .NET, incluida la inserción dinámica de imágenes. - -### [Convertir XPS a PDF con Aspose.PDF .NET: guía paso a paso](./convert-xps-to-pdf-aspose-net/) -Aprenda a convertir archivos XPS a PDF con Aspose.PDF para .NET. Esta guía paso a paso explica la configuración, el proceso de conversión y consejos para la solución de problemas. - -### [Convertir y anotar archivos PDF con Aspose.PDF para .NET: una guía completa](./convert-annotate-pdfs-aspose-pdf-net-guide/) -Aprenda a convertir archivos PDF a imágenes y a resaltar texto con Aspose.PDF para .NET. Esta guía explica la instalación, ejemplos de código y las prácticas recomendadas. - -### [Recortar una página PDF y convertirla en imagen usando Aspose.PDF para .NET](./crop-pdf-page-convert-image-aspose-dotnet/) -Aprenda a recortar regiones específicas de una página PDF y convertirlas en imágenes con Aspose.PDF para .NET. Ideal para el procesamiento de documentos. - -### [Exportar datos a PDF con Aspose.PDF para .NET: una guía completa](./export-data-pdf-aspose-net-guide/) -Aprenda a exportar datos de aplicaciones a PDF de forma eficiente con Aspose.PDF para .NET. Esta guía abarca la configuración, ejemplos de código en C# y las características principales. - -### [Exportar anotaciones PDF con Aspose.PDF .NET: una guía completa](./export-annotations-aspose-pdf-net/) -Aprenda a exportar anotaciones desde archivos PDF de forma eficiente con Aspose.PDF para .NET. Esta guía abarca la configuración, la implementación y las prácticas recomendadas. - -### [Exportar datos PDF a XML con Aspose.PDF para .NET: guía paso a paso](./export-pdf-data-to-xml-aspose-dotnet-guide/) -Aprenda a exportar de manera eficiente datos de formularios PDF a XML estructurado utilizando Aspose.PDF para .NET, una poderosa biblioteca diseñada para la manipulación de PDF. - -### [Formatear HTML a PDF con Aspose.PDF para .NET: una guía paso a paso](./format-html-pdf-aspose-dotnet-guide/) -Aprenda a formatear fácilmente contenido HTML en archivos PDF con Aspose.PDF para .NET con esta guía completa. Ideal para desarrolladores que buscan un proceso de conversión optimizado. - ### [Cómo agregar contenido HTML a archivos PDF con Aspose.PDF .NET: una guía completa](./add-html-pdf-aspose-dotnet-guide/) Aprenda a añadir contenido HTML a documentos PDF sin problemas con Aspose.PDF .NET. Esta guía abarca la configuración, la implementación y las aplicaciones prácticas para la generación dinámica de documentos. diff --git a/pdf/spanish/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/spanish/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..24ffefa2d --- /dev/null +++ b/pdf/spanish/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-03-29 +description: Convertir PDF a PDF/X‑1a y exportar la página PDF como PNG en un solo + flujo – también aprender cómo agregar una marca de texto al PDF usando Aspose.Pdf + (C#). +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: es +og_description: convertir PDF a PDF/X-1a y exportar la página PDF como PNG mientras + se agrega una marca de texto PDF – guía completa de C# con Aspose.Pdf. +og_title: convertir pdf a pdf/x-1a, exportar página png y añadir sello de texto +tags: +- Aspose.Pdf +- C# +- PDF processing +title: Convertir PDF a PDF/X-1a, exportar página PNG y añadir sello de texto +url: /es/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# convertir pdf a pdf/x-1a, exportar página png y agregar sello de texto – Guía completa de C# + +¿Alguna vez necesitaste **convertir pdf a pdf/x-1a** pero también querías una vista previa rápida en PNG de la primera página y un sello de texto personalizado en el mismo documento? No estás solo. En muchas canalizaciones de producción —piensa en pre‑flight listo para imprimir o generación automática de informes— a menudo te encontrarás con esa combinación exacta de requisitos. + +En este tutorial recorreremos un flujo de trabajo único y cohesivo que hace tres cosas consecutivas: **convertir pdf a pdf/x-1a**, **exportar página pdf a png** y **agregar sello de texto pdf**. El código usa la biblioteca Aspose.Pdf para .NET, por lo que obtienes una solución de nivel profesional sin lidiar con los internals de PDF de bajo nivel. Al final tendrás un programa C# ejecutable que puedes insertar en cualquier aplicación de consola, Azure Function o paso de CI. + +> **Lo que obtendrás** – un archivo fuente completo, explicaciones paso a paso, consejos para errores comunes y una forma rápida de verificar la salida. + +## Requisitos previos + +- .NET 6.0 o posterior (la API también funciona con .NET Framework 4.x). +- Paquete NuGet Aspose.Pdf for .NET (`Aspose.Pdf`) – la versión 23.10 es la actual al momento de escribir. +- Un PDF de entrada (`input.pdf`) y un archivo de perfil ICC (`Coated_Fogra39L_VIGC_300.icc`) ubicados en una carpeta que controles. +- Familiaridad básica con C# y Visual Studio (o tu IDE favorito). + +Si alguno de esos conceptos te resulta desconocido, simplemente instala el paquete NuGet con: + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +Ahora vamos a sumergirnos. + +## Paso 1: Cargar el documento PDF de origen + +Lo primero que hacemos es abrir el PDF con el que queremos trabajar. La clase `Document` de Aspose.Pdf representa todo el archivo y carga el contenido de forma perezosa, por lo que no pagas una penalización de rendimiento hasta que realmente accedes a las páginas. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*Por qué es importante*: Cargar el documento temprano nos brinda un único objeto que pasar alrededor para la conversión, renderizado y estampado. Si omites la carga explícita y tratas de trabajar con un archivo inexistente, obtendrás una críptica `FileNotFoundException` más adelante. + +## Paso 2: Convertir el documento a PDF/X‑1a usando un perfil ICC personalizado + +PDF/X‑1a es el estándar de facto para PDFs listos para imprimir. El paso de conversión también te permite incrustar un **Output Intent** (el perfil ICC) para que los RIP posteriores sepan exactamente cómo deben interpretarse los colores. + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*Consejo profesional*: Si necesitas un manejo de errores más estricto, reemplaza `ConvertErrorAction.Delete` por `ConvertErrorAction.Throw`. Así la conversión abortará al primer problema de cumplimiento, lo cual es útil en canalizaciones de QA automatizadas. + +## Paso 3: Exportar la primera página como PNG mientras se analizan fuentes + +Una vista previa en PNG suele ser necesaria para revisiones visuales rápidas o generación de miniaturas. Al habilitar `AnalyzeFonts`, Aspose se asegura de que cualquier fuente incrustada se rasterice correctamente, evitando sorpresas de glifos faltantes. + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +Después de ejecutar esto encontrarás `page1.png` junto a tus archivos fuente. Ábrelo en cualquier visor de imágenes para confirmar que la conversión se ve bien. + +## Paso 4: Agregar un sello de texto que ajusta automáticamente su tamaño de fuente + +Un **text stamp** es una forma práctica de marcar o anotar un PDF sin alterar los flujos de contenido subyacentes. Configurar `AutoAdjustFontSizeToFitStampRectangle` hace que la biblioteca reduzca o aumente el texto para que nunca desborde el rectángulo que defines. + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*¿Por qué ajuste automático?* Si más adelante cambias el texto del sello a algo más largo (p. ej., una marca de tiempo dinámica), no tendrás que recalcular manualmente los tamaños de fuente; el sello se adapta al instante. + +## Paso 5: Guardar el documento PDF actualizado + +Finalmente, escribe todo de nuevo en disco. Puedes sobrescribir el archivo original o crear uno totalmente nuevo; el ejemplo a continuación crea `output.pdf`. + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +Cuando la guardada se complete, tendrás: + +1. Un archivo **PDF/X‑1a** compatible (`output.pdf`). +2. Una **vista previa PNG** de la primera página (`page1.png`). +3. Un **sello de texto** que encaja perfectamente dentro de su rectángulo. + +### Lista de verificación rápida + +| ✅ Verificación | Cómo comprobar | +|----------------|----------------| +| Cumplimiento PDF/X‑1a | Abre `output.pdf` en Adobe Acrobat → *Print Production* → *Preflight* y selecciona “PDF/X‑1a:2001”. | +| PNG se ve bien | Abre `page1.png` en Windows Photo Viewer o cualquier editor de imágenes. | +| Aparece el sello | Desplázate por `output.pdf` – el texto “Auto‑size” debería estar centrado en la página 1. | + +![convert pdf to pdf/x-1a preview](image.png "convert pdf to pdf/x-1a preview showing stamped page") + +**texto alternativo**: **vista previa de convert pdf a pdf/x-1a con sello de texto auto‑size** – muestra el PDF final después de todos los pasos. + +## Variaciones comunes y casos límite + +- **Múltiples páginas** – Si necesitas estampar cada página, recorre `pdfDoc.Pages` y llama a `AddStamp` dentro del bucle. +- **Formato de salida diferente** – Cambia `PdfFormat.PDF_X_1A` a `PdfFormat.PDF_A_1B` para PDFs de archivo. +- **PNG de mayor resolución** – Establece `Resolution = 600` en `RenderingOptions` para miniaturas de calidad de impresión. +- **Fuente personalizada para el sello** – Asigna `autoSizeStamp.Font = FontRepository.FindFont("Arial")` antes de agregar el sello. +- **Manejo de errores** – Envuelve cada paso importante en un `try/catch` y registra `ConversionException` o `FileNotFoundException` para facilitar la depuración. + +## Ejemplo completo y funcional (listo para copiar‑pegar) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Setup paths + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Load the source document + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Convert to PDF/X‑1a (print‑ready) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Export first page as PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Add auto‑sizing text stamp (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/spanish/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..1fd132296 --- /dev/null +++ b/pdf/spanish/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,268 @@ +--- +category: general +date: 2026-03-29 +description: Guardar PDF como HTML usando Aspose.PDF en C#. Aprende cómo convertir + PDF a HTML, omitir imágenes y verificar la firma del PDF en un solo tutorial. +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: es +og_description: Guarda PDF como HTML con Aspose.PDF en C#. Esta guía te muestra cómo + convertir PDF a HTML, omitir imágenes y validar la firma digital del PDF. +og_title: Guardar PDF como HTML con Aspose – Guía completa de C# +tags: +- Aspose.PDF +- C# +- PDF processing +title: Guardar PDF como HTML con Aspose – Guía completa de C# +url: /es/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Guardar PDF como HTML con Aspose – Guía Completa en C# + +¿Alguna vez te has preguntado cómo **guardar PDF como HTML** sin incluir cada imagen incrustada? Tal vez estés creando una vista previa web ligera y la carga extra de imágenes está ralentizando tu página. La buena noticia es que no necesitas escribir un analizador personalizado—Aspose.PDF hace el trabajo pesado por ti. En este tutorial **convertiremos PDF a HTML**, eliminaremos las imágenes y luego **verificaremos la firma del PDF** para asegurarnos de que el documento no haya sido manipulado. + +Recorreremos cada línea de código, explicaremos *por qué* cada configuración es importante y también abordaremos casos límite como PDFs grandes o firmas ausentes. Al final tendrás una aplicación de consola en C# lista para ejecutar que genera un archivo HTML limpio y te brinda un resultado verdadero/falso claro para la firma digital. + +## Lo que aprenderás + +- Cargar un archivo PDF con Aspose.PDF. +- Usar `HtmlSaveOptions` para **convertir PDF a HTML** omitiendo imágenes. +- Guardar el HTML resultante en disco. +- Configurar un objeto `PdfFileSignature` para **verificar la firma del PDF**. +- Interpretar el resultado booleano y manejar problemas comunes. +- Consejos extra para rendimiento y solución de problemas. + +### Requisitos previos + +- .NET 6.0 o superior (el código también funciona en .NET Framework 4.7+). +- Paquete NuGet Aspose.PDF for .NET (versión 23.12 o más reciente). +- Un PDF firmado (`input.pdf`) que contenga una firma llamada “Sig1”. +- Familiaridad básica con C# y aplicaciones de consola. + +> **Consejo profesional:** Si aún no has instalado el paquete Aspose.PDF, ejecuta `dotnet add package Aspose.PDF` desde la carpeta de tu proyecto. + +--- + +## Paso 1: Cargar el documento PDF de origen + +Antes de poder hacer cualquier cosa, necesitamos una representación en memoria del PDF. La clase `Document` de Aspose.PDF lee el archivo y construye un árbol de páginas, recursos y anotaciones. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**Por qué es importante:** Cargar el documento una sola vez mantiene predecible el uso de memoria. Si planeas procesar muchos PDFs en un bucle, considera reutilizar la misma instancia de `Document` después de llamar a `pdfDocument.Dispose()`. + +--- + +## Paso 2: Configurar las opciones de guardado HTML – Omitir imágenes + +Queremos **guardar PDF como HTML** pero sin los datos pesados de imagen. `HtmlSaveOptions` nos brinda control granular, y la bandera `SkipImages` indica a Aspose que omita completamente las etiquetas ``. + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**Por qué podrías omitir imágenes:** En portales de vista previa o diseños mobile‑first, cada kilobyte cuenta. Eliminar imágenes también evita problemas de licenciamiento si el PDF original contiene gráficos con derechos de autor. + +--- + +## Paso 3: Exportar el PDF como archivo HTML sin imágenes + +Ahora escribimos realmente el archivo HTML. El método `Save` respeta las opciones que configuramos arriba. + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**Resultado que verás:** Un archivo `.html` que contiene el contenido textual, tablas y gráficos vectoriales (si los hay), pero sin etiquetas ``. Ábrelo en un navegador y deberías ver una representación limpia y sin imágenes del PDF original. + +--- + +## Paso 4: Preparar un verificador de firma para el mismo documento + +La clase `PdfFileSignature` de Aspose.PDF nos permite inspeccionar firmas digitales incrustadas en el PDF. Crearemos una instancia que apunte al mismo `Document` que ya cargamos. + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**Nota sobre el manejo de recursos:** La instrucción `using` garantiza que el verificador libere cualquier manejador nativo una vez que terminemos, evitando problemas de bloqueo de archivos en Windows. + +--- + +## Paso 5: Verificar la firma llamada “Sig1” usando SHA‑3‑256 + +La mayoría de los PDFs usan SHA‑256 o SHA‑1, pero Aspose también soporta la familia más reciente SHA‑3. Aquí solicitamos explícitamente `Sha3_256`. Si la firma falta o el algoritmo no coincide, el método devuelve `false`. + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Qué podría significar “false”:** + +1. **Firma no encontrada** – quizá el PDF usa otro nombre; lista las firmas con `signatureVerifier.GetSignatureNames()`. +2. **Desajuste de algoritmo** – el PDF podría haber sido firmado con SHA‑256; prueba `DigestHashAlgorithm.Sha256`. +3. **Documento alterado** – cualquier cambio después de la firma invalida el hash, resultando en `false`. + +--- + +## Manejo de casos límite comunes + +### PDFs grandes + +Si tu PDF de origen supera unos pocos cientos de megabytes, considera habilitar el **modo de ahorro de memoria**: + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +Esto transmite páginas bajo demanda, reduciendo la presión sobre la RAM. + +### Firma ausente + +Cuando no estés seguro del nombre de la firma, enuméralas: + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +Escoge el nombre correcto de la lista antes de llamar a `VerifySignature`. + +### Compatibilidad con navegadores + +Algunos navegadores tienen problemas con HTML que contiene el CSS predeterminado de Aspose. Configurar `htmlSaveOptions.EmbedCss = true` (como se mostró antes) incrusta los estilos, haciendo el archivo más portátil. + +--- + +## Ejemplo completo y funcional + +A continuación tienes el programa completo, listo para copiar y pegar, que incluye todos los pasos, manejo de errores y diagnósticos opcionales. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Salida esperada en la consola** (las rutas variarán): + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +Si la firma es inválida, la última línea mostrará `Signature valid: False`. + +--- + +## Preguntas frecuentes + +**P: ¿Puedo convertir PDF a HTML *con* imágenes?** +R: Claro. Simplemente establece `SkipImages = false` (o omite la propiedad). Aspose incrustará cada imagen como un archivo separado en una sub‑carpeta junto al HTML. + +**P: ¿Esto funciona en Linux?** +R: Sí. Aspose.PDF es multiplataforma; solo asegúrate de que las rutas `YOUR_DIRECTORY` usen barras diagonales (`/`) o `Path.Combine`. + +**P: ¿Qué pasa si necesito validar una firma digital PDF con un certificado personalizado?** +R: Usa la sobrecarga `PdfFileSignature.ValidateSignature` que acepta un objeto `X509Certificate2`. Ese método también devuelve un `SignatureInfo` detallado que puedes inspeccionar. + +**P: ¿`aspose convert pdf` está limitado a C#?** +R: No. La misma API existe para Java, Python y otros lenguajes .NET. Los conceptos—cargar, establecer opciones, guardar, verificar—permanecen iguales. + +--- + +## Conclusión + +Ahora sabes exactamente cómo **guardar PDF como HTML** usando Aspose.PDF, eliminar imágenes innecesarias y **verificar la firma del PDF** en un único programa C# simplificado. El proceso es directo: cargar, configurar, exportar y validar. Con los diagnósticos opcionales y el manejo de casos límite cubiertos, puedes adaptar este patrón a trabajos por lotes, servicios web o utilidades de escritorio. + +¿Listo para el siguiente paso? Prueba **convertir PDF a HTML** conservando imágenes, o experimenta con diferentes algoritmos hash para **validar firmas digitales PDF** contra tu propia PKI. También podrías explorar la conversión de PDF a DOCX de Aspose o combinar varios PDFs antes de exportar—cada una es una extensión natural del flujo de trabajo que acabamos de construir. + +¡Feliz codificación, y que tus vistas previas HTML sigan siendo ligeras y tus firmas, confiables! + +![ejemplo de guardar pdf como html](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/spanish/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..92f6dfac8 --- /dev/null +++ b/pdf/spanish/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,258 @@ +--- +category: general +date: 2026-03-29 +description: Guardar PDF como HTML usando C# y Aspose.PDF. Aprende cómo insertar una + página en PDF, agregar una página PDF en blanco y crear una firma PKCS7 separada + en un solo flujo. +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: es +og_description: Guarda PDF como HTML en C# con Aspose.PDF. Esta guía muestra cómo + cargar un PDF, insertar una página, agregar una página en blanco, firmar con PKCS7 + y exportar a HTML. +og_title: Guardar PDF como HTML con C# – Tutorial completo de programación +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: Guardar PDF como HTML con C# – Guía completa paso a paso +url: /es/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Guardar PDF como HTML con C# – Guía completa paso a paso + +¿Alguna vez necesitaste **guardar PDF como HTML** pero no estabas seguro de cómo mantener el diseño intacto mientras ajustabas el documento original? No eres el único—los desarrolladores a menudo manejan correcciones de paginación, páginas en blanco y firmas digitales antes de la conversión. En este tutorial recorreremos un flujo de trabajo único y coherente que hace exactamente eso, y también incluiremos cómo **insertar página en PDF**, **agregar página PDF en blanco** y **crear firma PKCS7 separada** a lo largo del proceso. + +Al final de esta guía tendrás un programa C# listo para ejecutar que carga un PDF existente, remodela sus páginas, firma la primera página y finalmente exporta todo a HTML con prioridad Unicode CMap. Sin referencias colgantes, solo una solución autocontenida que puedes incorporar a cualquier proyecto .NET. + +## Lo que necesitarás + +- **Aspose.PDF for .NET** (última versión, 23.x al momento de escribir). +- **.NET 6.0** o posterior – el código también compila con .NET Framework 4.7, pero .NET 6 ofrece el mejor rendimiento. +- Un **archivo de certificado** (`.pfx`) y su contraseña para la firma PKCS7. +- Un PDF de entrada (`input.pdf`) que deseas manipular. + +Si ya cuentas con todo, podemos pasar directamente al código. De lo contrario, obtén una prueba gratuita de 30 días de Aspose desde el sitio oficial; la API es idéntica a la versión de pago. + +--- + +## Paso 1 – Cargar documento PDF en C# (Acción principal) + +Lo primero es cargar el PDF en memoria. La clase `Document` de Aspose realiza todo el trabajo pesado. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*Por qué es importante:* Cargar el archivo te brinda un modelo de objetos mutable. Desde aquí puedes **insertar página en PDF**, agregar páginas en blanco o aplicar firmas sin tocar el archivo original en disco. + +--- + +## Paso 2 – Insertar una página y agregar una página PDF en blanco + +A veces el PDF de origen tiene artefactos de paginación—quizá una página faltante o una duplicada. A continuación copiamos la página 2 justo después de la página 1 y luego añadimos una página completamente en blanco al final. + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*Consejo profesional:* `UpdatePagination()` recalcula los números de página que aparecen en pies o encabezados generados por Aspose. Omitir este paso puede dejar números obsoletos en el HTML final. + +--- + +## Paso 3 – Crear una firma PKCS7 separada (SHA‑512) + +Una firma PKCS7 separada demuestra la integridad del documento sin incrustar los datos de la firma directamente en el flujo de contenido del PDF. Utilizaremos un certificado almacenado en un archivo PFX. + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*¿Por qué SHA‑512?* Ofrece un hash más fuerte que SHA‑256 y sigue siendo ampliamente compatible. Si necesitas cumplir con estándares más antiguos, cambia `Sha512` por `Sha256`. + +--- + +## Paso 4 – Aplicar la firma digital a la página 1 con un rectángulo visible + +Colocaremos un campo de firma visible en la primera página. El rectángulo define dónde aparece la imagen de la firma (o un marcador de posición). + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*Caso límite:* Si la página de destino ya contiene un campo de formulario con el mismo nombre, la API lanzará una excepción. Asegúrate de usar nombres de campo únicos o de limpiar los campos existentes antes de firmar. + +--- + +## Paso 5 – Configurar opciones de guardado HTML para priorizar Unicode CMap + +Al convertir a HTML, Aspose puede incrustar fuentes como base‑64, usar subconjuntos o confiar en Unicode CMaps. Priorizar Unicode reduce el tamaño del archivo y mejora la capacidad de búsqueda de texto. + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*¿Qué hace esto?* Indica al convertidor que prefiera Unicode CMaps sobre la incrustación de fuentes personalizadas siempre que sea posible, lo cual es ideal para PDFs multilingües. + +--- + +## Paso 6 – Guardar el documento firmado como HTML + +Finalmente, escribe el PDF procesado como una carpeta HTML (Aspose crea un directorio con archivos de soporte como CSS e imágenes). + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +Si abres `cmap.html` en un navegador, verás el diseño original del PDF renderizado como HTML, completo con la imagen de la firma visible en la página 1. + +--- + +## Ejemplo completo (todos los pasos combinados) + +A continuación tienes el programa completo que puedes copiar‑pegar en una aplicación de consola. Incluye todas las directivas `using` necesarias y manejo de errores. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**Resultado esperado:** +- `cmap.html` (el archivo HTML principal) +- carpeta `cmap_files` que contiene CSS, imágenes y recursos de fuentes. +- La primera página muestra un cuadro de firma visible en las coordenadas que configuraste. + +--- + +## Preguntas frecuentes y casos límite + +| Pregunta | Respuesta | +|----------|-----------| +| *¿Puedo usar un certificado autofirmado?* | Sí, Aspose.PDF acepta cualquier PFX válido. Solo recuerda que los navegadores pueden marcar la firma como no confiable. | +| *¿Qué pasa si necesito firmar varias páginas?* | Crea llamadas `PdfFileSignature` separadas para cada página, o usa un bucle que actualice `pageNumber`. | +| *¿Hay forma de incrustar la imagen de la firma en lugar de un rectángulo?* | Proporciona un objeto `SignatureAppearance` con un flujo de imagen a `PdfFileSignature.Sign`. | +| *Mi PDF tiene contenido cifrado—¿puedo convertirlo?* | Descríptalo primero usando `pdfDoc.Decrypt("ownerPassword")`, luego ejecuta los pasos. | +| *¿El HTML conservará los hipervínculos del PDF original?* | Aspose preserva las anotaciones de enlace por defecto. Si ves enlaces faltantes, establece `htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;`. | + +--- + +## Conclusión + +Acabamos de demostrar cómo **guardar PDF como HTML** mientras simultáneamente **insertamos página en PDF**, **agregamos página PDF en blanco** y **creamos una firma PKCS7 separada**, todo usando C#. El flujo de trabajo es lineal, fácil de depurar y totalmente personalizable para proyectos más grandes. + +A continuación, podrías explorar: + +- **Procesamiento por lotes** – recorre una carpeta de PDFs y convierte cada uno. +- **CSS personalizado** – ajusta `HtmlSaveOptions.CustomCss` para que coincida con el estilo de tu sitio. +- **Firmas avanzadas** – usa servidores de sellado de tiempo o LTV (Validación a Largo Plazo) para firmas de nivel de cumplimiento. + +¡Pruébalos y tendrás una canalización robusta de PDF a HTML que es tanto SEO‑friendly como apta para citaciones en asistentes de IA. ¡Feliz codificación! + +--- + +![Diagrama que muestra PDF cargado, páginas insertadas, firma aplicada y salida HTML](/images/save-pdf-as-html-workflow.png "flujo de trabajo guardar pdf como html") + +*Texto alternativo de la imagen:* **diagrama guardar pdf como html workflow** + +{{< /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 ff2ccf3a4..dc5f3dd3f 100644 --- a/pdf/spanish/net/digital-signatures/_index.md +++ b/pdf/spanish/net/digital-signatures/_index.md @@ -64,6 +64,9 @@ Aprenda a cargar un PDF en C#, convertirlo a PDF/X‑4 y listar sus firmas digit ### [Validar firma PDF con Aspose – Convertir PDF a HTML](./validate-pdf-signature-with-aspose-convert-pdf-to-html/) Aprenda a validar firmas PDF y convertir documentos a HTML usando Aspose.PDF para .NET. +### [Cómo firmar PDF y agregar imágenes – Guía completa en C#](./how-to-sign-pdf-and-add-images-complete-c-guide/) +Aprenda a firmar documentos PDF y añadir imágenes usando Aspose.PDF para .NET con una guía paso a paso en C#. + ## Recursos adicionales - [Documentación de Aspose.PDF para la red](https://docs.aspose.com/pdf/net/) diff --git a/pdf/spanish/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/spanish/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..0825c6932 --- /dev/null +++ b/pdf/spanish/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,247 @@ +--- +category: general +date: 2026-03-29 +description: Cómo firmar un PDF con una firma digital y añadir una imagen recortada + en C#. Aprende a agregar una firma digital al PDF, recortar una imagen para el PDF + y añadir una imagen al PDF fácilmente. +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: es +og_description: Cómo firmar un PDF con una firma digital e incrustar una imagen recortada + usando Aspose.Pdf en C#. Sigue esta guía para una solución completa. +og_title: Cómo firmar PDF y agregar imágenes – Tutorial paso a paso en C# +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: Cómo firmar PDF y agregar imágenes – Guía completa de C# +url: /es/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo firmar PDF y agregar imágenes – Guía completa en C# + +¿Alguna vez te has preguntado **cómo firmar PDF** de forma programática mientras insertas una imagen personalizada? Tal vez estés construyendo un flujo de aprobación y necesites una firma legalmente vinculante *y* una miniatura de la foto del firmante en la misma página. En resumen, quieres **agregar firma digital pdf** al contenido, recortar esa foto y luego **agregar imagen a pdf** sin complicaciones. + +Este tutorial te guía paso a paso—desde cargar un certificado ECDSA PKCS#7 hasta recortar un JPEG y estamparlo en la página firmada. Al final tendrás un único archivo C# ejecutable que firma la página 1, recorta una foto a 400 × 400 px y la coloca en una ubicación precisa. Sin scripts externos, sin trucos, solo código claro y explicaciones. + +## Requisitos previos + +- .NET 6.0 o superior (el código también funciona con .NET Framework 4.7+) +- Paquete NuGet **Aspose.Pdf for .NET** (versión 23.9 o más reciente) +- Un certificado ECDSA P‑256 en formato PKCS#7 (`.pfx`) y su contraseña +- Una imagen JPEG que desees incrustar (p. ej., `photo.jpg`) + +> **Consejo profesional:** Mantén tu archivo de certificado fuera del control de versiones y protege la contraseña con un gestor de secretos. + +--- + +## Paso 1: Configurar el proyecto e importaciones + +Primero, crea una aplicación de consola (o intégrala en cualquier servicio existente). Añade la referencia a Aspose.Pdf: + +```bash +dotnet add package Aspose.Pdf +``` + +Luego incluye los espacios de nombres requeridos: + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +Estas sentencias `using` te dan acceso a las clases `Document`, `Signature` y `Rectangle` que necesitaremos más adelante. + +## Paso 2: Cargar el PDF y preparar la firma + +Abriremos un PDF existente (`source.pdf`) y crearemos un objeto **digital signature pdf** que usa una firma PKCS#7 separada. El certificado es una clave ECDSA P‑256, ampliamente aceptada para cumplimiento. + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**Por qué es importante:** Usar una firma PKCS#7 separada mantiene intacto el contenido original del PDF mientras se incrusta un hash criptográfico. Este es el enfoque estándar de la industria para PDFs legalmente vinculantes. + +## Paso 3: Aplicar la firma digital a una página específica + +Ahora colocaremos el campo de firma visible en **la página 1**. El rectángulo define dónde aparece el cuadro de firma (las coordenadas están en puntos, donde 1 pulgada = 72 puntos). + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +Si no necesitas un cuadro visible, establece `isVisible` a `false`. El `signatureRect` puede ajustarse para que coincida con el diseño de tu documento. + +## Paso 4: Abrir el flujo de imagen y definir áreas de recorte + +Leemos el archivo JPEG en un flujo y especificamos un **rectángulo de origen** que selecciona los 400 × 400 píxeles superiores‑izquierdos. Esta es la operación **crop image for pdf**. + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **Caso límite:** Si tu imagen es más pequeña que 400 × 400, el recorte se ajustará automáticamente a las dimensiones reales de la imagen—no se lanzará ninguna excepción. + +## Paso 5: Definir dónde debe aparecer la imagen recortada + +A continuación, establecemos el **rectángulo de destino** en la página PDF. En este ejemplo colocamos la imagen en (50, 50) con un tamaño de 200 × 200 puntos (≈2.78 pulgadas cuadradas). + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +Siéntete libre de experimentar: cambia las coordenadas X/Y para mover la foto, o ajusta ancho/alto para escalarla. + +## Paso 6: Insertar la imagen recortada en la página firmada + +Finalmente, añadimos la imagen a **la página 1** (la misma página que ahora lleva la firma). La sobrecarga `AddImage` que usamos acepta los rectángulos de origen y destino, realizando el recorte y la colocación en una sola llamada. + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +Detrás de escena, Aspose.Pdf extrae la región de 400 × 400 píxeles, la reescala a 200 × 200 puntos y la escribe en el flujo de contenido del PDF. + +## Paso 7: Guardar el PDF firmado y con la imagen añadida + +Después de todas las modificaciones, persiste el documento. Puedes sobrescribir el archivo original o escribir a uno nuevo. + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +Al abrir `output_signed.pdf` en Adobe Acrobat o cualquier visor de PDF, verás: + +- Un campo de firma visible en las coordenadas que especificaste. +- La foto recortada colocada en (50, 50) en la página 1. +- La firma digital validada (si el visor confía en tu certificado). + +--- + +## Preguntas frecuentes (FAQ) + +| Pregunta | Respuesta | +|----------|-----------| +| **¿Puedo firmar una página diferente?** | Cambia el argumento `pageNumber` en `signature.Sign` a cualquier índice de página válido (basado en 1). | +| **¿Qué pasa si necesito varias firmas?** | Crea una nueva instancia de `Signature` para cada página o ubicación, reutilizando el mismo `pkcsSignature` si se aplica el mismo certificado. | +| **¿El recorte de imagen está limitado a rectángulos?** | Sí, `AddImage` de Aspose.Pdf funciona con regiones rectangulares. Para formas complejas deberás pre‑procesar la imagen (p. ej., con System.Drawing) antes de incrustarla. | +| **¿Cómo hago que la firma sea invisible?** | Establece `isVisible` a `false` y omite `signatureRect`. La firma seguirá siendo criptográficamente válida. | +| **¿Qué formatos puedo incrustar además de JPEG?** | PNG, BMP, GIF y TIFF son compatibles. Simplemente cambia la ruta del archivo y asegura que el flujo lea los bytes correctos. | + +--- + +## Ejemplo completo y funcional + +A continuación tienes el programa completo, autocontenido. Copia‑pega en `Program.cs`, ajusta las rutas y ejecútalo. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**Resultado esperado:** Al abrir `output_signed.pdf` se muestra un campo de firma (100 × 100 → 300 × 300 puntos) y una imagen de 200 × 200 puntos derivada de la esquina superior‑izquierda de `photo.jpg`. La firma se valida contra el certificado ECDSA suministrado. + +--- + +## Conclusión + +Hemos cubierto **cómo firmar PDF**, cómo **agregar digital signature pdf** a una página específica, cómo **crop image for pdf**, y finalmente cómo **add image to pdf** usando Aspose.Pdf en C#. Todo el flujo—desde cargar el certificado hasta guardar el documento final—cabe en un solo archivo fuente fácil de leer. + +Si estás listo para el siguiente reto, considera: + +- Añadir **múltiples firmas** en diferentes páginas (usa el concepto “digital signature pdf page”). +- Incrustar **códigos QR** que enlacen a servicios de verificación. +- Automatizar el proceso en una API ASP.NET Core para generación de PDF bajo demanda. + +Recuerda, la clave para una automatización robusta de PDFs es la separación clara de responsabilidades: manejo de firmas, procesamiento de imágenes y ensamblado final del documento. Juega con las coordenadas, cambia el formato de la imagen o experimenta con sellos de tiempo—tu flujo de trabajo ahora es totalmente extensible. + +¿Tienes preguntas, casos límite o un uso interesante que compartir? ¡Deja un comentario abajo y 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-security-and-signatures/_index.md b/pdf/spanish/net/programming-with-security-and-signatures/_index.md index 64d0f7c1a..601e8b437 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,7 @@ 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. +| [Validar firma digital PDF – Guía completa en C#](./validate-pdf-digital-signature-complete-c-guide/) Aprenda a validar firmas digitales en archivos PDF usando Aspose.PDF para .NET con C#. Guía paso a paso completa. | [Cómo reparar archivos PDF – Guía completa en C# con Aspose.PDF](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) Aprenda a reparar archivos PDF dañados con Aspose.PDF para .NET usando C#. Guía paso a paso y ejemplos claros. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/spanish/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/spanish/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..4bf90ec84 --- /dev/null +++ b/pdf/spanish/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,262 @@ +--- +category: general +date: 2026-03-29 +description: Valide rápidamente la firma digital de PDF. Aprenda cómo verificar la + firma de PDF, comprobar el estado de la firma y detectar PDFs manipulados con Aspose.Pdf + en C#. +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: es +og_description: Validar la firma digital de PDF en C#. Este tutorial muestra cómo + verificar la firma del PDF, comprobar la integridad de la firma del PDF y detectar + PDFs manipulados usando Aspose.Pdf. +og_title: Validar firma digital de PDF – Guía completa de C# +tags: +- C# +- Aspose.Pdf +- PDF Security +title: Validar firma digital de PDF – Guía completa de C# +url: /es/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Validar firma digital de PDF – Guía completa en C# + +¿Alguna vez te has preguntado **cómo verificar una firma PDF** sin volverte loco? Tal vez recibiste un contrato, lo abriste y necesitabas estar 100 % seguro de que no ha sido alterado. La buena noticia es que no necesitas un laboratorio forense—solo unas pocas líneas de C# y Aspose.Pdf pueden **validar la firma digital de PDF** al instante. + +En este tutorial repasaremos todo lo que necesitas saber: desde la instalación de la biblioteca hasta la interpretación del resultado, e incluso cómo manejar casos límite como firmas múltiples o un archivo corrupto. Al final, podrás **comprobar el estado de la firma PDF** programáticamente y **detectar PDF manipulados** antes de que causen problemas. + +## Lo que necesitarás + +- **.NET 6.0 o posterior** (el código también funciona en .NET Framework, pero .NET 6 es el punto óptimo). +- **Aspose.Pdf for .NET** – puedes obtenerlo de NuGet (`Install-Package Aspose.Pdf`). +- Un **PDF firmado** que quieras probar. Si no tienes uno, crea un documento firmado sencillo con Adobe Acrobat o cualquier firmador de PDF. + +> Consejo profesional: Mantén tus archivos PDF fuera de la carpeta raíz del proyecto; una ruta relativa como `./Samples/signed.pdf` funciona bien y evita commits accidentales de archivos confidenciales. + +## Implementación paso a paso + +A continuación dividimos la solución en bloques lógicos. Cada bloque tiene su propio encabezado H2—uno de ellos incluso contiene la palabra clave principal, cumpliendo la regla SEO. + +### ## Paso 1 – Instalar y Referenciar Aspose.Pdf + +Primero, agrega el paquete NuGet a tu proyecto: + +```powershell +dotnet add package Aspose.Pdf +``` + +O, si estás usando la Consola del Administrador de paquetes: + +```powershell +Install-Package Aspose.Pdf +``` + +Después de instalar el paquete, Visual Studio agregará automáticamente el espacio de nombres `using Aspose.Pdf;`. No se requiere manipular DLLs adicionales. + +### ## Paso 2 – Cargar el documento PDF firmado + +Ahora realmente abrimos el archivo. La instrucción `using` garantiza que el documento se libere correctamente, lo cual es especialmente importante para PDFs grandes. + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +> **Por qué es importante:** Cargar el documento nos da acceso al objeto `DigitalSignatureInfo`, el punto de entrada para todas las consultas relacionadas con firmas. + +### ## Paso 3 – Obtener la información de la firma digital + +Aspose.Pdf envuelve los detalles PKI de bajo nivel en una API amigable. Obtén la propiedad `DigitalSignatureInfo` y tendrás todo lo necesario para **comprobar la salud de la firma PDF**. + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +Si el PDF contiene múltiples firmas, `signatureInfo` las agrega, exponiendo propiedades como `Count`, `Certificates` y `IsCompromised`. Para un archivo con una sola firma, esas colecciones tendrán solo una entrada. + +### ## Paso 4 – Determinar si la firma está comprometida + +La bandera `IsCompromised` indica si el documento ha sido alterado **después** de ser firmado. Un valor `true` significa que el PDF está manipulado—exactamente lo que queremos **detectar PDF manipulados**. + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +Si necesitas **verificar la firma PDF** de forma más exhaustiva (p. ej., validación de la cadena de certificados), también puedes examinar `signatureInfo.Certificates` y llamar a `Validate()` en cada uno. Para la mayoría de los casos, `IsCompromised` es suficiente. + +### ## Paso 5 – Mostrar el resultado en la consola + +Finalmente, informa al usuario lo que sucedió. Imprimiremos un mensaje amigable y también devolveremos un código de salida apropiado para scripts de automatización. + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### Salida esperada + +``` +Signature compromised: False +``` + +Si manipulas deliberadamente el PDF (p. ej., añadiendo un carácter extra), la salida cambia a `True`. Ese es el momento en que sabes que la integridad del documento está rota. + +### ## Manejo de casos límite y errores comunes + +#### 1. Firmas múltiples + +Cuando un PDF tiene más de un firmante, `IsCompromised` refleja el estado *global*—si **cualquier** firma está rota, la bandera se vuelve `true`. Para identificar qué firmante está en falta: + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. Firma ausente + +Si el PDF no está firmado en absoluto, `signatureInfo.Count` será `0`. Debes protegerte contra una falsa sensación de seguridad: + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. Archivo PDF corrupto + +Un archivo corrupto lanza una `PdfException`. Envuelve la lógica de carga en un try‑catch para proporcionar un mensaje de error limpio: + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. Validación de certificado (Avanzado) + +Si necesitas asegurarte de que el certificado de firma sigue siendo válido (no revocado, dentro de su período de validez), puedes llamar a: + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +Este paso te lleva de una simple **comprobación de la firma PDF** a un flujo completo de **cómo verificar la firma PDF**. + +### ## Ejemplo completo funcional + +Juntando todo, aquí tienes el programa completo, listo para ejecutar: + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +Ejecuta el programa desde la línea de comandos: + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +Deberías ver un informe claro que indica si el PDF está intacto, qué firmante(s) están involucrados y si sus certificados siguen siendo confiables. + +## Visión general visual + +A continuación hay un diagrama rápido que ilustra el flujo desde **cargar el PDF** hasta **mostrar el resultado de la validación**. Es una referencia útil cuando estás esbozando la arquitectura de una canalización de procesamiento de documentos más grande. + +![diagrama del flujo de validación de firma digital de PDF](image.png "Diagrama que muestra Carga de PDF → DigitalSignatureInfo → Verificación de IsCompromised") + +*Texto alternativo: diagrama del flujo de validación de firma digital de PDF* + +## Conclusión + +Hemos cubierto una **solución completa de extremo a extremo para validar la firma digital de PDF** usando Aspose.Pdf en C#. Los puntos clave: + +- Cargar el PDF con `Document`. +- Obtener `DigitalSignatureInfo` y comprobar `IsCompromised` para **detectar PDF manipulados**. +- Manejar firmas múltiples, firmas ausentes y archivos corruptos de forma elegante. +- Opcionalmente validar el certificado de firma para una lista completa de **cómo verificar la firma PDF**. + +A partir de aquí puedes ampliar la lógica—almacenar los resultados de validación en una base de datos, rechazar cargas sin firma en una API web, o integrarlo con un sistema de gestión de documentos. Si tienes curiosidad por otras funciones de seguridad de PDF, investiga **comprobar marcas de tiempo de firmas PDF**, **añadir una nueva firma**, o **encriptar PDFs**. + +¿Tienes preguntas sobre casos límite, o quieres ver cómo **verificar la firma PDF** con una biblioteca diferente como iText 7? Deja un comentario abajo, y sigamos la conversación. ¡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/swedish/net/conversion-export/_index.md b/pdf/swedish/net/conversion-export/_index.md index 2dc154c3a..2d5e2af3d 100644 --- a/pdf/swedish/net/conversion-export/_index.md +++ b/pdf/swedish/net/conversion-export/_index.md @@ -186,7 +186,7 @@ Lär dig hur du konverterar ett PDF-dokument till en binäriserad TIFF-bild med Lär dig hur du konverterar PDF-filer till EPUB-format med Aspose.PDF för .NET. Följ den här steg-för-steg-guiden för att förbättra digital publicering och tillgänglighet till innehåll. ### [Hur man konverterar PDF till flersidig TIFF med Aspose.PDF .NET - Steg-för-steg-guide](./convert-pdf-to-multi-page-tiff-aspose-dotnet/) -Lär dig hur du konverterar PDF-filer till högkvalitativa flersidiga TIFF-bilder med Aspose.PDF för .NET. Följ den här steg-för-steg-guiden för enkel implementering i C#. +Lär dig hur du konverterar PDF-filer till högkvalitativa flersidiga TIFF-bilder med Aspose.PDF .NET. Följ den här steg-för-steg-guiden för enkel implementering i C#. ### [Hur man konverterar PDF till PostScript i C# med hjälp av Aspose.PDF: En omfattande guide](./convert-pdf-to-postscript-aspose-csharp/) Lär dig hur du konverterar PDF-filer till PostScript-format med Aspose.PDF för .NET med den här steg-för-steg-guiden. Perfekt för högkvalitativa utskriftsbehov. @@ -224,9 +224,27 @@ Bemästra PDF-till-HTML-konvertering med Aspose.PDF för .NET. Förbättra dokum ### [PDF till HTML-konvertering med Aspose.PDF för .NET](./pdf-to-html-conversion-aspose-dot-net/) En kodhandledning för Aspose.PDF Net +### [Spara PDF som HTML med Aspose – Komplett C#-guide](./save-pdf-as-html-with-aspose-c-guide/) +Lär dig hur du sparar PDF som HTML med Aspose i en komplett C#-guide. + +### [Spara PDF som HTML med C# – Komplett steg‑för‑steg‑guide](./save-pdf-as-html-with-c-complete-step-by-step-guide/) +Lär dig hur du sparar PDF som HTML med C# i en komplett steg‑för‑steg‑guide. + +### [PDF till HTML-konvertering med Aspose.PDF .NET: Spara bilder som externa PNG-filer](./pdf-to-html-conversion-external-png-aspose-pdf-net/) +Lär dig hur du konverterar PDF-dokument till HTML med externa PNG-bilder med Aspose.PDF för .NET. Den här guiden säkerställer layoutbevarande och optimering av webbprestanda. + +### [PDF till HTML-konvertering med Aspose.PDF .NET: En omfattande guide](./aspose-pdf-net-pdf-to-html-conversion/) +Bemästra PDF-till-HTML-konvertering med Aspose.PDF för .NET. Förbättra dokumenttillgänglighet och engagemang med anpassningsbara alternativ. + +### [PDF till HTML-konvertering med Aspose.PDF för .NET](./pdf-to-html-conversion-aspose-dot-net/) +En kodhandledning för Aspose.PDF Net + ### [PDF till TIFF-konvertering i .NET med Aspose.PDF: En steg-för-steg-guide](./pdf-to-tiff-conversion-aspose-pdf-net/) Lär dig hur du konverterar PDF-dokument till TIFF-bilder med Aspose.PDF för .NET. Bemästra anpassade färgdjup och avancerade bildbehandlingstekniker. +### [Konvertera PDF till PDF/X-1a, exportera sida som PNG och lägg till textstämpel](./convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/) +Lär dig hur du konverterar PDF till PDF/X-1a, exporterar en sida som PNG och lägger till en textstämpel med Aspose.PDF för .NET. + ## Ytterligare resurser - [Aspose.PDF för nätdokumentation](https://docs.aspose.com/pdf/net/) diff --git a/pdf/swedish/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/swedish/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..6fa256c06 --- /dev/null +++ b/pdf/swedish/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-03-29 +description: Konvertera PDF till PDF/X-1a och exportera PDF-sida som PNG i ett flöde + – lär dig också hur du lägger till textstämpling i PDF med Aspose.Pdf (C#). +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: sv +og_description: konvertera PDF till PDF/X-1a och exportera PDF-sida som PNG samtidigt + som du lägger till en textstämpel i PDF – komplett C#-guide med Aspose.Pdf. +og_title: konvertera pdf till pdf/x-1a, exportera sida png & lägg till textstämpel +tags: +- Aspose.Pdf +- C# +- PDF processing +title: konvertera pdf till pdf/x-1a, exportera sida som png & lägg till textstämpel +url: /sv/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# konvertera pdf till pdf/x-1a, exportera sida png & lägg till textstämpel – Komplett C#-guide + +Har du någonsin behövt **convert pdf to pdf/x-1a** men också vilja ha en snabb PNG‑förhandsgranskning av den första sidan och en anpassad textstämpel på samma dokument? Du är inte ensam. I många produktionsflöden—tänk tryck‑klara pre‑flighting eller automatiserad rapportgenerering—stöter du ofta på exakt den kombinationen av krav. + +I den här handledningen går vi igenom ett enda, sammanhängande arbetsflöde som gör tre saker i följd: **convert pdf to pdf/x-1a**, **export pdf page png**, och **add text stamp pdf**. Koden använder Aspose.Pdf‑biblioteket för .NET, så du får en professionell lösning utan att kämpa med låg‑nivå PDF‑internals. När du är klar har du ett körbart C#‑program som du kan släppa in i vilken konsolapp, Azure‑funktion eller CI‑steg som helst. + +> **Vad du får** – en komplett källfil, steg‑för‑steg‑förklaringar, tips för vanliga fallgropar och ett snabbt sätt att verifiera resultatet. + +## Förutsättningar + +- .NET 6.0 eller senare (API:et fungerar även med .NET Framework 4.x). +- Aspose.Pdf för .NET NuGet‑paket (`Aspose.Pdf`) – version 23.10 är aktuell vid skrivandet. +- En inmatnings‑PDF (`input.pdf`) och en ICC‑profilfil (`Coated_Fogra39L_VIGC_300.icc`) placerade i en mapp du kontrollerar. +- Grundläggande kunskap om C# och Visual Studio (eller din föredragna IDE). + +Om någon av dessa känns obekant, installera bara NuGet‑paketet med: + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +Låt oss nu dyka ner. + +## Steg 1: Ladda källdokumentet PDF + +Det första vi gör är att öppna PDF‑filen vi vill arbeta med. Aspose.Pdf:s `Document`‑klass representerar hela filen och laddar innehållet lazily, så du betalar ingen prestandapåverkan förrän du faktiskt berör sidorna. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*Varför detta är viktigt*: Att ladda dokumentet tidigt ger oss ett enda objekt att passera runt för konvertering, rendering och stämpling. Om du hoppar över den explicita laddningen och försöker arbeta på en icke‑existerande fil får du ett kryptiskt `FileNotFoundException` senare. + +## Steg 2: Konvertera dokumentet till PDF/X‑1a med en anpassad ICC‑profil + +PDF/X‑1a är de‑facto‑standarden för tryck‑klara PDF‑filer. Konverteringssteget låter dig också bädda in en **Output Intent** (ICC‑profilen) så att efterföljande RIP‑system vet exakt hur färger ska tolkas. + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*Proffstips*: Om du behöver striktare felhantering, ersätt `ConvertErrorAction.Delete` med `ConvertErrorAction.Throw`. På så sätt avbryts konverteringen vid det första efterlevnadsproblemet, vilket är praktiskt för automatiserade QA‑pipelines. + +## Steg 3: Exportera den första sidan som PNG medan du analyserar typsnitt + +En PNG‑förhandsgranskning krävs ofta för snabba visuella kontroller eller miniatyrgenerering. Genom att aktivera `AnalyzeFonts` ser Aspose till att inbäddade typsnitt rasteriseras korrekt, vilket undviker överraskningar med saknade tecken. + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +När detta har körts hittar du `page1.png` bredvid dina källfiler. Öppna den i någon bildvisare för att bekräfta att konverteringen ser korrekt ut. + +## Steg 4: Lägg till en textstämpel som automatiskt justerar sin teckenstorlek + +En **text stamp** är ett praktiskt sätt att vattenmärka eller kommentera en PDF utan att ändra de underliggande innehållsströmmarna. Genom att sätta `AutoAdjustFontSizeToFitStampRectangle` betyder det att biblioteket kommer att krympa eller förstora texten så att den aldrig överskrider den rektangel du definierar. + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*Varför auto‑storlek?* Om du senare ändrar stämpeltexten till något längre (t.ex. en dynamisk tidsstämpel) behöver du inte manuellt räkna om teckenstorlekar—stämpeln anpassar sig i farten. + +## Steg 5: Spara det uppdaterade PDF‑dokumentet + +Till sist skrivs allt tillbaka till disk. Du kan antingen skriva över originalfilen eller skapa en helt ny; exemplet nedan skapar `output.pdf`. + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +När sparandet är klart har du: + +1. En **PDF/X‑1a**‑kompatibel fil (`output.pdf`). +2. En **PNG‑förhandsgranskning** av den första sidan (`page1.png`). +3. En **textstämpel** som passar perfekt inom sin rektangel. + +### Snabb verifieringschecklista + +| ✅ Kontroll | Hur man verifierar | +|------------|--------------------| +| PDF/X‑1a‑kompatibilitet | Öppna `output.pdf` i Adobe Acrobat → *Print Production* → *Preflight* och välj “PDF/X‑1a:2001”. | +| PNG ser rätt ut | Öppna `page1.png` i Windows Photo Viewer eller någon bildredigerare. | +| Stämpel visas | Bläddra igenom `output.pdf` – texten “Auto‑size” bör vara centrerad på sida 1. | + +![konvertera pdf till pdf/x-1a förhandsgranskning](image.png "konvertera pdf till pdf/x-1a förhandsgranskning som visar stämplad sida") + +*Bild alt‑text*: **konvertera pdf till pdf/x-1a förhandsgranskning med auto‑size text stamp** – visar den slutgiltiga PDF‑filen efter alla steg. + +## Vanliga variationer & kantfall + +- **Flera sidor** – Om du behöver stämpla varje sida, loopa över `pdfDoc.Pages` och anropa `AddStamp` inuti loopen. +- **Annat utdataformat** – Ändra `PdfFormat.PDF_X_1A` till `PdfFormat.PDF_A_1B` för arkiverings‑PDF‑filer. +- **Högre upplösning PNG** – Sätt `Resolution = 600` i `RenderingOptions` för miniatyrer i tryckkvalitet. +- **Anpassat typsnitt för stämpeln** – Tilldela `autoSizeStamp.Font = FontRepository.FindFont("Arial")` innan du lägger till stämpeln. +- **Felhantering** – Omslut varje huvudsteg i en `try/catch` och logga `ConversionException` eller `FileNotFoundException` för enklare felsökning. + +## Fullt fungerande exempel (Klar att kopiera‑klistra in) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Setup paths + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Load the source document + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Convert to PDF/X‑1a (print‑ready) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Export first page as PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Add auto‑sizing text stamp (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/swedish/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..2d7fe0659 --- /dev/null +++ b/pdf/swedish/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-03-29 +description: Spara PDF som HTML med Aspose.PDF i C#. Lär dig hur du konverterar PDF + till HTML, utelämnar bilder och verifierar PDF‑signatur i en enda handledning. +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: sv +og_description: Spara PDF som HTML med Aspose.PDF i C#. Den här guiden visar hur du + konverterar PDF till HTML, hoppar över bilder och validerar PDF:s digitala signatur. +og_title: Spara PDF som HTML med Aspose – Komplett C#‑guide +tags: +- Aspose.PDF +- C# +- PDF processing +title: Spara PDF som HTML med Aspose – Komplett C#‑guide +url: /sv/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Spara PDF som HTML med Aspose – Komplett C#‑guide + +Har du någonsin undrat hur man **sparar PDF som HTML** utan att hämta in varje inbäddad bild? Kanske bygger du en lättviktig webb‑förhandsgranskning och den extra bild‑payloaden sänker sidans hastighet. Den goda nyheten är att du inte behöver skriva en egen parser—Aspose.PDF gör det tunga arbetet åt dig. I den här handledningen kommer vi att **konvertera PDF till HTML**, ta bort bilderna, och sedan **verifiera PDF‑signatur** för att säkerställa att dokumentet inte har manipulerats. + +Vi går igenom varje kodrad, förklarar *varför* varje inställning är viktig, och berör även edge‑cases som stora PDF‑filer eller saknade signaturer. I slutet har du ett färdigt C#‑konsolprogram som producerar en ren HTML‑fil och ger ett tydligt true/false‑resultat för den digitala signaturen. + +## Vad du kommer att lära dig + +- Ladda en PDF‑fil med Aspose.PDF. +- Använd `HtmlSaveOptions` för att **konvertera PDF till HTML** samtidigt som du utelämnar bilder. +- Spara den resulterande HTML‑filen till disk. +- Ställ in ett `PdfFileSignature`‑objekt för att **verifiera PDF‑signatur**. +- Tolka det booleska resultatet och hantera vanliga fallgropar. +- Bonus‑tips för prestanda och felsökning. + +### Förutsättningar + +- .NET 6.0 eller senare (koden fungerar också på .NET Framework 4.7+). +- Aspose.PDF for .NET NuGet‑paket (version 23.12 eller nyare). +- En signerad PDF (`input.pdf`) som innehåller en signatur med namnet “Sig1”. +- Grundläggande kunskap om C# och konsolapplikationer. + +> **Pro tip:** Om du ännu inte har installerat Aspose.PDF‑paketet, kör `dotnet add package Aspose.PDF` från din projektmapp. + +--- + +## Steg 1: Ladda käll‑PDF‑dokumentet + +Innan vi kan göra någonting behöver vi en in‑memory‑representation av PDF‑filen. Aspose.PDF:s `Document`‑klass läser filen och bygger ett träd av sidor, resurser och annotationer. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**Varför detta är viktigt:** Att ladda dokumentet en gång håller minnesanvändningen förutsägbar. Om du planerar att bearbeta många PDF‑filer i en loop, överväg att återanvända samma `Document`‑instans efter att ha anropat `pdfDocument.Dispose()`. + +## Steg 2: Konfigurera HTML‑spara‑alternativ – Hoppa över bilder + +Vi vill **spara PDF som HTML** men utan den tunga bilddatan. `HtmlSaveOptions` ger oss fin kontroll, och flaggan `SkipImages` instruerar Aspose att helt utelämna ``‑taggar. + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**Varför du kan vilja hoppa över bilder:** För förhandsgranskningsportaler eller mobil‑först‑designer räknas varje kilobyte. Att ta bort bilder undviker också licensfrågor om käll‑PDF‑filen innehåller upphovsrättsskyddad grafik. + +## Steg 3: Exportera PDF‑filen som en HTML‑fil utan bilder + +Nu skriver vi faktiskt HTML‑filen. Metoden `Save` respekterar de alternativ vi satte ovan. + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**Resultat du kommer att se:** En `.html`‑fil som innehåller den textuella innehållet, tabeller och vektorgrafik (om någon), men inga ``‑taggar. Öppna den i en webbläsare så bör du se en ren, bildfri återgivning av den ursprungliga PDF‑filen. + +## Steg 4: Förbered en signatur‑verifierare för samma dokument + +Aspose.PDF:s `PdfFileSignature`‑klass låter oss inspektera digitala signaturer som är inbäddade i PDF‑filen. Vi skapar en instans som pekar på samma `Document` som vi redan har laddat. + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**Obs om resurshantering:** `using`‑satsen säkerställer att verifieraren frigör eventuella inhemska handtag när vi är klara, vilket förhindrar fil‑lås‑problem på Windows. + +## Steg 5: Verifiera signaturen med namn “Sig1” med SHA‑3‑256 + +De flesta PDF‑filer använder SHA‑256 eller SHA‑1, men Aspose stödjer även den nyare SHA‑3‑familjen. Här begär vi explicit `Sha3_256`. Om signaturen saknas eller algoritmen inte matchar returnerar metoden `false`. + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Vad “false” kan betyda:** + +1. **Signature not found** – kanske PDF‑filen använder ett annat namn; lista signaturer med `signatureVerifier.GetSignatureNames()`. +2. **Algorithm mismatch** – PDF‑filen kan ha signerats med SHA‑256; prova `DigestHashAlgorithm.Sha256`. +3. **Document altered** – någon förändring efter signering ogiltigförklarar hash‑värdet, vilket resulterar i `false`. + +## Hantera vanliga edge‑cases + +### Stora PDF‑filer + +Om din käll‑PDF överstiger några hundra megabyte, överväg att aktivera **memory‑saving mode**: + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +Detta strömmar sidor på begäran och minskar RAM‑belastningen. + +### Saknad signatur + +När du är osäker på signaturens namn, enumerera dem: + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +Välj rätt namn från listan innan du anropar `VerifySignature`. + +### Webbläsarkompatibilitet + +Vissa webbläsare har problem med HTML som innehåller Aspose:s standard‑CSS. Att sätta `htmlSaveOptions.EmbedCss = true` (som visat tidigare) inbäddar stilarna, vilket gör filen mer portabel. + +## Fullt fungerande exempel + +Nedan är det kompletta, kopiera‑och‑klistra‑klara programmet som inkluderar alla steg, felhantering och valfri diagnostik. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Förväntad konsolutskrift** (sökvägarna kommer att skilja sig): + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +Om signaturen är ogiltig kommer den sista raden att läsa `Signature valid: False`. + +## Vanliga frågor + +**Q: Kan jag konvertera PDF till HTML *med* bilder?** +A: Absolut. Sätt bara `SkipImages = false` (eller utelämna egenskapen). Aspose kommer att bädda in varje bild som en separat fil i en undermapp bredvid HTML‑filen. + +**Q: Fungerar detta på Linux?** +A: Ja. Aspose.PDF är plattformsoberoende; se bara till att `YOUR_DIRECTORY`‑sökvägar använder framåtsnedstreck eller `Path.Combine`. + +**Q: Vad händer om jag behöver validera en PDF‑digital signatur med ett eget certifikat?** +A: Använd overloaden `PdfFileSignature.ValidateSignature` som accepterar ett `X509Certificate2`‑objekt. Den metoden returnerar också ett detaljerat `SignatureInfo` som du kan inspektera. + +**Q: Är `aspose convert pdf` begränsat till C#?** +A: Nej. Samma API finns för Java, Python och andra .NET‑språk. Begreppen—load, set options, save, verify—förblir desamma. + +## Slutsats + +Du vet nu exakt hur du **sparar PDF som HTML** med Aspose.PDF, tar bort onödiga bilder och **verifierar PDF‑signatur** i ett enda, strömlinjeformat C#‑program. Processen är enkel: ladda, konfigurera, exportera och validera. Med den valfria diagnostiken och hanteringen av edge‑cases kan du anpassa detta mönster för batch‑jobb, webbtjänster eller skrivbordsverktyg. + +Redo för nästa steg? Prova **convert PDF to HTML** medan du behåller bilder, eller experimentera med olika hash‑algoritmer för att **validate PDF digital signature** mot din egen PKI. Du kan också utforska Aspose:s PDF‑till‑DOCX‑konvertering eller slå ihop flera PDF‑filer innan export—varje är ett naturligt tillägg till arbetsflödet vi just byggt. + +Happy coding, and may your HTML previews stay lightweight and your signatures stay trustworthy! + +![save pdf as html example](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/swedish/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..2062950b5 --- /dev/null +++ b/pdf/swedish/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-03-29 +description: Spara PDF som HTML med C# och Aspose.PDF. Lär dig hur du infogar en sida + i PDF, lägger till en tom PDF‑sida och skapar en PKCS7‑fristående signatur i ett + flöde. +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: sv +og_description: Spara PDF som HTML i C# med Aspose.PDF. Den här guiden visar hur du + laddar PDF, infogar en sida, lägger till en tom sida, signerar med PKCS7 och exporterar + till HTML. +og_title: Spara PDF som HTML med C# – Fullständig programmeringshandledning +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: Spara PDF som HTML med C# – Komplett steg‑för‑steg‑guide +url: /sv/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Spara PDF som HTML med C# – Komplett steg‑för‑steg‑guide + +Har du någonsin behövt **spara PDF som HTML** men varit osäker på hur du behåller layouten intakt samtidigt som du justerar källdokumentet? Du är inte ensam—utvecklare jonglerar ofta med pagineringskorrigeringar, tomma sidor och digitala signaturer innan konvertering. I den här handledningen går vi igenom ett enhetligt arbetsflöde som gör exakt det, och vi lägger till hur man **infogar sida i PDF**, **lägger till tom PDF‑sida** och **skapar PKCS7 detached signature** på vägen. + +När du är klar med den här guiden har du ett färdigt C#‑program som laddar en befintlig PDF, omformar dess sidor, signerar den första sidan och slutligen exporterar allt till HTML med Unicode CMap‑prioritet. Inga lösa referenser, bara en självständig lösning som du kan lägga in i vilket .NET‑projekt som helst. + +## Vad du behöver + +- **Aspose.PDF for .NET** (senaste versionen, 23.x vid tidpunkten för skrivandet). +- **.NET 6.0** eller senare – koden kompileras även med .NET Framework 4.7, men .NET 6 ger bäst prestanda. +- En **certifikatfil** (`.pfx`) och dess lösenord för PKCS7‑signaturen. +- En inmatnings‑PDF (`input.pdf`) som du vill manipulera. + +Om du har dem kan vi hoppa rakt in i koden. Annars skaffar du dig en gratis 30‑dagars Aspose‑provversion från den officiella webbplatsen; API‑et är identiskt med den betalda versionen. + +--- + +## Steg 1 – Ladda PDF‑dokument i C# (Primär åtgärd) + +Det allra första är att läsa in PDF‑filen i minnet. Asposes `Document`‑klass sköter allt tungt arbete. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*Varför detta är viktigt:* Att ladda filen ger dig en förändringsbar objektmodell. Härifrån kan du **infoga sida i PDF**, lägga till tomma sidor eller applicera signaturer utan att röra den ursprungliga filen på disken. + +--- + +## Steg 2 – Infoga en sida och lägga till en tom PDF‑sida + +Ibland har käll‑PDF‑filen pagineringsartefakter—kanske en saknad sida eller en duplicerad. Nedan kopierar vi sida 2 direkt efter sida 1 och lägger sedan till en helt tom sida i slutet. + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*Proffstips:* `UpdatePagination()` räknar om sidnumren som visas i fot- eller sidhuvuden som genereras av Aspose. Att hoppa över detta steg kan lämna föråldrade nummer i den slutliga HTML‑filen. + +--- + +## Steg 3 – Skapa en PKCS7 detached signature (SHA‑512) + +En detached PKCS7‑signatur bevisar dokumentets integritet utan att bädda in signaturdata direkt i PDF‑innehållsströmmen. Vi använder ett certifikat lagrat i en PFX‑fil. + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*Varför SHA‑512?* Det ger en starkare hash än SHA‑256 samtidigt som det fortfarande är brett stödjat. Om du behöver följa äldre standarder, byt `Sha512` mot `Sha256`. + +--- + +## Steg 4 – Applicera den digitala signaturen på sida 1 med en synlig rektangel + +Vi placerar ett synligt signaturfält på den första sidan. Rektangeln definierar var signaturbilden (eller platshållaren) visas. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*Edge case:* Om målsidan redan innehåller ett formulärfält med samma namn, kommer API‑et att kasta ett undantag. Säkerställ unika fältnamn eller rensa befintliga fält innan du signerar. + +--- + +## Steg 5 – Konfigurera HTML‑sparalternativ för att prioritera Unicode CMap + +När du konverterar till HTML kan Aspose bädda in typsnitt som base‑64, använda delmängder eller förlita sig på Unicode CMaps. Att prioritera Unicode minskar filstorleken och förbättrar textsökbarhet. + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*Vad gör detta?* Det instruerar konverteraren att föredra Unicode CMaps framför anpassad typsnittsinbäddning när det är möjligt, vilket är idealiskt för flerspråkiga PDF‑filer. + +--- + +## Steg 6 – Spara det signerade dokumentet som HTML + +Till sist skriver du den bearbetade PDF‑filen som en HTML‑mapp (Aspose skapar en katalog med stödjande filer som CSS och bilder). + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +Om du öppnar `cmap.html` i en webbläsare kommer du att se den ursprungliga PDF‑layouten renderad som HTML, komplett med den synliga signaturbilden på sida 1. + +--- + +## Fullständigt fungerande exempel (Alla steg kombinerade) + +Nedan är det kompletta programmet som du kan kopiera‑och‑klistra in i en konsolapp. Det innehåller alla nödvändiga `using`‑direktiv och felhantering. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**Förväntat resultat:** +- `cmap.html` (huvud‑HTML‑filen) +- `cmap_files`‑mapp som innehåller CSS, bilder och teckensnittresurser. +- Den första sidan visar en synlig signaturruta på de koordinater du angav. + +--- + +## Vanliga frågor & edge cases + +| Fråga | Svar | +|----------|--------| +| *Kan jag använda ett självsignerat certifikat?* | Ja, Aspose.PDF accepterar vilken giltig PFX som helst. Kom bara ihåg att webbläsare kan flagga signaturen som opålitlig. | +| *Vad händer om jag behöver signera flera sidor?* | Skapa separata `PdfFileSignature`‑anrop för varje sida, eller använd en loop som uppdaterar `pageNumber`. | +| *Finns det ett sätt att bädda in signaturbilden istället för en rektangel?* | Tillhandahåll ett `SignatureAppearance`‑objekt med en bildström till `PdfFileSignature.Sign`. | +| *Min PDF har krypterat innehåll—kan jag fortfarande konvertera?* | Dekryptera den först med `pdfDoc.Decrypt("ownerPassword")`, kör sedan stegen. | +| *Kommer HTML att behålla hyperlänkarna från den ursprungliga PDF‑filen?* | Aspose bevarar länkanoteringar som standard. Om du ser saknade länkar, sätt `htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;` | + +--- + +## Avslutning + +Vi har just demonstrerat hur man **sparar PDF som HTML** samtidigt som man **infogar sida i PDF**, **lägger till tom PDF‑sida** och **skapar PKCS7 detached signature**—allt med C#. Arbetsflödet är linjärt, lätt att felsöka och fullt anpassningsbart för större projekt. + +Nästa steg kan du vilja utforska: + +- **Batch‑behandling** – loopa över en mapp med PDF‑filer och konvertera var och en. +- **Anpassad CSS** – justera `HtmlSaveOptions.CustomCss` för att matcha din webbplats stil. +- **Avancerade signaturer** – använd tidsstämplingstjänster eller LTV (Long‑Term Validation) för signering i efterlevnadsgrad. + +Prova dem, så får du en robust PDF‑till‑HTML‑pipeline som både är SEO‑vänlig och citeringsvärd för AI‑assistenter. Lycka till med kodningen! + +![Diagram som visar PDF laddad, sidor infogade, signatur applicerad och sedan HTML‑utdata](/images/save-pdf-as-html-workflow.png "spara pdf som html arbetsflöde") + +*Bildtext:* **diagram för spara pdf som html arbetsflöde** + +{{< /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 777d04f05..c64f197ff 100644 --- a/pdf/swedish/net/digital-signatures/_index.md +++ b/pdf/swedish/net/digital-signatures/_index.md @@ -59,6 +59,9 @@ Lär dig hur du laddar en PDF, konverterar den till PDF/X‑4 och listar befintl ### [Validera PDF-signatur med Aspose – Konvertera PDF till HTML](./validate-pdf-signature-with-aspose-convert-pdf-to-html/) Lär dig hur du validerar PDF-signaturer och konverterar PDF till HTML med Aspose.PDF för .NET. +### [Hur man signerar PDF och lägger till bilder – Komplett C#-guide](./how-to-sign-pdf-and-add-images-complete-c-guide/) +Lär dig hur du signerar PDF-filer och infogar bilder med en komplett C#-guide i Aspose.PDF. + ## Ytterligare resurser - [Aspose.PDF för nätdokumentation](https://docs.aspose.com/pdf/net/) diff --git a/pdf/swedish/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/swedish/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..2d3c69d32 --- /dev/null +++ b/pdf/swedish/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-03-29 +description: Hur man signerar en PDF med en digital signatur och lägger till en beskuren + bild i C#. Lär dig att lägga till digital signatur i PDF, beskära bild för PDF och + enkelt lägga till bild i PDF. +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: sv +og_description: Hur man signerar PDF med en digital signatur och bäddar in en beskuren + bild med Aspose.Pdf i C#. Följ den här guiden för en komplett lösning. +og_title: Hur man signerar PDF och lägger till bilder – Steg‑för‑steg C#‑handledning +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: Hur man signerar PDF och lägger till bilder – Komplett C#‑guide +url: /sv/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hur man signerar PDF och lägger till bilder – Komplett C#-guide + +Har du någonsin undrat **how to sign PDF** filer programatiskt samtidigt som du infogar en anpassad bild? Kanske bygger du ett godkännandeflöde och behöver en juridiskt bindande signatur *och* en miniatyr av signatarens foto på samma sida. Kort sagt vill du **add digital signature pdf** innehåll, beskära den bilden och sedan **add image to pdf** utan att anstränga dig. + +Den här handledningen guidar dig genom varje steg—från att ladda ett ECDSA PKCS#7‑certifikat till att beskära en JPEG och stämpla den på den signerade sidan. I slutet har du en enda, körbar C#‑fil som signerar sida 1, beskär ett foto till 400 × 400 px och placerar det på en exakt plats. Inga externa skript, ingen magi, bara tydlig kod och förklaringar. + +## Förutsättningar + +- .NET 6.0 eller senare (koden fungerar också med .NET Framework 4.7+) +- **Aspose.Pdf for .NET** NuGet‑paket (version 23.9 eller nyare) +- Ett ECDSA P‑256‑certifikat i PKCS#7 (`.pfx`)‑format och dess lösenord +- En JPEG‑bild du vill bädda in (t.ex. `photo.jpg`) + +> **Pro tip:** Håll din certifikatfil utanför versionskontrollen och skydda lösenordet med en hemlig hanterare. + +--- + +## Steg 1: Ställ in projektet och importerna + +Först, skapa en konsolapp (eller integrera detta i någon befintlig tjänst). Lägg till Aspose.Pdf‑referensen: + +```bash +dotnet add package Aspose.Pdf +``` + +Inkludera sedan de nödvändiga namnutrymmena: + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +Dessa `using`‑satser ger dig åtkomst till `Document`-, `Signature`- och `Rectangle`‑klasserna som vi kommer att behöva senare. + +## Steg 2: Ladda PDF‑filen och förbered signaturen + +Vi öppnar en befintlig PDF (`source.pdf`) och skapar ett **digital signature pdf**‑objekt som använder en PKCS#7‑detacherad signatur. Certifikatet är en ECDSA P‑256‑nyckel, som är allmänt accepterad för efterlevnad. + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**Varför detta är viktigt:** Att använda en detacherad PKCS#7‑signatur behåller det ursprungliga PDF‑innehållet intakt samtidigt som en kryptografisk hash bäddas in. Detta är branschstandardmetoden för juridiskt bindande PDF‑filer. + +## Steg 3: Applicera den digitala signaturen på en specifik sida + +Nu placerar vi det synliga signaturfältet på **page 1**. Rektangeln definierar var signaturrutan visas (koordinaterna är i punkter, där 1 tum = 72 punkter). + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +Om du inte behöver en synlig ruta, sätt `isVisible` till `false`. `signatureRect` kan justeras för att passa ditt dokumentlayout. + +## Steg 4: Öppna bildströmmen och definiera beskärningsområden + +Vi läser JPEG‑filen till en ström och specificerar en **source rectangle** som väljer de övre‑vänstra 400 × 400 pixlarna. Detta är **crop image for pdf**‑operationen. + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **Edge case:** Om din bild är mindre än 400 × 400, kommer beskärningen automatiskt att begränsas till bildens faktiska dimensioner—inget undantag kastas. + +## Steg 5: Definiera var den beskurna bilden ska visas + +Därefter ställer vi in **destination rectangle** på PDF‑sidan. I detta exempel placerar vi bilden vid (50, 50) med en storlek på 200 × 200 punkter (≈2,78 tum kvadrat). + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +Känn dig fri att experimentera: ändra X/Y‑koordinaterna för att flytta bilden, eller justera bredd/höjd för skalning. + +## Steg 6: Infoga den beskurna bilden på den signerade sidan + +Slutligen lägger vi till bilden på **page 1** (samma sida som nu bär signaturen). Den `AddImage`‑överladdning vi använder accepterar käll‑ och destinationsrektanglar, vilket effektivt utför beskärning och placering i ett anrop. + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +Bakom kulisserna extraherar Aspose.Pdf 400 × 400‑pixelregionen, skalar om den till 200 × 200 punkter och skriver in den i PDF‑innehållsströmmen. + +## Steg 7: Spara den signerade och bild‑förstärkta PDF‑filen + +Efter alla ändringar, spara dokumentet. Du kan skriva över originalet eller skriva till en ny fil. + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +När du öppnar `output_signed.pdf` i Adobe Acrobat eller någon PDF‑visare, kommer du att se: + +- Ett synligt signaturfält på de koordinater du angav. +- Den beskurna foton placerad vid (50, 50) på sida 1. +- Den digitala signaturen validerad (förutsatt att visaren litar på ditt certifikat). + +## Vanliga frågor (FAQ) + +| Question | Answer | +|----------|--------| +| **Kan jag signera en annan sida?** | Ändra argumentet `pageNumber` i `signature.Sign` till ett giltigt sidindex (1‑baserat). | +| **Vad händer om jag behöver flera signaturer?** | Skapa en ny `Signature`‑instans för varje sida eller plats, återanvänd samma `pkcsSignature` om samma certifikat gäller. | +| **Är bildbeskärning begränsad till rektanglar?** | Ja, Aspose.Pdf:s `AddImage` fungerar med rektangulära områden. För komplexa former måste du förbehandla bilden (t.ex. med System.Drawing) innan inbäddning. | +| **Hur gör jag signaturen osynlig?** | Sätt `isVisible` till `false` och utelämna `signatureRect`. Signaturen kommer fortfarande att vara kryptografiskt giltig. | +| **Vilka format kan jag bädda in förutom JPEG?** | PNG, BMP, GIF och TIFF stöds alla. Ändra bara filvägen och se till att strömmen läser rätt bytes. | + +## Fullt fungerande exempel + +Nedan är det kompletta, fristående programmet. Kopiera‑klistra in det i `Program.cs`, justera sökvägarna och kör. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**Förväntat resultat:** När du öppnar `output_signed.pdf` visas ett signaturfält (100 × 100 → 300 × 300 punkter) och en 200 × 200‑punkts bild härledd från det övre‑vänstra hörnet av `photo.jpg`. Signaturen valideras mot det medföljande ECDSA‑certifikatet. + +## Avslutning + +Vi har gått igenom **how to sign PDF** filer, hur man **add digital signature pdf** på en specifik sida, hur man **crop image for pdf**, och slutligen hur man **add image to pdf** med Aspose.Pdf i C#. Hela flödet—från att ladda certifikatet till att spara det slutgiltiga dokumentet—passar in i en enda, lättläst källfil. + +Om du är redo för nästa utmaning, överväg: + +- Att lägga till **multiple signatures** på olika sidor (använd konceptet “digital signature pdf page”). +- Att bädda in **QR codes** som länkar till verifieringstjänster. +- Att automatisera processen i ett ASP.NET Core‑API för dynamisk PDF‑generering. + +Kom ihåg att nyckeln till robust PDF‑automation är tydlig ansvarsfördelning: signaturhantering, bildbehandling och slutlig dokumentmontering. Lek med koordinaterna, byt bildformat eller experimentera med tidsstämpling—din arbetsflöde är nu fullt utbyggbart. + +Har du frågor, edge‑case‑scenarier eller ett coolt användningsfall att dela? Lämna en kommentar nedan, och lycka till med kodningen! + +{{< /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 e56088453..583f0f515 100644 --- a/pdf/swedish/net/programming-with-security-and-signatures/_index.md +++ b/pdf/swedish/net/programming-with-security-and-signatures/_index.md @@ -35,6 +35,7 @@ Handledningen ger dig en detaljerad översikt över metoder och tekniker för at | [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 man reparerar PDF-filer – Komplett C#-guide med Aspose.Pdf](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | Lär dig steg för steg hur du reparerar skadade PDF-filer med Aspose.PDF i C#. | +| [Validera PDF-digital signatur – Komplett C#-guide](./validate-pdf-digital-signature-complete-c-guide/) | Lär dig hur du validerar digitala signaturer i PDF-filer med Aspose.PDF för .NET i en komplett C#-guide. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/swedish/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/swedish/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..0c784293b --- /dev/null +++ b/pdf/swedish/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,262 @@ +--- +category: general +date: 2026-03-29 +description: Validera PDF‑digital signatur snabbt. Lär dig hur du verifierar PDF‑signatur, + kontrollerar PDF‑signaturens status och upptäcker manipulerade PDF‑filer med Aspose.Pdf + i C#. +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: sv +og_description: Validera digital PDF‑signatur i C#. Den här handledningen visar hur + du verifierar PDF‑signatur, kontrollerar signaturens integritet och upptäcker manipulerade + PDF‑filer med Aspose.Pdf. +og_title: Validera PDF-digital signatur – Komplett C#‑guide +tags: +- C# +- Aspose.Pdf +- PDF Security +title: Validera PDF-digital signatur – Komplett C#-guide +url: /sv/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Validera PDF-digital signatur – Komplett C#-guide + +Har du någonsin undrat **hur man verifierar en PDF-signatur** utan att rycka upp håret? Kanske fick du ett kontrakt, öppnade det och behövde vara 100 % säker på att det inte har ändrats. Den goda nyheten är att du inte behöver ett forensiskt laboratorium—bara några rader C# och Aspose.Pdf kan **validera PDF-digital signatur** på ett ögonblick. + +I den här handledningen går vi igenom allt du behöver veta: från att installera biblioteket till att tolka resultatet, och även hantera kantfall som flera signaturer eller en korrupt fil. I slutet kommer du att kunna **check PDF signature** status programatiskt och **detect tampered PDF** filer innan de orsakar problem. + +## Vad du behöver + +- **.NET 6.0 eller senare** (koden fungerar också på .NET Framework, men .NET 6 är den bästa versionen). +- **Aspose.Pdf for .NET** – du kan hämta det från NuGet (`Install-Package Aspose.Pdf`). +- En **signerad PDF** som du vill testa. Om du inte har en, skapa ett enkelt signerat dokument med Adobe Acrobat eller någon PDF‑signaturprogram. + +> Proffstips: Håll dina PDF‑filer utanför projektets rotmapp; en relativ sökväg som `./Samples/signed.pdf` fungerar bra och undviker oavsiktliga commit av konfidentiella filer. + +## Steg‑för‑steg-implementation + +Nedan delar vi upp lösningen i logiska delar. Varje del får sin egen H2‑rubrik—en av dem innehåller till och med huvudnyckelordet, vilket uppfyller SEO‑regeln. + +### ## Steg 1 – Installera och referera Aspose.Pdf + +Först, lägg till NuGet‑paketet i ditt projekt: + +```powershell +dotnet add package Aspose.Pdf +``` + +Eller, om du använder Package Manager Console: + +```powershell +Install-Package Aspose.Pdf +``` + +Efter att paketet har installerats kommer Visual Studio automatiskt att lägga till namnrymden `using Aspose.Pdf;`. Ingen extra DLL‑hantering behövs. + +### ## Steg 2 – Ladda det signerade PDF-dokumentet + +Nu öppnar vi faktiskt filen. `using`‑satsen säkerställer att dokumentet frigörs korrekt, vilket är särskilt viktigt för stora PDF‑filer. + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +**Varför detta är viktigt:** Att ladda dokumentet ger oss tillgång till `DigitalSignatureInfo`‑objektet, ingångspunkten för alla signatur‑relaterade frågor. + +### ## Steg 3 – Hämta digital signaturinformation + +Aspose.Pdf omsluter de lågnivå PKI‑detaljerna i ett användarvänligt API. Hämta egenskapen `DigitalSignatureInfo` så har du allt du behöver för att **check PDF signature** hälsa. + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +Om PDF‑filen innehåller flera signaturer, samlar `signatureInfo` dem, och exponerar egenskaper som `Count`, `Certificates` och `IsCompromised`. För en fil med en enda signatur kommer dessa samlingar bara ha ett element. + +### ## Steg 4 – Bestäm om signaturen är komprometterad + +`IsCompromised`‑flaggan visar om dokumentet har ändrats **efter** att det signerades. Ett `true`‑värde betyder att PDF‑filen är manipulerad—precis vad vi vill **detect tampered PDF**. + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +Om du behöver **verify PDF signature** mer grundligt (t.ex. validering av certifikatkedja), kan du också undersöka `signatureInfo.Certificates` och anropa `Validate()` på var och en. För de flesta fall räcker `IsCompromised`. + +### ## Steg 5 – Skriv ut resultatet till konsolen + +Till sist, låt användaren veta vad som hände. Vi skriver ut ett vänligt meddelande och returnerar även en lämplig avslutningskod för automatiseringsskript. + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### Förväntat utdata + +``` +Signature compromised: False +``` + +Om du medvetet manipulerar PDF‑filen (t.ex. lägger till ett felaktigt tecken) så blir utskriften `True`. Det är då du vet att dokumentets integritet är bruten. + +### ## Hantera kantfall och vanliga fallgropar + +#### 1. Flera signaturer + +När en PDF har mer än en signerare, reflekterar `IsCompromised` det *övergripande* tillståndet—om **någon** signatur är bruten blir flaggan `true`. För att identifiera vilken signerare som är felaktig: + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. Saknad signatur + +Om PDF‑filen inte är signerad alls, kommer `signatureInfo.Count` att vara `0`. Du bör skydda dig mot en falsk känsla av säkerhet: + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. Korrupt PDF‑fil + +En korrupt fil kastar ett `PdfException`. Omge laddningslogiken med en try‑catch för att ge ett tydligt felmeddelande: + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. Certifikatvalidering (Avancerat) + +Om du behöver säkerställa att signaturcertifikatet fortfarande är giltigt (inte återkallat, inom sin giltighetsperiod), kan du anropa: + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +Detta steg tar dig från en enkel **check PDF signature** till ett komplett **how to verify PDF signature**‑arbetsflöde. + +### ## Fullt fungerande exempel + +När vi sätter ihop allt, här är det kompletta, färdiga programmet: + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +Kör programmet från kommandoraden: + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +Du bör se en tydlig rapport som berättar om PDF‑filen är intakt, vilka signerare som är inblandade, och om deras certifikat fortfarande är pålitliga. + +## Visuell översikt + +Nedan är ett snabbt diagram som illustrerar flödet från **loading the PDF** till **outputting the validation result**. Det är en praktisk referens när du skissar arkitekturen för en större dokument‑behandlingspipeline. + +![validera pdf digital signatur arbetsflödesdiagram](image.png "Diagram som visar PDF‑laddning → DigitalSignatureInfo → IsCompromised‑kontroll") + +*Alt text: validera pdf digital signatur arbetsflödesdiagram* + +## Slutsats + +Vi har just gått igenom en **complete, end‑to‑end solution to validate PDF digital signature** med Aspose.Pdf i C#. De viktigaste slutsatserna: + +- Ladda PDF‑filen med `Document`. +- Hämta `DigitalSignatureInfo` och kontrollera `IsCompromised` för att **detect tampered PDF**. +- Hantera flera signaturer, saknade signaturer och korrupta filer på ett smidigt sätt. +- Validera eventuellt signaturcertifikatet för en komplett **how to verify PDF signature**‑checklista. + +Härifrån kan du utöka logiken—lagra valideringsresultat i en databas, avvisa osignerade uppladdningar i ett web‑API, eller integrera med ett dokumenthanteringssystem. Om du är nyfiken på andra PDF‑säkerhetsfunktioner, titta på **checking PDF signature timestamps**, **adding a new signature**, eller **encrypting PDFs**. + +Har du frågor om kantfall, eller vill du se hur man **verify PDF signature** med ett annat bibliotek som iText 7? Lämna en kommentar nedan, så fortsätter vi samtalet. Lycka till med kodningen! + +{{< /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/conversion-export/_index.md b/pdf/thai/net/conversion-export/_index.md index 7cdbff563..fc2a6233b 100644 --- a/pdf/thai/net/conversion-export/_index.md +++ b/pdf/thai/net/conversion-export/_index.md @@ -68,7 +68,7 @@ ### [แปลง PDF เป็น HTML ใน .NET โดยใช้ Aspose.PDF โดยไม่ต้องบันทึกภาพ](./convert-pdf-html-net-asposepdf-no-images/) เรียนรู้วิธีการแปลงไฟล์ PDF เป็น HTML โดยใช้ Aspose.PDF สำหรับ .NET โดยไม่ต้องบันทึกรูปภาพแยกต่างหาก รักษาความสมบูรณ์ของเค้าโครงด้วยคู่มือโดยละเอียดของเรา -### [แปลง PDF เป็น HTML ใน .NET ด้วยเส้นทางรูปภาพที่กำหนดเองโดยใช้ Aspose.PDF](./convert-pdf-html-custom-image-paths-dotnet/) +### [แปลง PDF เป็น HTML ใน .NET ด้วย Aspose.PDF โดยใช้เส้นทางรูปภาพที่กำหนดเอง](./convert-pdf-html-custom-image-paths-dotnet/) เรียนรู้วิธีการแปลงไฟล์ PDF เป็นรูปแบบ HTML โดยใช้ Aspose.PDF สำหรับ .NET และกำหนดเส้นทางรูปภาพอย่างมีประสิทธิภาพ เหมาะอย่างยิ่งสำหรับการผสานรวมเว็บ ### [แปลง PDF เป็น HTML ด้วย Aspose.PDF สำหรับ .NET: รักษาแบบอักษรในรูปแบบ TTF และ WOFF](./convert-pdf-html-aspose-net-truetype-woff/) @@ -224,9 +224,18 @@ ### [การแปลง PDF เป็น HTML ด้วย Aspose.PDF สำหรับ .NET](./pdf-to-html-conversion-aspose-dot-net/) บทช่วยสอนเกี่ยวกับโค้ดสำหรับ Aspose.PDF Net +### [บันทึก PDF เป็น HTML ด้วย Aspose – คู่มือ C# ฉบับสมบูรณ์](./save-pdf-as-html-with-aspose-c-guide/) +เรียนรู้วิธีบันทึกไฟล์ PDF เป็น HTML ด้วย Aspose.NET ด้วยคู่มือ C# ครบถ้วน + +### [บันทึก PDF เป็น HTML ด้วย C# – คู่มือขั้นตอนเต็ม](./save-pdf-as-html-with-c-complete-step-by-step-guide/) +เรียนรู้วิธีบันทึกไฟล์ PDF เป็น HTML ด้วย C# ผ่านคู่มือขั้นตอนเต็มที่ครอบคลุม + ### [การแปลง PDF เป็น TIFF ใน .NET โดยใช้ Aspose.PDF: คำแนะนำทีละขั้นตอน](./pdf-to-tiff-conversion-aspose-pdf-net/) เรียนรู้วิธีการแปลงเอกสาร PDF เป็นภาพ TIFF โดยใช้ Aspose.PDF สำหรับ .NET เชี่ยวชาญความลึกสีที่กำหนดเองและเทคนิคการประมวลผลภาพขั้นสูง +### [แปลง PDF เป็น PDF/X-1a, ส่งออกหน้าเป็น PNG และเพิ่มตราข้อความ](./convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/) +เรียนรู้วิธีแปลง PDF เป็น PDF/X‑1a ส่งออกหน้าเป็น PNG และเพิ่มตราข้อความด้วย Aspose.PDF สำหรับ .NET + ## แหล่งข้อมูลเพิ่มเติม - [Aspose.PDF สำหรับเอกสารประกอบ Net](https://docs.aspose.com/pdf/net/) diff --git a/pdf/thai/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/thai/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..9da8dc359 --- /dev/null +++ b/pdf/thai/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-03-29 +description: แปลง PDF เป็น PDF/X‑1a และส่งออกหน้าของ PDF เป็น PNG ในกระบวนการเดียว + – อีกทั้งเรียนรู้วิธีเพิ่มสแตมป์ข้อความลงใน PDF ด้วย Aspose.Pdf (C#) +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: th +og_description: แปลง PDF เป็น PDF/X-1a และส่งออกหน้า PDF เป็น PNG พร้อมเพิ่มตราประทับข้อความ + PDF – คู่มือ C# ฉบับสมบูรณ์ด้วย Aspose.Pdf. +og_title: แปลง PDF เป็น PDF/X‑1a, ส่งออกหน้าเป็น PNG และเพิ่มตราข้อความ +tags: +- Aspose.Pdf +- C# +- PDF processing +title: แปลง PDF เป็น PDF/X‑1a, ส่งออกหน้าเป็น PNG และเพิ่มตราประทับข้อความ +url: /th/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# แปลง pdf เป็น pdf/x-1a, ส่งออกหน้า png และเพิ่มตราข้อความ – คู่มือ C# ฉบับสมบูรณ์ + +เคยต้องการ **convert pdf to pdf/x-1a** แต่ยังต้องการตัวอย่าง PNG อย่างรวดเร็วของหน้าหนึ่งแรกและตราข้อความแบบกำหนดเองบนเอกสารเดียวกันหรือไม่? คุณไม่ได้เป็นคนเดียว ในหลายสายการผลิต—เช่นการตรวจสอบล่วงหน้าสำหรับการพิมพ์หรือการสร้างรายงานอัตโนมัติ—คุณมักจะเจอความต้องการแบบนี้พร้อมกัน + +ในบทเรียนนี้เราจะพาไปผ่านกระบวนการทำงานเดียวที่ต่อเนื่องกันสามขั้นตอน: **convert pdf to pdf/x-1a**, **export pdf page png**, และ **add text stamp pdf**. โค้ดใช้ไลบรารี Aspose.Pdf สำหรับ .NET ทำให้คุณได้โซลูชันระดับมืออาชีพโดยไม่ต้องยุ่งกับรายละเอียดระดับล่างของ PDF. เมื่อจบคุณจะมีโปรแกรม C# ที่สามารถรันได้และนำไปใส่ในแอปคอนโซล, Azure Function หรือขั้นตอน CI ใดก็ได้ + +> **สิ่งที่คุณจะได้** – ไฟล์ซอร์สเต็ม, คำอธิบายแบบขั้นตอน, เคล็ดลับสำหรับข้อผิดพลาดทั่วไป, และวิธีตรวจสอบผลลัพธ์อย่างรวดเร็ว + +## Prerequisites + +- .NET 6.0 หรือใหม่กว่า (API ยังทำงานกับ .NET Framework 4.x ด้วย) +- NuGet package ของ Aspose.Pdf for .NET (`Aspose.Pdf`) – เวอร์ชัน 23.10 เป็นเวอร์ชันล่าสุด ณ เวลาที่เขียน +- PDF อินพุต (`input.pdf`) และไฟล์ ICC profile (`Coated_Fogra39L_VIGC_300.icc`) ที่วางไว้ในโฟลเดอร์ที่คุณควบคุม +- ความคุ้นเคยพื้นฐานกับ C# และ Visual Studio (หรือ IDE ที่คุณชอบ) + +หากสิ่งใดข้างต้นยังไม่คุ้นเคย เพียงติดตั้ง NuGet package ด้วย: + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +ตอนนี้มาดำเนินการต่อกัน + +## Step 1: Load the source PDF document + +สิ่งแรกที่เราทำคือเปิด PDF ที่ต้องการทำงาน Aspose.Pdf’s `Document` class แทนไฟล์ทั้งหมดและโหลดเนื้อหาแบบ lazy ทำให้คุณไม่เสียประสิทธิภาพจนกว่าจะเข้าถึงหน้า + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*ทำไมเรื่องนี้สำคัญ*: การโหลดเอกสารตั้งแต่ต้นทำให้เรามีอ็อบเจกต์เดียวที่ส่งต่อไปยังขั้นตอนการแปลง, การเรนเดอร์, และการใส่ตรา หากข้ามการโหลดโดยตรงและพยายามทำงานกับไฟล์ที่ไม่มีอยู่ คุณจะเจอ `FileNotFoundException` ที่สื่อความหมายยากในภายหลัง + +## Step 2: Convert the document to PDF/X‑1a using a custom ICC profile + +PDF/X‑1a เป็นมาตรฐานสำคัญสำหรับ PDF ที่พร้อมพิมพ์ ขั้นตอนการแปลงยังช่วยฝัง **Output Intent** (ICC profile) เพื่อให้ RIP ด้านล่างรู้ว่าต้องตีความสีอย่างไร + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*เคล็ดลับ*: หากต้องการการจัดการข้อผิดพลาดที่เข้มงวดกว่า ให้เปลี่ยน `ConvertErrorAction.Delete` เป็น `ConvertErrorAction.Throw` วิธีนี้การแปลงจะหยุดเมื่อเจอปัญหาการปฏิบัติตามมาตรฐานครั้งแรก ซึ่งเหมาะกับสายงาน QA อัตโนมัติ + +## Step 3: Export the first page as a PNG while analyzing fonts + +ตัวอย่าง PNG มักจำเป็นสำหรับการตรวจสอบภาพอย่างรวดเร็วหรือการสร้าง thumbnail โดยเปิดใช้งาน `AnalyzeFonts` Aspose จะทำให้แน่ใจว่าแบบอักษรที่ฝังอยู่ถูกเรสเตอร์ไลซ์อย่างถูกต้อง หลีกเลี่ยงปัญหา glyph หาย + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +หลังจากรันเสร็จคุณจะพบ `page1.png` อยู่ข้างไฟล์ต้นฉบับ เปิดด้วยโปรแกรมดูรูปใดก็ได้เพื่อยืนยันว่าการแปลงดูดี + +## Step 4: Add a text stamp that automatically adjusts its font size + +**text stamp** เป็นวิธีที่สะดวกในการใส่น้ำลายนมหรือคอมเมนต์บน PDF โดยไม่ต้องแก้ไขสตรีมเนื้อหา ตั้งค่า `AutoAdjustFontSizeToFitStampRectangle` ทำให้ไลบรารีปรับขนาดข้อความให้พอดีกับสี่เหลี่ยมที่กำหนด + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*ทำไมต้องออโต้ไซส์?* หากคุณเปลี่ยนข้อความตราให้ยาวขึ้น (เช่น timestamp แบบไดนามิก) คุณไม่ต้องคำนวณขนาดฟอนต์ใหม่เอง—ตราจะปรับขนาดอัตโนมัติ + +## Step 5: Save the updated PDF document + +สุดท้ายให้บันทึกทุกอย่างกลับไปที่ดิสก์ คุณสามารถเขียนทับไฟล์เดิมหรือสร้างไฟล์ใหม่; ตัวอย่างด้านล่างสร้าง `output.pdf` + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +เมื่อการบันทึกเสร็จสิ้น คุณจะได้: + +1. ไฟล์ **PDF/X‑1a** ที่สอดคล้อง (`output.pdf`) +2. **PNG preview** ของหน้าหนึ่งแรก (`page1.png`) +3. **text stamp** ที่พอดีกับสี่เหลี่ยมอย่างสมบูรณ์ + +### Quick verification checklist + +| ✅ ตรวจสอบ | วิธีการตรวจสอบ | +|------------|----------------| +| ความสอดคล้อง PDF/X‑1a | เปิด `output.pdf` ใน Adobe Acrobat → *Print Production* → *Preflight* แล้วเลือก “PDF/X‑1a:2001” | +| PNG ดูถูกต้อง | เปิด `page1.png` ด้วย Windows Photo Viewer หรือโปรแกรมแก้ไขภาพใดก็ได้ | +| มีตราแสดง | เลื่อนดู `output.pdf` – คำว่า “Auto‑size” ควรอยู่กึ่งกลางหน้า 1 | + +![แปลง pdf เป็น pdf/x-1a preview](image.png "แปลง pdf เป็น pdf/x-1a preview แสดงหน้าที่มีตราข้อความออโต้ไซส์") + +*ข้อความแทนภาพ*: **แปลง pdf เป็น pdf/x-1a preview พร้อมตราข้อความออโต้ไซส์** – แสดง PDF สุดท้ายหลังทำทุกขั้นตอน + +## Common Variations & Edge Cases + +- **หลายหน้า** – หากต้องการใส่ตราทุกหน้า ให้วนลูป `pdfDoc.Pages` และเรียก `AddStamp` ภายในลูป +- **รูปแบบเอาต์พุตอื่น** – เปลี่ยน `PdfFormat.PDF_X_1A` เป็น `PdfFormat.PDF_A_1B` สำหรับ PDF เพื่อการเก็บถาวร +- **PNG ความละเอียดสูง** – ตั้งค่า `Resolution = 600` ใน `RenderingOptions` เพื่อให้ได้ thumbnail คุณภาพพิมพ์ +- **ฟอนต์กำหนดเองสำหรับตรา** – กำหนด `autoSizeStamp.Font = FontRepository.FindFont("Arial")` ก่อนเพิ่มตรา +- **การจัดการข้อผิดพลาด** – ห่อแต่ละขั้นตอนสำคัญด้วย `try/catch` และบันทึก `ConversionException` หรือ `FileNotFoundException` เพื่อการดีบักที่ง่ายขึ้น + +## Full Working Example (Copy‑Paste Ready) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Setup paths + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Load the source document + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Convert to PDF/X‑1a (print‑ready) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Export first page as PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Add auto‑sizing text stamp (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/thai/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..a2c5a4d12 --- /dev/null +++ b/pdf/thai/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-03-29 +description: บันทึก PDF เป็น HTML ด้วย Aspose.PDF ใน C# เรียนรู้วิธีแปลง PDF เป็น + HTML, ไม่รวมรูปภาพ, และตรวจสอบลายเซ็น PDF ในบทเรียนเดียว. +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: th +og_description: บันทึก PDF เป็น HTML ด้วย Aspose.PDF ใน C# คู่มือนี้จะแสดงวิธีแปลง + PDF เป็น HTML ข้ามรูปภาพ และตรวจสอบลายเซ็นดิจิทัลของ PDF. +og_title: บันทึก PDF เป็น HTML ด้วย Aspose – คู่มือ C# ฉบับสมบูรณ์ +tags: +- Aspose.PDF +- C# +- PDF processing +title: บันทึก PDF เป็น HTML ด้วย Aspose – คู่มือ C# ฉบับสมบูรณ์ +url: /th/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# บันทึก PDF เป็น HTML ด้วย Aspose – คู่มือ C# ฉบับสมบูรณ์ + +เคยสงสัยไหมว่า **save PDF as HTML** โดยไม่ต้องดึงรูปภาพที่ฝังอยู่ทั้งหมด? บางทีคุณอาจกำลังสร้างการแสดงตัวอย่างเว็บแบบเบาและข้อมูลรูปภาพเพิ่มเติมทำให้ความเร็วหน้าเว็บช้าลง. ข่าวดีคือคุณไม่จำเป็นต้องเขียนตัวแยกวิเคราะห์เอง—Aspose.PDF จะทำงานหนักให้คุณ. ในบทแนะนำนี้เราจะ **convert PDF to HTML**, ลบรูปภาพออก, และจากนั้น **verify PDF signature** เพื่อให้แน่ใจว่าเอกสารไม่ได้ถูกดัดแปลง. + +เราจะเดินผ่านทุกบรรทัดของโค้ด, อธิบาย *ทำไม* การตั้งค่าแต่ละอย่างถึงสำคัญ, และแม้กระทั่งพูดถึง edge‑cases เช่น PDF ขนาดใหญ่หรือไม่มีลายเซ็นต์. เมื่อจบคุณจะมีแอปคอนโซล C# ที่พร้อมรันซึ่งสร้างไฟล์ HTML ที่สะอาดและให้ผลลัพธ์ true/false ชัดเจนสำหรับลายเซ็นต์ดิจิทัล. + +## สิ่งที่คุณจะได้เรียนรู้ + +- โหลดไฟล์ PDF ด้วย Aspose.PDF. +- ใช้ `HtmlSaveOptions` เพื่อ **convert PDF to HTML** โดยละเว้นรูปภาพ. +- บันทึกไฟล์ HTML ที่ได้ลงดิสก์. +- ตั้งค่าอ็อบเจ็กต์ `PdfFileSignature` เพื่อ **verify PDF signature**. +- แปลผลลัพธ์แบบบูลีนและจัดการกับข้อผิดพลาดทั่วไป. +- เคล็ดลับพิเศษสำหรับประสิทธิภาพและการแก้ปัญหา. + +### ข้อกำหนดเบื้องต้น + +- .NET 6.0 หรือใหม่กว่า (โค้ดนี้ยังทำงานบน .NET Framework 4.7+ ด้วย) +- แพคเกจ NuGet Aspose.PDF for .NET (เวอร์ชัน 23.12 หรือใหม่กว่า) +- PDF ที่มีลายเซ็น (`input.pdf`) ที่มีลายเซ็นชื่อ “Sig1” +- ความคุ้นเคยพื้นฐานกับ C# และแอปพลิเคชันคอนโซล + +> **เคล็ดลับระดับมืออาชีพ:** หากคุณยังไม่ได้ติดตั้งแพคเกจ Aspose.PDF, ให้รัน `dotnet add package Aspose.PDF` จากโฟลเดอร์โปรเจกต์ของคุณ. + +--- + +## ขั้นตอนที่ 1: โหลดเอกสาร PDF ต้นฉบับ + +ก่อนที่เราจะทำอะไรได้, เราต้องมีการแสดงผล PDF ในหน่วยความจำ. คลาส `Document` ของ Aspose.PDF จะอ่านไฟล์และสร้างโครงสร้างต้นไม้ของหน้า, แหล่งข้อมูล, และคำอธิบายประกอบ. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**ทำไมสิ่งนี้ถึงสำคัญ:** การโหลดเอกสารเพียงครั้งเดียวทำให้การใช้หน่วยความจำคาดเดาได้. หากคุณวางแผนจะประมวลผล PDF จำนวนมากในลูป, ควรพิจารณาใช้ `Document` ตัวเดียวกันซ้ำหลังจากเรียก `pdfDocument.Dispose()`. + +## ขั้นตอนที่ 2: กำหนดค่า HTML Save Options – ข้ามรูปภาพ + +เราต้องการ **save PDF as HTML** แต่ไม่มีข้อมูลรูปภาพขนาดใหญ่. `HtmlSaveOptions` ให้การควบคุมแบบละเอียด, และแฟล็ก `SkipImages` บอกให้ Aspose ไม่ใส่แท็ก `` เลย. + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**ทำไมคุณอาจข้ามรูปภาพ:** สำหรับพอร์ทัลแสดงตัวอย่างหรือการออกแบบแบบ mobile‑first, ทุกกิโลไบต์มีค่า. การลบรูปภาพยังช่วยหลีกเลี่ยงปัญหาลิขสิทธิ์หาก PDF ต้นฉบับมีกราฟิกที่มีลิขสิทธิ์. + +## ขั้นตอนที่ 3: ส่งออก PDF เป็นไฟล์ HTML โดยไม่มีรูปภาพ + +ตอนนี้เราจะเขียนไฟล์ HTML จริง ๆ. เมธอด `Save` จะเคารพการตั้งค่าที่เรากำหนดไว้ข้างต้น. + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**ผลลัพธ์ที่คุณจะเห็น:** ไฟล์ `.html` ที่มีเนื้อหาข้อความ, ตาราง, และกราฟิกเวกเตอร์ (ถ้ามี), แต่ไม่มีแท็ก ``. เปิดในเบราว์เซอร์และคุณควรเห็นการแสดงผลที่สะอาดและไม่มีรูปภาพของ PDF ต้นฉบับ. + +## ขั้นตอนที่ 4: เตรียมตัวตรวจสอบลายเซ็นสำหรับเอกสารเดียวกัน + +คลาส `PdfFileSignature` ของ Aspose.PDF ให้เราตรวจสอบลายเซ็นดิจิทัลที่ฝังอยู่ใน PDF. เราจะสร้างอินสแตนซ์ที่ชี้ไปยัง `Document` เดียวกันที่เราโหลดไว้แล้ว. + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**หมายเหตุเกี่ยวกับการจัดการทรัพยากร:** คำสั่ง `using` ทำให้ตัวตรวจสอบปล่อยแฮนด์เนิลเนทีฟทั้งหมดเมื่อเสร็จ, ป้องกันปัญหาไฟล์ล็อกบน Windows. + +## ขั้นตอนที่ 5: ตรวจสอบลายเซ็นชื่อ “Sig1” ด้วย SHA‑3‑256 + +PDF ส่วนใหญ่ใช้ SHA‑256 หรือ SHA‑1, แต่ Aspose ยังรองรับตระกูล SHA‑3 ที่ใหม่กว่า. ที่นี่เราขอใช้ `Sha3_256` อย่างชัดเจน. หากลายเซ็นหายไปหรืออัลกอริทึมไม่ตรง, เมธอดจะคืนค่า `false`. + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**ความหมายของ “false” อาจเป็น:** + +1. **Signature not found** – อาจเป็นเพราะ PDF ใช้ชื่ออื่น; ให้แสดงรายการลายเซ็นด้วย `signatureVerifier.GetSignatureNames()`. +2. **Algorithm mismatch** – PDF อาจถูกเซ็นด้วย SHA‑256; ลองใช้ `DigestHashAlgorithm.Sha256`. +3. **Document altered** – การเปลี่ยนแปลงใด ๆ หลังจากเซ็นจะทำให้แฮชไม่ถูกต้อง, ส่งผลให้ได้ค่า `false`. + +## การจัดการ Edge Cases ที่พบบ่อย + +### PDF ขนาดใหญ่ + +หาก PDF ต้นฉบับของคุณเกินหลายร้อยเมกะไบต์, ควรเปิด **memory‑saving mode**: + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +วิธีนี้จะสตรีมหน้าตามความต้องการ, ลดการใช้ RAM. + +### ลายเซ็นหายไป + +เมื่อคุณไม่แน่ใจชื่อของลายเซ็น, ให้แสดงรายการทั้งหมด: + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +เลือกชื่อที่ถูกต้องจากรายการก่อนเรียก `VerifySignature`. + +### ความเข้ากันได้ของเบราว์เซอร์ + +บางเบราว์เซอร์อาจทำงานไม่ดีกับ HTML ที่มี CSS เริ่มต้นของ Aspose. การตั้งค่า `htmlSaveOptions.EmbedCss = true` (ตามที่แสดงก่อนหน้า) จะฝังสไตล์ลงในไฟล์, ทำให้ไฟล์พกพาได้ง่ายขึ้น. + +## ตัวอย่างทำงานเต็มรูปแบบ + +ด้านล่างเป็นโปรแกรมที่พร้อมคัดลอก‑วางครบถ้วน ซึ่งรวมทุกขั้นตอน, การจัดการข้อผิดพลาด, และการวินิจฉัยเสริม. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**ผลลัพธ์คอนโซลที่คาดหวัง** (เส้นทางอาจแตกต่าง): + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +หากลายเซ็นไม่ถูกต้อง, บรรทัดสุดท้ายจะแสดง `Signature valid: False`. + +## คำถามที่พบบ่อย + +**Q: Can I convert PDF to HTML *with* images?** +A: ได้เลย. เพียงตั้งค่า `SkipImages = false` (หรือไม่ระบุคุณสมบัตินี้). Aspose จะฝังแต่ละรูปภาพเป็นไฟล์แยกในโฟลเดอร์ย่อยข้างไฟล์ HTML. + +**Q: Does this work on Linux?** +A: ใช่. Aspose.PDF รองรับหลายแพลตฟอร์ม; เพียงตรวจสอบให้เส้นทาง `YOUR_DIRECTORY` ใช้เครื่องหมายทับหน้า (forward slashes) หรือ `Path.Combine`. + +**Q: What if I need to validate a PDF digital signature with a custom certificate?** +A: ใช้ overload ของ `PdfFileSignature.ValidateSignature` ที่รับอ็อบเจ็กต์ `X509Certificate2`. เมธอดนั้นจะคืนค่า `SignatureInfo` รายละเอียดที่คุณสามารถตรวจสอบได้. + +**Q: Is `aspose convert pdf` limited to C#?** +A: ไม่. API เดียวกันมีให้สำหรับ Java, Python, และภาษา .NET อื่น ๆ. แนวคิด—load, set options, save, verify—ยังคงเหมือนเดิม. + +## สรุป + +ตอนนี้คุณรู้วิธี **save PDF as HTML** ด้วย Aspose.PDF, ลบรูปภาพที่ไม่จำเป็น, และ **verify PDF signature** ในโปรแกรม C# เดียวที่เป็นระเบียบ. กระบวนการง่าย: load, configure, export, และ validate. ด้วยการวินิจฉัยเสริมและการจัดการ edge‑case ที่อธิบายไว้, คุณสามารถปรับใช้รูปแบบนี้กับงานแบตช์, เว็บเซอร์วิส, หรือยูทิลิตี้เดสก์ท็อป. + +พร้อมสำหรับขั้นตอนต่อไปหรือยัง? ลอง **convert PDF to HTML** พร้อมคงรูปภาพ, หรือทดลองอัลกอริทึมแฮชต่าง ๆ เพื่อ **validate PDF digital signature** กับ PKI ของคุณเอง. คุณอาจสำรวจการแปลง PDF เป็น DOCX ของ Aspose หรือรวม PDF หลายไฟล์ก่อนส่งออก—ทั้งหมดเป็นการต่อยอดธรรมชาติของเวิร์กโฟลว์ที่เราสร้าง. + +ขอให้เขียนโค้ดอย่างสนุกสนาน, และขอให้การแสดงตัวอย่าง HTML ของคุณเบาและลายเซ็นของคุณเชื่อถือได้! + +![save pdf as html example](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/thai/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..1823886b3 --- /dev/null +++ b/pdf/thai/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-03-29 +description: บันทึก PDF เป็น HTML ด้วย C# และ Aspose.PDF เรียนรู้วิธีแทรกหน้าใน PDF, + เพิ่มหน้าว่างใน PDF, และสร้างลายเซ็น PKCS7 แบบแยกส่วนในกระบวนการเดียว. +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: th +og_description: บันทึก PDF เป็น HTML ใน C# ด้วย Aspose.PDF คู่มือนี้แสดงวิธีโหลด PDF, + แทรกหน้า, เพิ่มหน้าว่าง, เซ็นด้วย PKCS7, และส่งออกเป็น HTML. +og_title: บันทึก PDF เป็น HTML ด้วย C# – บทเรียนการเขียนโปรแกรมเต็มรูปแบบ +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: บันทึก PDF เป็น HTML ด้วย C# – คู่มือขั้นตอนเต็มแบบละเอียด +url: /th/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# บันทึก PDF เป็น HTML ด้วย C# – คู่มือขั้นตอนเต็ม + +เคยต้องการ **save PDF as HTML** แต่ไม่แน่ใจว่าจะรักษาเลย์เอาต์ให้คงเดิมพร้อมกับปรับเอกสารต้นฉบับได้อย่างไรหรือไม่? คุณไม่ได้เป็นคนเดียว—นักพัฒนามักต้องจัดการกับการแก้ไขการแบ่งหน้า, หน้าเปล่า, และลายเซ็นดิจิทัลก่อนการแปลง ในบทเรียนนี้เราจะพาคุณผ่านขั้นตอนการทำงานแบบครบวงจรที่ทำเช่นนั้น และเราจะสอดแทรกวิธี **insert page into PDF**, **add blank PDF page**, และ **create PKCS7 detached signature** ไปด้วย + +โดยเมื่อจบคู่มือคุณจะได้โปรแกรม C# ที่พร้อมรัน ซึ่งโหลด PDF ที่มีอยู่แล้ว, ปรับหน้า, เซ็นหน้าที่ 1, แล้วส่งออกทั้งหมดเป็น HTML ด้วยการให้ความสำคัญกับ Unicode CMap ไม่เหลือการอ้างอิงที่ค้างไว้ เพียงโซลูชันอิสระที่คุณสามารถใส่ลงในโปรเจกต์ .NET ใดก็ได้ + +## สิ่งที่คุณต้องมี + +- **Aspose.PDF for .NET** (เวอร์ชันล่าสุด, 23.x ณ เวลาที่เขียน) +- **.NET 6.0** หรือใหม่กว่า – โค้ดยังคอมไพล์ได้กับ .NET Framework 4.7 ด้วยเช่นกัน แต่ .NET 6 ให้ประสิทธิภาพดีที่สุด +- ไฟล์ **certificate** (`.pfx`) พร้อมรหัสผ่านสำหรับลายเซ็น PKCS7 +- PDF อินพุต (`input.pdf`) ที่คุณต้องการจัดการ + +หากคุณมีทั้งหมดนี้แล้ว เราก็สามารถกระโดดเข้าสู่โค้ดได้ทันที หากยังไม่มี ให้ดาวน์โหลดรุ่นทดลองฟรี 30 วันจากเว็บไซต์อย่างเป็นทางการของ Aspose; API จะเหมือนกับเวอร์ชันที่ชำระเงิน + +--- + +## ขั้นตอน 1 – โหลดเอกสาร PDF ใน C# (การกระทำหลัก) + +สิ่งแรกที่ต้องทำคือโหลด PDF เข้าสู่หน่วยความจำ คลาส `Document` ของ Aspose ทำงานหนักทั้งหมดให้คุณ + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*ทำไมเรื่องนี้ถึงสำคัญ:* การโหลดไฟล์ทำให้คุณได้โมเดลอ็อบเจ็กต์ที่แก้ไขได้ จากจุดนี้คุณสามารถ **insert page into PDF**, เพิ่มหน้าเปล่า, หรือใส่ลายเซ็นโดยไม่ต้องแก้ไขไฟล์ต้นฉบับบนดิสก์ + +--- + +## ขั้นตอน 2 – แทรกหน้าและเพิ่มหน้า PDF เปล่า + +บางครั้ง PDF ต้นฉบับมีข้อบกพร่องเรื่องการแบ่งหน้า—อาจขาดหน้า หรือซ้ำหน้า ด้านล่างเราจะคัดลอกหน้า 2 ไปหลังหน้า 1 แล้วต่อท้ายด้วยหน้าเปล่าเต็มที่ท้ายเอกสาร + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*เคล็ดลับ:* `UpdatePagination()` จะคำนวณหมายเลขหน้าใหม่ที่ปรากฏในส่วนท้ายหรือส่วนหัวที่ Aspose สร้างขึ้น การข้ามขั้นตอนนี้อาจทำให้หมายเลขหน้าใน HTML สุดท้ายค้างอยู่ + +--- + +## ขั้นตอน 3 – สร้างลายเซ็น PKCS7 Detached (SHA‑512) + +ลายเซ็น PKCS7 แบบ detached ยืนยันความสมบูรณ์ของเอกสารโดยไม่ฝังข้อมูลลายเซ็นลงในสตรีมเนื้อหา PDF เราจะใช้ใบรับรองที่เก็บในไฟล์ PFX + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*ทำไมต้อง SHA‑512?* ให้ความปลอดภัยของแฮชที่แข็งแรงกว่า SHA‑256 แต่ยังคงได้รับการสนับสนุนอย่างกว้างขวาง หากต้องการปฏิบัติตามมาตรฐานเก่า ให้เปลี่ยน `Sha512` เป็น `Sha256` + +--- + +## ขั้นตอน 4 – ใส่ลายเซ็นดิจิทัลบนหน้า 1 ด้วยสี่เหลี่ยมมองเห็นได้ + +เราจะวางฟิลด์ลายเซ็นที่มองเห็นได้บนหน้าแรก สี่เหลี่ยมกำหนดตำแหน่งที่ภาพลายเซ็น (หรือตัวแทน) ปรากฏ + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*กรณีขอบ:* หากหน้าเป้าหมายมีฟิลด์ฟอร์มที่ใช้ชื่อเดียวกันอยู่แล้ว API จะโยนข้อยกเว้น ให้แน่ใจว่าชื่อฟิลด์ไม่ซ้ำหรือเคลียร์ฟิลด์ที่มีอยู่ก่อนทำการเซ็น + +--- + +## ขั้นตอน 5 – ตั้งค่า HTML Save Options ให้ให้ความสำคัญกับ Unicode CMap + +เมื่อแปลงเป็น HTML, Aspose สามารถฝังฟอนต์เป็น base‑64, ใช้ subset, หรือพึ่งพา Unicode CMaps การให้ความสำคัญกับ Unicode จะลดขนาดไฟล์และทำให้ค้นหาข้อความได้ดีขึ้น + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*สิ่งนี้ทำอะไร?* บอกตัวแปลงให้เลือกใช้ Unicode CMaps แทนการฝังฟอนต์แบบกำหนดเองเมื่อเป็นไปได้ ซึ่งเหมาะกับ PDF ที่มีหลายภาษา + +--- + +## ขั้นตอน 6 – บันทึกเอกสารที่เซ็นแล้วเป็น HTML + +สุดท้ายให้เขียน PDF ที่ผ่านการประมวลผลออกเป็นโฟลเดอร์ HTML (Aspose จะสร้างไดเรกทอรีที่มีไฟล์สนับสนุนเช่น CSS และรูปภาพ) + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +หากคุณเปิด `cmap.html` ในเบราว์เซอร์ คุณจะเห็นเลย์เอาต์ของ PDF ต้นฉบับแสดงเป็น HTML พร้อมภาพลายเซ็นที่มองเห็นได้บนหน้า 1 + +--- + +## ตัวอย่างทำงานเต็มรูปแบบ (รวมทุกขั้นตอน) + +ด้านล่างเป็นโปรแกรมครบชุดที่คุณสามารถคัดลอก‑วางลงในแอปคอนโซลได้ รวมถึง `using` directive ที่จำเป็นและการจัดการข้อผิดพลาด + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**ผลลัพธ์ที่คาดหวัง:** +- `cmap.html` (ไฟล์ HTML หลัก) +- โฟลเดอร์ `cmap_files` ที่บรรจุ CSS, รูปภาพ, และทรัพยากรฟอนต์ +- หน้าแรกแสดงกล่องลายเซ็นที่มองเห็นได้ตามพิกัดที่คุณตั้งค่า + +--- + +## คำถามที่พบบ่อย & กรณีขอบ + +| คำถาม | คำตอบ | +|----------|--------| +| *Can I use a self‑signed certificate?* | Yes, Aspose.PDF accepts any valid PFX. Just remember browsers may flag the signature as untrusted. | +| *What if I need to sign multiple pages?* | Create separate `PdfFileSignature` calls for each page, or use a loop that updates `pageNumber`. | +| *Is there a way to embed the signature image instead of a rectangle?* | Supply a `SignatureAppearance` object with an image stream to `PdfFileSignature.Sign`. | +| *My PDF has encrypted content—can I still convert?* | Decrypt it first using `pdfDoc.Decrypt("ownerPassword")`, then run the steps. | +| *Will the HTML keep hyperlinks from the original PDF?* | Aspose preserves link annotations by default. If you see missing links, set `htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;` | + +--- + +## สรุป + +เราได้สาธิตวิธี **save PDF as HTML** พร้อมกับ **insert page into PDF**, **add blank PDF page**, และ **create PKCS7 detached signature**—ทั้งหมดด้วย C# ขั้นตอนเป็นเชิงเส้น ง่ายต่อการดีบัก และปรับแต่งได้เต็มที่สำหรับโปรเจกต์ขนาดใหญ่ + +ต่อไปคุณอาจอยากสำรวจ: + +- **Batch processing** – วนลูปผ่านโฟลเดอร์ของ PDF แล้วแปลงแต่ละไฟล์ +- **Custom CSS** – ปรับ `HtmlSaveOptions.CustomCss` ให้ตรงกับสไตล์ของเว็บไซต์คุณ +- **Advanced signatures** – ใช้เซิร์ฟเวอร์ timestamp หรือ LTV (Long‑Term Validation) สำหรับการเซ็นที่ระดับการปฏิบัติตามมาตรฐาน + +ลองทำตามดู แล้วคุณจะได้ไพป์ไลน์ PDF‑to‑HTML ที่เป็นมิตรกับ SEO และเหมาะสำหรับการอ้างอิงโดยผู้ช่วย AI. Happy coding! + +--- + +![Diagram showing PDF loaded, pages inserted, signature applied, then HTML output](/images/save-pdf-as-html-workflow.png "workflow การบันทึก pdf เป็น html") + +*ข้อความแทนภาพ:* **แผนภาพแสดงการโหลด PDF, การแทรกหน้า, การใส่ลายเซ็น, แล้วส่งออกเป็น HTML** + +{{< /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 18d6010ae..3ddaad8f2 100644 --- a/pdf/thai/net/digital-signatures/_index.md +++ b/pdf/thai/net/digital-signatures/_index.md @@ -58,12 +58,16 @@ ### [ตรวจสอบลายเซ็น PDF ด้วย C# – คู่มือฉบับสมบูรณ์เพื่อยืนยันลายเซ็นดิจิทัล PDF](./verify-pdf-signature-in-c-complete-guide-to-validate-digital/) เรียนรู้วิธีตรวจสอบและยืนยันลายเซ็นดิจิทัลในไฟล์ PDF ด้วย C# อย่างละเอียดและปลอดภัย + ### [โหลดเอกสาร PDF ด้วย C# – แปลงเป็น PDF/X‑4 และแสดงรายการลายเซ็น](./load-pdf-document-c-convert-to-pdf-x-4-list-signatures/) เรียนรู้วิธีโหลดไฟล์ PDF ด้วย C#, แปลงเป็น PDF/X‑4 และดึงรายการลายเซ็นดิจิทัลจากเอกสาร ### [ตรวจสอบลายเซ็น PDF ด้วย Aspose – แปลง PDF เป็น HTML](./validate-pdf-signature-with-aspose-convert-pdf-to-html/) เรียนรู้วิธีตรวจสอบลายเซ็น PDF แล้วแปลงไฟล์เป็น HTML ด้วย Aspose.PDF สำหรับ .NET +### [วิธีลงนาม PDF และเพิ่มรูปภาพ – คู่มือ C# ฉบับสมบูรณ์](./how-to-sign-pdf-and-add-images-complete-c-guide/) +เรียนรู้วิธีลงนามไฟล์ PDF พร้อมแทรกรูปภาพโดยใช้ C# และ Aspose.PDF อย่างละเอียด + ## แหล่งข้อมูลเพิ่มเติม - [Aspose.PDF สำหรับเอกสารประกอบ Net](https://docs.aspose.com/pdf/net/) diff --git a/pdf/thai/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/thai/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..65af487c4 --- /dev/null +++ b/pdf/thai/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,246 @@ +--- +category: general +date: 2026-03-29 +description: วิธีลงนาม PDF ด้วยลายเซ็นดิจิทัลและเพิ่มรูปภาพที่ตัดครอบใน C#. เรียนรู้การเพิ่มลายเซ็นดิจิทัลใน + PDF, การตัดรูปภาพสำหรับ PDF, และการเพิ่มรูปภาพลงใน PDF อย่างง่าย. +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: th +og_description: วิธีลงนาม PDF ด้วยลายเซ็นดิจิทัลและฝังภาพที่ตัดขนาดโดยใช้ Aspose.Pdf + ใน C# ปฏิบัติตามคู่มือนี้เพื่อรับโซลูชันที่ครบถ้วน +og_title: วิธีลงนาม PDF และเพิ่มรูปภาพ – คู่มือ C# ทีละขั้นตอน +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: วิธีลงนาม PDF และเพิ่มรูปภาพ – คู่มือ C# ฉบับสมบูรณ์ +url: /th/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีการเซ็น PDF และเพิ่มรูปภาพ – คู่มือ C# ฉบับสมบูรณ์ + +เคยสงสัย **วิธีเซ็น PDF** ด้วยโปรแกรมพร้อมแทรกรูปภาพที่กำหนดเองหรือไม่? บางทีคุณอาจกำลังสร้าง workflow การอนุมัติและต้องการลายเซ็นที่มีผลทางกฎหมาย *และ* รูปภาพย่อของผู้เซ็นบนหน้าเดียวกัน สรุปคือคุณต้องการ **เพิ่ม digital signature pdf** ลงในไฟล์, ครอบรูปภาพนั้น, แล้ว **add image to pdf** อย่างง่ายดายโดยไม่ต้องยุ่งยาก + +บทเรียนนี้จะพาคุณผ่านทุกขั้นตอน — ตั้งแต่การโหลดใบรับรอง ECDSA PKCS#7 ไปจนถึงการครอบ JPEG แล้วสแตมป์ลงบนหน้าที่เซ็นแล้ว สุดท้ายคุณจะได้ไฟล์ C# เดียวที่ทำงานได้ซึ่งเซ็นหน้า 1, ครอบรูปเป็น 400 × 400 px, และวางไว้ที่ตำแหน่งที่กำหนด ไม่ต้องใช้สคริปต์ภายนอก ไม่ต้องใช้เวทมนตร์ เพียงโค้ดและคำอธิบายที่ชัดเจน + +## ข้อกำหนดเบื้องต้น + +- .NET 6.0 หรือใหม่กว่า (โค้ดนี้ยังทำงานกับ .NET Framework 4.7+ ด้วย) +- **Aspose.Pdf for .NET** NuGet package (เวอร์ชัน 23.9 หรือใหม่กว่า) +- ใบรับรอง ECDSA P‑256 ในรูปแบบ PKCS#7 (`.pfx`) พร้อมรหัสผ่าน +- รูป JPEG ที่ต้องการฝัง (เช่น `photo.jpg`) + +> **เคล็ดลับ:** เก็บไฟล์ใบรับรองไว้ไกลจาก source control และปกป้องรหัสผ่านด้วย secret manager + +--- + +## ขั้นตอน 1: ตั้งค่าโปรเจกต์และนำเข้าไลบรารี + +แรกเริ่มให้สร้าง console app (หรือผสานเข้ากับ service ที่มีอยู่) แล้วเพิ่มการอ้างอิง Aspose.Pdf: + +```bash +dotnet add package Aspose.Pdf +``` + +จากนั้นให้เพิ่ม namespace ที่จำเป็น: + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +คำสั่ง `using` เหล่านี้ทำให้คุณเข้าถึงคลาส `Document`, `Signature`, และ `Rectangle` ที่เราจะใช้ต่อไป + +## ขั้นตอน 2: โหลด PDF และเตรียมลายเซ็นดิจิทัล + +เราจะเปิด PDF ที่มีอยู่ (`source.pdf`) แล้วสร้างอ็อบเจกต์ **digital signature pdf** ที่ใช้ PKCS#7 แบบ detached ใบรับรองเป็นคีย์ ECDSA P‑256 ซึ่งเป็นคีย์ที่ได้รับการยอมรับอย่างกว้างขวางสำหรับการปฏิบัติตามมาตรฐาน + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**ทำไมต้องเป็นแบบนี้:** การใช้ detached PKCS#7 signature จะทำให้เนื้อหา PDF ดั้งเดิมไม่ถูกแก้ไขขณะฝังแฮชเชิงคริปโต ซึ่งเป็นวิธีมาตรฐานอุตสาหกรรมสำหรับ PDF ที่มีผลผูกพันทางกฎหมาย + +## ขั้นตอน 3: ใส่ลายเซ็นดิจิทัลลงบนหน้าเฉพาะ + +ต่อไปเราจะวางฟิลด์ลายเซ็นที่มองเห็นได้บน **หน้า 1** โดยกำหนด `Rectangle` เพื่อระบุตำแหน่งกล่องลายเซ็น (พิกัดเป็น points, 1 inch = 72 points) + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +หากไม่ต้องการกล่องที่มองเห็นได้ ให้ตั้งค่า `isVisible` เป็น `false` ส่วน `signatureRect` สามารถปรับให้ตรงกับเลเอาต์ของเอกสารของคุณได้ + +## ขั้นตอน 4: เปิดสตรีมรูปภาพและกำหนดพื้นที่ครอบ + +เราจะอ่านไฟล์ JPEG เข้าเป็นสตรีมและระบุ **source rectangle** ที่เลือกส่วนบน‑ซ้ายขนาด 400 × 400 พิกเซล นี่คือขั้นตอน **crop image for pdf** + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **กรณีขอบ:** หากรูปของคุณมีขนาดเล็กกว่า 400 × 400 พิกเซล การครอบจะถูกจำกัดให้เท่ากับขนาดจริงของรูปโดยอัตโนมัติ — จะไม่มี exception เกิดขึ้น + +## ขั้นตอน 5: กำหนดตำแหน่งที่ต้องการให้รูปที่ครอบแสดง + +ต่อไปให้ตั้ง **destination rectangle** บนหน้า PDF ตัวอย่างนี้เราวางรูปที่ (50, 50) ขนาด 200 × 200 points (≈2.78 inches สี่เหลี่ยม) + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +คุณสามารถทดลองเปลี่ยนค่า X/Y เพื่อย้ายรูป หรือปรับความกว้าง/ความสูงเพื่อสเกลได้ตามต้องการ + +## ขั้นตอน 6: แทรกรูปที่ครอบลงบนหน้าที่เซ็นแล้ว + +สุดท้ายเราจะเพิ่มรูปลงบน **หน้า 1** (หน้าที่มีลายเซ็นอยู่) โดยใช้ overload ของ `AddImage` ที่รับ source และ destination rectangles ทำให้การครอบและวางรูปเสร็จในคำสั่งเดียว + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +ภายใน Aspose.Pdf จะดึงส่วน 400 × 400 พิกเซล, ปรับสเกลเป็น 200 × 200 points, แล้วเขียนลงใน stream ของ PDF + +## ขั้นตอน 7: บันทึก PDF ที่เซ็นและเพิ่มรูปภาพแล้ว + +หลังจากทำการแก้ไขทั้งหมดแล้วให้บันทึกเอกสาร คุณสามารถเขียนทับไฟล์เดิมหรือบันทึกเป็นไฟล์ใหม่ได้ + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +เมื่อเปิด `output_signed.pdf` ด้วย Adobe Acrobat หรือโปรแกรมดู PDF ใด ๆ คุณจะเห็น: + +- ฟิลด์ลายเซ็นที่มองเห็นได้ตามพิกัดที่กำหนด +- รูปที่ครอบแล้ววางที่ (50, 50) บนหน้า 1 +- ลายเซ็นดิจิทัลผ่านการตรวจสอบ (หาก viewer เชื่อถือใบรับรองของคุณ) + +--- + +## คำถามที่พบบ่อย (FAQ) + +| Question | Answer | +|----------|--------| +| **Can I sign a different page?** | เปลี่ยนค่า `pageNumber` ใน `signature.Sign` ให้เป็นหมายเลขหน้าที่ต้องการ (นับจาก 1) | +| **What if I need multiple signatures?** | สร้างอินสแตนซ์ `Signature` ใหม่สำหรับแต่ละหน้า หรือแต่ละตำแหน่ง โดยใช้ `pkcsSignature` เดียวกันหากใช้ใบรับรองเดียวกัน | +| **Is the image cropping limited to rectangles?** | ใช่, `AddImage` ของ Aspose.Pdf ทำงานกับพื้นที่สี่เหลี่ยมเท่านั้น หากต้องการรูปร่างซับซ้อนต้องทำการประมวลผลรูปล่วงหน้า (เช่น ใช้ System.Drawing) ก่อนฝัง | +| **How do I make the signature invisible?** | ตั้ง `isVisible` เป็น `false` และไม่ต้องระบุ `signatureRect` ลายเซ็นจะยังคงมีความถูกต้องเชิงคริปโต | +| **What formats can I embed besides JPEG?** | รองรับ PNG, BMP, GIF, และ TIFF ทั้งหมด เพียงเปลี่ยนเส้นทางไฟล์และให้สตรีมอ่านไบต์ที่ถูกต้อง | + +--- + +## ตัวอย่างทำงานเต็มรูปแบบ + +ด้านล่างเป็นโปรแกรมที่สมบูรณ์และเป็นอิสระ คัดลอก‑วางลงใน `Program.cs` ปรับเส้นทางไฟล์ตามต้องการแล้วรัน + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**ผลลัพธ์ที่คาดหวัง:** เปิด `output_signed.pdf` จะเห็นฟิลด์ลายเซ็น (100 × 100 → 300 × 300 points) และรูปขนาด 200 × 200 points ที่ได้จากมุมบน‑ซ้ายของ `photo.jpg` ลายเซ็นตรวจสอบได้ด้วยใบรับรอง ECDSA ที่ให้ไว้ + +--- + +## สรุป + +เราได้ครอบคลุม **วิธีเซ็น PDF** ไฟล์, **เพิ่ม digital signature pdf** บนหน้าเฉพาะ, **crop image for pdf**, และสุดท้าย **add image to pdf** ด้วย Aspose.Pdf ใน C# ทั้งกระบวนการ — ตั้งแต่การโหลดใบรับรองจนถึงการบันทึกเอกสารสุดท้าย — อยู่ในไฟล์ซอร์สเดียวที่อ่านง่าย + +หากพร้อมรับความท้าทายต่อไป ลองพิจารณา: + +- เพิ่ม **หลายลายเซ็น** บนหลายหน้า (ใช้แนวคิด “digital signature pdf page”) +- ฝัง **QR code** ที่ลิงก์ไปยังบริการตรวจสอบ +- ทำให้กระบวนการอัตโนมัติใน ASP.NET Core API เพื่อสร้าง PDF แบบ on‑the‑fly + +จำไว้ว่า กุญแจสู่การทำ PDF Automation ที่แข็งแรงคือการแยกความรับผิดชอบอย่างชัดเจน: การจัดการลายเซ็น, การประมวลผลรูปภาพ, และการประกอบเอกสารสุดท้าย เล่นกับพิกัด, สลับรูปแบบไฟล์, หรือทดลองเพิ่ม timestamp — workflow ของคุณพร้อมขยายต่อได้แล้ว + +มีคำถาม, กรณีขอบ, หรือกรณีใช้งานที่น่าสนใจ? แสดงความคิดเห็นด้านล่าง แล้วขอให้สนุกกับการเขียนโค้ด! + +{{< /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 47630367a..8ace32d50 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,7 @@ | [ลงนามด้วยสมาร์ทการ์ดโดยใช้ลายเซ็นไฟล์ 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# ฉบับสมบูรณ์](./validate-pdf-digital-signature-complete-c-guide/) | เรียนรู้วิธีตรวจสอบลายเซ็นดิจิทัลของไฟล์ PDF ด้วย Aspose.PDF สำหรับ .NET ผ่านคู่มือ C# อย่างละเอียด - [วิธีซ่อมไฟล์ PDF – คู่มือ C# ฉบับสมบูรณ์กับ Aspose.Pdf](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | เรียนรู้วิธีซ่อมไฟล์ PDF ที่เสียหายด้วย Aspose.PDF สำหรับ .NET ผ่านขั้นตอนการเขียนโปรแกรม C# อย่างละเอียด {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/thai/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/thai/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..15a4c9a1f --- /dev/null +++ b/pdf/thai/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,260 @@ +--- +category: general +date: 2026-03-29 +description: ตรวจสอบลายเซ็นดิจิทัลของ PDF อย่างรวดเร็ว เรียนรู้วิธีตรวจสอบลายเซ็น + PDF ตรวจสอบสถานะลายเซ็น PDF และตรวจจับ PDF ที่ถูกดัดแปลงด้วย Aspose.Pdf ใน C# +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: th +og_description: ตรวจสอบลายเซ็นดิจิทัลของ PDF ใน C#. บทเรียนนี้แสดงวิธียืนยันลายเซ็น + PDF, ตรวจสอบความสมบูรณ์ของลายเซ็น PDF, และตรวจจับ PDF ที่ถูกดัดแปลงโดยใช้ Aspose.Pdf. +og_title: ตรวจสอบลายเซ็นดิจิทัล PDF – คู่มือ C# ฉบับสมบูรณ์ +tags: +- C# +- Aspose.Pdf +- PDF Security +title: ตรวจสอบลายเซ็นดิจิทัล PDF – คู่มือ C# ฉบับสมบูรณ์ +url: /th/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# ตรวจสอบลายเซ็นดิจิทัล PDF – คู่มือ C# ฉบับสมบูรณ์ + +เคยสงสัย **วิธีตรวจสอบลายเซ็น PDF** โดยไม่ต้องบิดผมไหม? บางทีคุณอาจได้รับสัญญา เปิดไฟล์แล้วต้องการมั่นใจ 100 % ว่าไฟล์ไม่ได้ถูกแก้ไข ข่าวดีคือคุณไม่ต้องไปหาห้องปฏิบัติการฟอเรนซิก—แค่ไม่กี่บรรทัด C# และ Aspose.Pdf ก็สามารถ **ตรวจสอบลายเซ็นดิจิทัล PDF** ได้อย่างรวดเร็ว + +ในบทเรียนนี้เราจะพาคุณผ่านทุกอย่างที่ต้องรู้: ตั้งแต่การติดตั้งไลบรารีจนถึงการตีความผลลัพธ์ รวมถึงการจัดการกรณีขอบเช่นลายเซ็นหลายอันหรือไฟล์เสียหาย สุดท้ายคุณจะสามารถ **ตรวจสอบสถานะลายเซ็น PDF** แบบโปรแกรมมิ่งและ **ตรวจจับ PDF ที่ถูกดัดแปลง** ก่อนที่มันจะสร้างปัญหา + +## สิ่งที่คุณต้องมี + +- **.NET 6.0 หรือใหม่กว่า** (โค้ดทำงานบน .NET Framework ได้เช่นกัน แต่ .NET 6 คือจุดที่เหมาะที่สุด) +- **Aspose.Pdf for .NET** – สามารถดาวน์โหลดจาก NuGet (`Install-Package Aspose.Pdf`) +- **PDF ที่ลงลายเซ็น** ที่คุณต้องการทดสอบ หากไม่มีสามารถสร้างเอกสารลงลายเซ็นง่าย ๆ ด้วย Adobe Acrobat หรือเครื่องมือใด ๆ + +> เคล็ดลับ: อย่าเก็บไฟล์ PDF ไว้ในโฟลเดอร์รากของโปรเจกต์; ใช้เส้นทางสัมพันธ์เช่น `./Samples/signed.pdf` จะช่วยหลีกเลี่ยงการคอมมิตไฟล์ที่เป็นความลับโดยบังเอิญ + +## การทำตามขั้นตอนอย่างละเอียด + +ด้านล่างเราจะแบ่งโซลูชันออกเป็นส่วน ๆ แต่ละส่วนจะมีหัวข้อ H2 ของตนเอง—หนึ่งในนั้นยังมีคีย์เวิร์ดหลักเพื่อให้สอดคล้องกับกฎ SEO + +### ## ขั้นตอนที่ 1 – ติดตั้งและอ้างอิง Aspose.Pdf + +แรกเริ่มให้เพิ่มแพ็กเกจ NuGet ลงในโปรเจกต์ของคุณ: + +```powershell +dotnet add package Aspose.Pdf +``` + +หรือถ้าคุณใช้ Package Manager Console: + +```powershell +Install-Package Aspose.Pdf +``` + +หลังจากติดตั้งแพ็กเกจแล้ว Visual Studio จะเพิ่ม `using Aspose.Pdf;` ให้โดยอัตโนมัติ ไม่ต้องจัดการ DLL เพิ่มเติม + +### ## ขั้นตอนที่ 2 – โหลดเอกสาร PDF ที่ลงลายเซ็น + +ต่อไปเราจะเปิดไฟล์จริง `using` statement จะทำให้แน่ใจว่าเอกสารถูกปล่อยทรัพยากรอย่างถูกต้อง ซึ่งสำคัญมากสำหรับ PDF ขนาดใหญ่ + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +> **ทำไมจึงสำคัญ:** การโหลดเอกสารทำให้เราสามารถเข้าถึงอ็อบเจกต์ `DigitalSignatureInfo` ซึ่งเป็นจุดเริ่มต้นของการสอบถามข้อมูลลายเซ็นทั้งหมด + +### ## ขั้นตอนที่ 3 – ดึงข้อมูลลายเซ็นดิจิทัล + +Aspose.Pdf จะห่อหุ้มรายละเอียด PKI ระดับล่างไว้ใน API ที่เป็นมิตร ดึงคุณสมบัติ `DigitalSignatureInfo` แล้วคุณจะมีทุกอย่างที่ต้องการเพื่อ **ตรวจสอบสุขภาพลายเซ็น PDF** + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +หาก PDF มีลายเซ็นหลายอัน `signatureInfo` จะรวมไว้ด้วยกัน โดยเปิดให้เข้าถึงคุณสมบัติเช่น `Count`, `Certificates` และ `IsCompromised` สำหรับไฟล์ที่มีลายเซ็นเดียว คอลเลกชันเหล่านี้จะมีรายการเดียวเท่านั้น + +### ## ขั้นตอนที่ 4 – ตรวจสอบว่าลายเซ็นถูกทำลายหรือไม่ + +แฟล็ก `IsCompromised` บอกว่าหนังสือถูกแก้ไข **หลังจาก** ลงลายเซ็นหรือไม่ ค่า `true` หมายถึง PDF ถูกดัดแปลง—พอดีกับสิ่งที่เราต้องการ **ตรวจจับ PDF ที่ถูกดัดแปลง** + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +หากคุณต้องการ **ตรวจสอบลายเซ็น PDF** อย่างละเอียด (เช่น การตรวจสอบห่วงโซ่ใบรับรอง) คุณก็สามารถตรวจสอบ `signatureInfo.Certificates` และเรียก `Validate()` บนแต่ละใบรับรองได้ สำหรับกรณีส่วนใหญ่ `IsCompromised` เพียงพอแล้ว + +### ## ขั้นตอนที่ 5 – แสดงผลลัพธ์บนคอนโซล + +สุดท้ายให้ผู้ใช้ทราบว่าเกิดอะไรขึ้น เราจะพิมพ์ข้อความที่เป็นมิตรและคืนค่า exit code ที่เหมาะสมสำหรับสคริปต์อัตโนมัติ + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### ผลลัพธ์ที่คาดหวัง + +``` +Signature compromised: False +``` + +หากคุณทำการดัดแปลง PDF อย่างเจตนา (เช่น เพิ่มอักขระแปลก ๆ) ผลลัพธ์จะเปลี่ยนเป็น `True` นั่นคือสัญญาณว่าความสมบูรณ์ของเอกสารถูกทำลาย + +### ## การจัดการกรณีขอบและข้อผิดพลาดทั่วไป + +#### 1. ลายเซ็นหลายอัน + +เมื่อ PDF มีผู้ลงลายเซ็นมากกว่าหนึ่งคน `IsCompromised` จะสะท้อนสถานะ *โดยรวม* — หาก **ลายเซ็นใดลายเซ็นหนึ่ง** ถูกทำลาย แฟล็กจะเป็น `true` เพื่อระบุตัวผู้ลงลายเซ็นที่เป็นสาเหตุ: + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. ไม่มีลายเซ็น + +หาก PDF ไม่ได้ลงลายเซ็นเลย `signatureInfo.Count` จะเป็น `0` คุณควรป้องกันการให้ความปลอดภัยที่ผิดพลาด: + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. ไฟล์ PDF เสียหาย + +ไฟล์ที่เสียหายจะโยน `PdfException` ให้ห่อหุ้มการโหลดด้วย try‑catch เพื่อแสดงข้อความข้อผิดพลาดที่เป็นมิตร: + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. การตรวจสอบใบรับรอง (ขั้นสูง) + +หากต้องการยืนยันว่าใบรับรองที่ใช้ลงลายเซ็นยังคงใช้ได้ (ไม่ถูกเพิกถอน อยู่ในช่วงเวลาที่มีผล) คุณสามารถเรียก: + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +ขั้นตอนนี้ทำให้คุณย้ายจากการ **ตรวจสอบลายเซ็น PDF** อย่างง่าย ไปสู่กระบวนการ **วิธีตรวจสอบลายเซ็น PDF** อย่างครบถ้วน + +### ## ตัวอย่างทำงานเต็มรูปแบบ + +รวมทุกอย่างเข้าด้วยกัน นี่คือโปรแกรมที่พร้อมรันเต็มรูปแบบ: + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +เรียกโปรแกรมจากบรรทัดคำสั่ง: + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +คุณจะเห็นรายงานชัดเจนบอกว่า PDF ยังสมบูรณ์หรือไม่ ผู้ลงลายเซ็นใครบ้างที่เกี่ยวข้อง และใบรับรองของพวกเขายังเชื่อถือได้หรือไม่ + +## ภาพรวมเชิงภาพ + +ด้านล่างเป็นแผนภาพสั้น ๆ ที่แสดงกระบวนการจาก **การโหลด PDF** ไปจนถึง **การแสดงผลลัพธ์การตรวจสอบ** เป็นอ้างอิงที่สะดวกเมื่อคุณกำลังออกแบบสถาปัตยกรรมของ pipeline การประมวลผลเอกสารขนาดใหญ่ + +![validate pdf digital signature workflow diagram](image.png "Diagram showing PDF load → DigitalSignatureInfo → IsCompromised check") + +*ข้อความแทน: แผนภาพกระบวนการตรวจสอบลายเซ็นดิจิทัล PDF* + +## สรุป + +เราได้ครอบคลุม **โซลูชันครบวงจรเพื่อ validate PDF digital signature** ด้วย Aspose.Pdf ใน C# แล้ว ประเด็นสำคัญที่ควรจำ: + +- โหลด PDF ด้วย `Document` +- ดึง `DigitalSignatureInfo` และตรวจสอบ `IsCompromised` เพื่อ **ตรวจจับ PDF ที่ถูกดัดแปลง** +- จัดการลายเซ็นหลายอัน, ลายเซ็นที่หายไป, และไฟล์เสียหายอย่างราบรื่น +- หากต้องการ สามารถตรวจสอบใบรับรองเพื่อทำ checklist **วิธีตรวจสอบลายเซ็น PDF** อย่างเต็มรูปแบบ + +จากจุดนี้คุณสามารถขยายตรรกะต่อไป—บันทึกผลการตรวจสอบลงฐานข้อมูล, ปฏิเสธไฟล์อัปโหลดที่ไม่มีลายเซ็นใน Web API, หรือรวมกับระบบจัดการเอกสาร หากคุณสนใจฟีเจอร์ความปลอดภัย PDF อื่น ๆ เช่น **ตรวจสอบ timestamp ของลายเซ็น PDF**, **เพิ่มลายเซ็นใหม่**, หรือ **เข้ารหัส PDF** อย่าลังเลที่จะสำรวจต่อ + +มีคำถามเกี่ยวกับกรณีขอบหรืออยากดูวิธี **ตรวจสอบลายเซ็น PDF** ด้วยไลบรารีอื่นเช่น iText 7? แสดงความคิดเห็นด้านล่างและเราจะต่อยอดการสนทนากันต่อไป ขอให้เขียนโค้ดอย่างสนุกสนาน! + +{{< /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/conversion-export/_index.md b/pdf/turkish/net/conversion-export/_index.md index 4325e37c5..5cceca0e8 100644 --- a/pdf/turkish/net/conversion-export/_index.md +++ b/pdf/turkish/net/conversion-export/_index.md @@ -32,10 +32,10 @@ Aspose.PDF for .NET kullanarak özel stratejilerle PDF'leri HTML'ye nasıl dön ### [Kapsamlı Kılavuz: Sorunsuz Belge Dönüştürme için Aspose.PDF .NET Kullanarak PDF'yi TIFF'e Dönüştürün](./convert-pdf-to-tiff-aspose-dotnet-guide/) Aspose.PDF for .NET kullanarak PDF dosyalarını yüksek kaliteli TIFF görüntülerine nasıl verimli bir şekilde dönüştüreceğinizi öğrenin. Belge işleme iş akışınızı geliştirmek için bu adım adım kılavuzu izleyin. -### [Kapsamlı Kılavuz: Aspose.PDF for .NET Kullanarak Gerçek Zamanlı İlerleme Güncellemeleriyle PDF'den HTML'ye Dönüştürme](./pdf-to-html-conversion-progress-aspose-pdf-net/) +### [Kapsamlı Kılavuz: Aspose.PDF .NET Kullanarak Gerçek Zamanlı İlerleme Güncellemeleriyle PDF'den HTML'ye Dönüştürme](./pdf-to-html-conversion-progress-aspose-pdf-net/) Gerçek zamanlı ilerleme güncellemelerini içeren Aspose.PDF for .NET'i kullanarak PDF'leri etkileşimli HTML formatlarına nasıl dönüştüreceğinizi öğrenin. Dijital pazarlamacılar ve e-öğrenme platformları için idealdir. -### [Aspose.PDF for .NET ile Excel'i PDF Tablolarına Dönüştürme: Adım Adım Kılavuz](./convert-excel-to-pdf-aspose-dotnet/) +### [Aspose.PDF .NET ile Excel'i PDF Tablolarına Dönüştürme: Adım Adım Kılavuz](./convert-excel-to-pdf-aspose-dotnet/) Aspose.PDF for .NET kullanarak Excel çalışma sayfalarını PDF tablolarına nasıl verimli bir şekilde dönüştüreceğinizi öğrenin. Bu kılavuz adım adım talimatlar ve temel ipuçları sağlar. ### [Aspose.PDF kullanarak C#'ta HTML'yi PDF'ye dönüştürme: Eksiksiz Bir Kılavuz](./convert-html-pdf-aspose-pdf-net-csharp/) @@ -162,10 +162,10 @@ Aspose.PDF for .NET kullanarak Bilgisayar Grafikleri Meta Dosyası (CGM) görün Bu ayrıntılı kılavuzla Aspose.PDF for .NET kullanarak EPUB dosyalarını PDF'ye nasıl dönüştüreceğinizi öğrenin. Sorunsuz belge dönüşümüne ihtiyaç duyan geliştiriciler için mükemmeldir. ### [Aspose.PDF .NET ile HTML'yi PDF'ye Nasıl Dönüştürebilirsiniz: Eksiksiz Bir Kılavuz](./convert-html-pdf-aspose-dotnet-guide/) -Aspose.PDF .NET kullanarak HTML belgelerini profesyonel görünümlü PDF'lere nasıl verimli bir şekilde dönüştüreceğinizi öğrenin. Harici kaynakları yönetme ve karmaşık içerikleri işleme tekniklerini keşfedin. +Aspose.PDF .NET kullanarak HTML belgelerini profesyonel görünümlü PDF'lere nasıl verimli bir şekilde dönüştürebileceğinizi öğrenin. Harici kaynakları yönetme ve karmaşık içerikleri işleme tekniklerini keşfedin. ### [Aspose.PDF .NET Kullanarak Büyük CGM Görüntülerini PDF'ye Nasıl Dönüştürebilirsiniz: Kapsamlı Bir Kılavuz](./convert-large-cgm-images-to-pdf-aspose-pdf-net/) -Aspose.PDF .NET kullanarak büyük Bilgisayar Grafikleri Meta Dosyası (CGM) görüntülerini kolayca PDF'lere nasıl dönüştüreceğinizi öğrenin. Bu kılavuz kurulum, uygulama ve en iyi uygulamaları kapsar. +Aspose.PDF .NET kullanarak büyük Bilgisayar Grafikleri Meta Dosyası (CGM) görüntülerini kolayca PDF'lere nasıl dönüştürebileceğinizi öğrenin. Bu kılavuz kurulum, uygulama ve en iyi uygulamaları kapsar. ### [Aspose.PDF for .NET Kullanılarak MHT Dosyaları PDF'ye Nasıl Dönüştürülür - Adım Adım Kılavuz](./convert-mht-files-to-pdf-aspose-dotnet/) Aspose.PDF for .NET kullanarak MHT dosyalarını zahmetsizce PDF'lere nasıl dönüştüreceğinizi öğrenin. Bu kılavuz kurulum, dönüştürme adımları ve en iyi uygulamaları kapsar. @@ -183,7 +183,7 @@ Bu kapsamlı adım adım kılavuzla Aspose.PDF for .NET kullanarak PDF sayfalar Aspose.PDF for .NET kullanarak bir PDF belgesini ikili TIFF görüntüsüne nasıl dönüştüreceğinizi öğrenin. Bu eğitim kurulum, yapılandırma ve pratik uygulamaları kapsar. ### [Aspose.PDF for .NET ile PDF'yi EPUB'a Nasıl Dönüştürebilirsiniz: Geliştirici Kılavuzu](./convert-pdf-to-epub-aspose-dotnet/) -Aspose.PDF for .NET kullanarak PDF dosyalarını EPUB formatına nasıl dönüştüreceğinizi öğrenin. Dijital yayımcılığı ve içerik erişilebilirliğini geliştirmek için bu adım adım kılavuzu izleyin. +Aspose.PDF for .NET kullanarak PDF dosalarını EPUB formatına nasıl dönüştüreceğinizi öğrenin. Dijital yayımcılığı ve içerik erişilebilirliğini geliştirmek için bu adım adım kılavuzu izleyin. ### [Aspose.PDF .NET Kullanarak PDF'yi Çok Sayfalı TIFF'e Nasıl Dönüştürebilirsiniz - Adım Adım Kılavuz](./convert-pdf-to-multi-page-tiff-aspose-dotnet/) Aspose.PDF for .NET kullanarak PDF'leri yüksek kaliteli çok sayfalı TIFF görüntülerine nasıl dönüştüreceğinizi öğrenin. C#'ta kolay uygulama için bu adım adım kılavuzu izleyin. @@ -192,7 +192,7 @@ Aspose.PDF for .NET kullanarak PDF'leri yüksek kaliteli çok sayfalı TIFF gör Bu adım adım kılavuzla Aspose.PDF for .NET kullanarak PDF dosyalarını PostScript formatına nasıl dönüştüreceğinizi öğrenin. Yüksek kaliteli baskı ihtiyaçları için mükemmeldir. ### [Aspose.PDF for .NET Kullanılarak PDF'nin TIFF'e Dönüştürülmesi: Adım Adım Kılavuz](./convert-pdf-to-tiff-aspose-net/) -Aspose.PDF for .NET kullanarak PDF dosyalarını yüksek kaliteli TIFF görüntülerine nasıl dönüştüreceğinizi öğrenin. Kod örnekleri ve yapılandırma ipuçlarıyla adım adım kılavuzumuzu izleyin. +Aspose.PDF for .NET kullanarak PDF dosalarını yüksek kaliteli TIFF görüntülerine nasıl dönüştüreceğinizi öğrenin. Kod örnekleri ve yapılandırma ipuçlarıyla adım adım kılavuzumuzu izleyin. ### [.NET için Aspose.PDF Kullanarak PDF'yi XML'e Nasıl Dönüştürebilirsiniz: Adım Adım Kılavuz](./pdf-to-xml-conversion-aspose-pdf-net/) Aspose.PDF for .NET ile PDF belgelerini XML'e dönüştürme sanatında ustalaşın. Bu kapsamlı kılavuzu izleyin ve belge yönetiminizi geliştirin. @@ -218,15 +218,24 @@ Aspose.PDF for .NET kullanarak PDF'yi HTML'ye dönüştürmeyi nasıl optimize e ### [Aspose.PDF .NET Kullanarak PDF'yi HTML'ye Dönüştürme: Görüntüleri Harici PNG'ler Olarak Kaydetme](./pdf-to-html-conversion-external-png-aspose-pdf-net/) Aspose.PDF for .NET kullanarak PDF belgelerini harici PNG görüntüleriyle HTML'ye nasıl dönüştüreceğinizi öğrenin. Bu kılavuz düzenin korunmasını ve web performansı optimizasyonunu sağlar. -### [Aspose.PDF .NET ile PDF'yi HTML'ye Dönüştürme: Kapsamlı Bir Kılavuz](./aspose-pdf-net-pdf-to-html-conversion/) +### [Aspose.PDF .NET Kullanarak PDF'yi HTML'ye Dönüştürme: Kapsamlı Bir Kılavuz](./aspose-pdf-net-pdf-to-html-conversion/) Aspose.PDF for .NET kullanarak PDF'den HTML'e dönüştürmede ustalaşın. Özelleştirilebilir seçeneklerle belge erişilebilirliğini ve etkileşimini geliştirin. +### [Aspose.PDF ile PDF'yi HTML'ye Dönüştürme: Tam C# Kılavuzu](./save-pdf-as-html-with-aspose-complete-c-guide/) +Aspose.PDF for .NET kullanarak PDF dosyalarını HTML'ye kaydetmeyi ve özelleştirmeyi adım adım öğrenin. + ### [Aspose.PDF for .NET ile PDF'yi HTML'ye Dönüştürme](./pdf-to-html-conversion-aspose-dot-net/) Aspose.PDF Net için bir kod öğreticisi ### [Aspose.PDF Kullanarak .NET'te PDF'yi TIFF'e Dönüştürme: Adım Adım Kılavuz](./pdf-to-tiff-conversion-aspose-pdf-net/) Aspose.PDF for .NET kullanarak PDF belgelerini TIFF görüntülerine nasıl dönüştüreceğinizi öğrenin. Özel renk derinliklerinde ve gelişmiş görüntü işleme tekniklerinde ustalaşın. +### [PDF'yi PDF/X-1a'ya Dönüştürme, Sayfa PNG Olarak Dışa Aktarma ve Metin Damgası Ekleme](./convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/) +Aspose.PDF for .NET kullanarak PDF'yi PDF/X-1a formatına dönüştürün, sayfaları PNG'ye dışa aktarın ve metin damgası ekleyin. + +### [C# ile PDF'yi HTML olarak kaydetme – Tam Adım‑Adım Kılavuz](./save-pdf-as-html-with-c-complete-step-by-step-guide/) +C# ve Aspose.PDF for .NET kullanarak PDF dosalarını HTML'ye dönüştürmeyi 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/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/turkish/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..cabf767e6 --- /dev/null +++ b/pdf/turkish/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,244 @@ +--- +category: general +date: 2026-03-29 +description: pdf'yi pdf/x-1a'ya dönüştür ve pdf sayfasını png olarak tek bir akışta + dışa aktar – ayrıca Aspose.Pdf (C#) kullanarak pdf'ye metin damgası eklemeyi öğren. +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: tr +og_description: pdf'yi pdf/x-1a'ya dönüştür ve pdf sayfasını png olarak dışa aktarırken + metin damgası ekle – Aspose.Pdf ile tam C# rehberi. +og_title: PDF'yi PDF/X-1a'ya dönüştür, sayfayı PNG olarak dışa aktar ve metin damgası + ekle +tags: +- Aspose.Pdf +- C# +- PDF processing +title: PDF'yi PDF/X-1a'ya dönüştür, sayfayı PNG olarak dışa aktar ve metin damgası + ekle +url: /tr/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# pdf'yi pdf/x-1a'ya dönüştür, sayfa png olarak dışa aktar ve metin damgası ekle – Tam C# Kılavuzu + +PDF'yi **pdf/x-1a'ya dönüştürmek** isteyip aynı zamanda ilk sayfanın hızlı bir PNG önizlemesini ve aynı belgeye özel bir metin damgası eklemek istemiş miydiniz? Yalnız değilsiniz. Birçok üretim hattında—baskıya hazır ön‑kontrol ya da otomatik rapor oluşturma gibi—bu tam kombinasyona sıkça rastlarsınız. + +Bu öğreticide, art arda üç işi yapan tek, bütünleşik bir iş akışını adım adım inceleyeceğiz: **pdf'yi pdf/x-1a'ya dönüştür**, **pdf sayfasını png olarak dışa aktar**, ve **pdf'ye metin damgası ekle**. Kod, .NET için Aspose.Pdf kütüphanesini kullanır, böylece düşük seviyeli PDF iç detaylarıyla uğraşmadan profesyonel bir çözüm elde edersiniz. Sonunda, herhangi bir console uygulamasına, Azure Function'a veya CI adımına ekleyebileceğiniz çalıştırılabilir bir C# programınız olacak. + +> **Ne elde edeceksiniz** – tam kaynak dosyası, adım adım açıklamalar, yaygın tuzaklar için ipuçları ve çıktıyı hızlıca doğrulamanın bir yolu. + +## Önkoşullar + +- .NET 6.0 veya daha yenisi (API, .NET Framework 4.x ile de çalışır). +- Aspose.Pdf for .NET NuGet paketi (`Aspose.Pdf`) – yazı zamanı itibarıyla sürüm 23.10 günceldir. +- Bir giriş PDF'i (`input.pdf`) ve bir ICC profil dosyası (`Coated_Fogra39L_VIGC_300.icc`) kontrol ettiğiniz bir klasöre yerleştirilmiş. +- C# ve Visual Studio (veya tercih ettiğiniz IDE) hakkında temel bilgi. + +Eğer bunlardan herhangi biri size yabancı geliyorsa, NuGet paketini şu şekilde kurabilirsiniz: + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +Şimdi başlayalım. + +## Adım 1: Kaynak PDF belgesini yükle + +İlk olarak çalışmak istediğimiz PDF'i açıyoruz. Aspose.Pdf’in `Document` sınıfı tüm dosyayı temsil eder ve içeriği tembel bir şekilde yükler, böylece sayfalara dokunana kadar performans cezası ödemezsiniz. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*Bu neden önemlidir*: Belgeyi erken yüklemek, dönüşüm, render ve damga ekleme işlemleri için tek bir nesne kullanmamızı sağlar. Açık bir yükleme yapmaz ve var olmayan bir dosya üzerinde çalışmaya çalışırsanız, daha sonra gizemli bir `FileNotFoundException` alırsınız. + +## Adım 2: Belgeyi özel bir ICC profili kullanarak PDF/X‑1a'ya dönüştür + +PDF/X‑1a, baskıya hazır PDF'lerin de‑facto standardıdır. Dönüştürme adımı aynı zamanda bir **Output Intent** (ICC profili) eklemenizi sağlar, böylece sonraki RIP'ler renklerin nasıl yorumlanacağını tam olarak bilir. + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*Pro ipucu*: Daha katı hata yönetimi istiyorsanız, `ConvertErrorAction.Delete` yerine `ConvertErrorAction.Throw` kullanın. Böylece dönüşüm, ilk uyumsuzlukta durur ve otomatik QA hat hatları için kullanışlıdır. + +## Adım 3: İlk sayfayı PNG olarak dışa aktar ve yazı tiplerini analiz et + +PNG önizlemesi, hızlı görsel kontroller veya küçük resim oluşturma için sıkça gerekir. `AnalyzeFonts` özelliğini etkinleştirerek Aspose, gömülü yazı tiplerinin doğru rasterleştirildiğinden emin olur, eksik glif sürprizlerini önler. + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +Bu işlem tamamlandığında, kaynak dosyalarınızın yanında `page1.png` dosyasını bulacaksınız. Dönüşümün doğru göründüğünden emin olmak için herhangi bir görüntü görüntüleyicide açın. + +## Adım 4: Yazı tipi boyutunu otomatik ayarlayan bir metin damgası ekle + +**Metin damgası**, içeriği değiştirmeden PDF'ye filigran veya açıklama eklemenin pratik bir yoludur. `AutoAdjustFontSizeToFitStampRectangle` ayarı, kütüphanenin metni tanımladığınız dikdörtgen içinde taşmadan küçültüp büyütmesini sağlar. + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*Neden otomatik‑boyut?* Daha sonra damga metnini daha uzun bir şeyle (ör. dinamik zaman damgası) değiştirirseniz, font boyutlarını manuel olarak yeniden hesaplamanıza gerek kalmaz—damga anında uyum sağlar. + +## Adım 5: Güncellenmiş PDF belgesini kaydet + +Son olarak her şeyi diske yazıyoruz. Orijinal dosyanın üzerine yazabilir ya da tamamen yeni bir dosya oluşturabilirsiniz; aşağıdaki örnek `output.pdf` oluşturur. + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +Kaydetme tamamlandığında şunlara sahip olacaksınız: + +1. **PDF/X‑1a** uyumlu bir dosya (`output.pdf`). +2. İlk sayfanın **PNG önizlemesi** (`page1.png`). +3. Dikdörtgenine mükemmel oturan bir **metin damgası**. + +### Hızlı doğrulama kontrol listesi + +| ✅ Kontrol | Nasıl doğrulanır | +|-----------|-------------------| +| PDF/X‑1a uyumluluğu | `output.pdf` dosyasını Adobe Acrobat'ta Aç → *Print Production* → *Preflight* ve “PDF/X‑1a:2001” seçeneğini seçin. | +| PNG doğru görünüyor | `page1.png` dosyasını Windows Fotoğraf Görüntüleyicisi'nde ya da herhangi bir görüntü düzenleyicide açın. | +| Damga görünüyor | `output.pdf` içinde kaydırın – “Auto‑size” metni sayfa 1'de ortalanmış olmalı. | + +![pdf'yi pdf/x-1a'ya dönüştürme önizlemesi](image.png "pdf'yi pdf/x-1a'ya dönüştürme önizlemesi, damgalı sayfayı gösteriyor") + +*Görsel alt metni*: **pdf'yi pdf/x-1a'ya dönüştürme önizlemesi, otomatik boyutlu metin damgası** – tüm adımlardan sonra oluşan son PDF'i gösterir. + +## Yaygın Varyasyonlar ve Kenar Durumları + +- **Birden fazla sayfa** – Her sayfaya damga eklemeniz gerekiyorsa, `pdfDoc.Pages` üzerinde döngü yapın ve döngü içinde `AddStamp` çağırın. +- **Farklı çıktı formatı** – Arşiv PDF'leri için `PdfFormat.PDF_X_1A` yerine `PdfFormat.PDF_A_1B` kullanın. +- **Yüksek çözünürlüklü PNG** – Baskı kalitesinde küçük resimler için `RenderingOptions` içinde `Resolution = 600` ayarlayın. +- **Damga için özel yazı tipi** – Damgayı eklemeden önce `autoSizeStamp.Font = FontRepository.FindFont("Arial")` atayın. +- **Hata yönetimi** – Her ana adımı bir `try/catch` bloğuna alın ve daha kolay hata ayıklama için `ConversionException` veya `FileNotFoundException` kaydedin. + +## Tam Çalışan Örnek (Kopyala‑Yapıştır Hazır) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Setup paths + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Load the source document + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Convert to PDF/X‑1a (print‑ready) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Export first page as PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Add auto‑sizing text stamp (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/turkish/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..3ebdbb726 --- /dev/null +++ b/pdf/turkish/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,270 @@ +--- +category: general +date: 2026-03-29 +description: Aspose.PDF kullanarak C#'de PDF'yi HTML olarak kaydedin. Tek bir öğreticide + PDF'yi HTML'ye nasıl dönüştüreceğinizi, görüntüleri nasıl atlayacağınızı ve PDF + imzasını nasıl doğrulayacağınızı öğrenin. +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: tr +og_description: Aspose.PDF ile C#'ta PDF'yi HTML olarak kaydedin. Bu kılavuz, PDF'yi + HTML'ye nasıl dönüştüreceğinizi, görüntüleri atlamayı ve PDF dijital imzasını doğrulamayı + gösterir. +og_title: Aspose ile PDF'yi HTML olarak kaydedin – Tam C# Rehberi +tags: +- Aspose.PDF +- C# +- PDF processing +title: Aspose ile PDF'yi HTML Olarak Kaydedin – Tam C# Rehberi +url: /tr/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF'yi HTML olarak Kaydetme – Aspose ile Tam C# Kılavuzu + +Hiç **PDF'yi HTML olarak kaydetme** işlemini, tüm gömülü resimleri çekmeden yapmayı düşündünüz mü? Belki hafif bir web önizlemesi oluşturuyorsunuz ve ekstra resim yükü sayfa hızınızı öldürüyor. İyi haber şu ki, özel bir ayrıştırıcı yazmanıza gerek yok—Aspose.PDF sizin için ağır işi yapıyor. Bu öğreticide **PDF'yi HTML'ye dönüştüreceğiz**, resimleri çıkaracağız ve ardından **PDF imzasını doğrulayacağız** ki belgeye müdahale edilmediğinden emin olalım. + +Kodun her satırını adım adım inceleyecek, *neden* her ayarın önemli olduğunu açıklayacak ve büyük PDF'ler ya da eksik imzalar gibi kenar durumlarına da değineceğiz. Sonunda, temiz bir HTML dosyası üreten ve dijital imza için net bir doğru/yanlış sonucu veren çalıştırılabilir bir C# konsol uygulamanız olacak. + +## Öğrenecekleriniz + +- Aspose.PDF ile bir PDF dosyası yükleyin. +- Görüntüleri dışarıda bırakarak PDF'yi HTML'ye **dönüştürmek** için `HtmlSaveOptions` kullanın. +- Oluşturulan HTML'yi diske kaydedin. +- PDF imzasını **doğrulamak** için bir `PdfFileSignature` nesnesi oluşturun. +- Boolean sonucu yorumlayın ve yaygın sorunları ele alın. +- Performans ve sorun giderme için ek ipuçları. + +### Önkoşullar + +- .NET 6.0 veya üzeri (kod .NET Framework 4.7+ üzerinde de çalışır). +- Aspose.PDF for .NET NuGet paketi (sürüm 23.12 veya daha yeni). +- “Sig1” adlı bir imza içeren imzalı bir PDF (`input.pdf`). +- C# ve konsol uygulamaları hakkında temel bilgi. + +> **Pro ipucu:** Eğer henüz Aspose.PDF paketini kurmadıysanız, proje klasörünüzden `dotnet add package Aspose.PDF` komutunu çalıştırın. + +--- + +## Adım 1: Kaynak PDF Belgesini Yükleyin + +Herhangi bir iş yapmadan önce, PDF'in bellek içi bir temsiline ihtiyacımız var. Aspose.PDF’in `Document` sınıfı dosyayı okur ve sayfalar, kaynaklar ve açıklamaların bir ağacını oluşturur. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**Neden önemli:** Belgeyi bir kez yüklemek bellek kullanımını öngörülebilir tutar. Döngü içinde birçok PDF işlemek istiyorsanız, `pdfDocument.Dispose()` çağırdıktan sonra aynı `Document` örneğini yeniden kullanmayı düşünün. + +--- + +## Adım 2: HTML Kaydetme Seçeneklerini Yapılandırın – Görüntüleri Atlayın + +**PDF'yi HTML olarak kaydetmek** istiyoruz ancak ağır resim verileri olmadan. `HtmlSaveOptions` bize ayrıntılı kontrol sağlar ve `SkipImages` bayrağı Aspose’a `` etiketlerini tamamen dışarıda bırakmasını söyler. + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**Neden görüntüleri atlayabilirsiniz:** Önizleme portalları veya mobil‑öncelikli tasarımlar için her kilobayt önemlidir. Görüntüleri kaldırmak aynı zamanda kaynak PDF telif hakkı korumalı grafikler içeriyorsa lisans sorunlarını da önler. + +--- + +## Adım 3: PDF'yi Görüntüsüz HTML Dosyası Olarak Dışa Aktarın + +Şimdi gerçekten HTML dosyasını yazıyoruz. `Save` yöntemi yukarıda ayarladığımız seçenekleri dikkate alır. + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**Görürsünüz sonuç:** Metin içeriği, tablolar ve varsa vektör grafikleri içeren bir `.html` dosyası, ancak `` etiketleri yok. Bir tarayıcıda açtığınızda, orijinal PDF'in temiz, resimsiz bir renderını görmelisiniz. + +--- + +## Adım 4: Aynı Belge İçin Bir İmza Doğrulayıcı Hazırlayın + +Aspose.PDF’in `PdfFileSignature` sınıfı, PDF’e gömülü dijital imzaları incelememizi sağlar. Daha önce yüklediğimiz aynı `Document` nesnesine işaret eden bir örnek oluşturacağız. + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**Kaynak yönetimi hakkında not:** `using` ifadesi, doğrulayıcının işi bittiğinde tüm yerel tutamaçları serbest bırakmasını sağlar ve Windows üzerinde dosya kilidi sorunlarını önler. + +--- + +## Adım 5: “Sig1” İmzasını SHA‑3‑256 Kullanarak Doğrulayın + +Çoğu PDF SHA‑256 veya SHA‑1 kullanır, ancak Aspose aynı zamanda yeni SHA‑3 ailesini de destekler. Burada açıkça `Sha3_256` talep ediyoruz. İmza eksikse ya da algoritma eşleşmezse, yöntem `false` döner. + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**“false” ne anlama gelebilir:** + +1. **İmza bulunamadı** – PDF farklı bir isim kullanıyor olabilir; imzaları `signatureVerifier.GetSignatureNames()` ile listeleyin. +2. **Algoritma uyumsuzluğu** – PDF SHA‑256 ile imzalanmış olabilir; `DigestHashAlgorithm.Sha256` deneyin. +3. **Belge değiştirildi** – imzadan sonra yapılan herhangi bir değişiklik hash'i geçersiz kılar ve `false` döner. + +--- + +## Yaygın Kenar Durumlarını Ele Alma + +### Büyük PDF'ler + +Kaynak PDF birkaç yüz megabaytı aşıyorsa, **bellek‑tasarrufu modunu** etkinleştirmeyi düşünün: + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +Bu, sayfaları talep üzerine akıtarak RAM baskısını azaltır. + +### İmza Eksikliği + +İmza adından emin değilseniz, bunları listeleyin: + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +`VerifySignature` çağırmadan önce listeden doğru adı seçin. + +### Tarayıcı Uyumluluğu + +Bazı tarayıcılar Aspose’un varsayılan CSS’ini içeren HTML ile zorlanır. `htmlSaveOptions.EmbedCss = true` (daha önce gösterildiği gibi) ayarı stilleri satıra satır ekler ve dosyayı daha taşınabilir hâle getirir. + +--- + +## Tam Çalışan Örnek + +Aşağıda, tüm adımları, hata yönetimini ve isteğe bağlı tanılamaları içeren, kopyala‑yapıştır‑hazır tam program yer alıyor. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Beklenen konsol çıktısı** (yollar farklı olacaktır): + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +İmza geçersizse, son satır `Signature valid: False` şeklinde görünecektir. + +--- + +## Sıkça Sorulan Sorular + +**S: PDF'yi resimlerle birlikte HTML'ye dönüştürebilir miyim?** +C: Kesinlikle. Sadece `SkipImages = false` (veya özelliği atlayın) ayarlayın. Aspose, her resmi HTML'nin yanındaki bir alt klasöre ayrı dosya olarak gömer. + +**S: Bu Linux'ta çalışır mı?** +C: Evet. Aspose.PDF platformlar arasıdır; `YOUR_DIRECTORY` yollarının ileri eğik çizgi (`/`) kullandığından veya `Path.Combine` ile oluşturulduğundan emin olun. + +**S: Özel bir sertifika ile PDF dijital imzasını doğrulamam gerekirse?** +C: `PdfFileSignature.ValidateSignature` aşırı yüklemesini, bir `X509Certificate2` nesnesi kabul eden versiyonunu kullanın. Bu yöntem ayrıca inceleyebileceğiniz ayrıntılı bir `SignatureInfo` döndürür. + +**S: `aspose convert pdf` sadece C# ile mi sınırlı?** +C: Hayır. Aynı API Java, Python ve diğer .NET dilleri için de mevcuttur. Yükleme, seçenek ayarlama, kaydetme ve doğrulama kavramları aynı kalır. + +--- + +## Sonuç + +Artık Aspose.PDF kullanarak **PDF'yi HTML olarak kaydetme**, gereksiz resimleri ayıklama ve tek bir, akıcı C# programında **PDF imzasını doğrulama** konularını tam olarak biliyorsunuz. Süreç basit: yükle, yapılandır, dışa aktar ve doğrula. İsteğe bağlı tanılamalar ve kenar durumları ele alındığı için bu modeli toplu işler, web servisleri veya masaüstü yardımcı programlar için uyarlayabilirsiniz. + +Bir sonraki adım için hazır mısınız? **PDF'yi HTML'ye dönüştürürken** resimleri korumayı deneyin ya da farklı hash algoritmalarıyla **PDF dijital imzasını** kendi PKI’nize karşı doğrulayın. Ayrıca Aspose’un PDF‑to‑DOCX dönüşümünü keşfedebilir veya dışa aktarmadan önce birden çok PDF’i birleştirebilirsiniz—hepsi az önce oluşturduğumuz iş akışının doğal uzantılarıdır. + +İyi kodlamalar, HTML önizlemeleriniz hafif, imzalarınız ise güvenilir olsun! + +![pdf'yi html olarak kaydetme örneği](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/turkish/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..255782a47 --- /dev/null +++ b/pdf/turkish/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,258 @@ +--- +category: general +date: 2026-03-29 +description: C# ve Aspose.PDF kullanarak PDF'yi HTML olarak kaydedin. PDF'ye sayfa + eklemeyi, boş PDF sayfası eklemeyi ve tek bir akışta PKCS7 ayrık imza oluşturmayı + öğrenin. +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: tr +og_description: C# ile Aspose.PDF kullanarak PDF'yi HTML olarak kaydedin. Bu kılavuz, + PDF'yi nasıl yükleyeceğinizi, sayfa ekleyeceğinizi, boş sayfa ekleyeceğinizi, PKCS7 + ile nasıl imzalayacağınızı ve HTML olarak nasıl dışa aktaracağınızı gösterir. +og_title: PDF'yi C# ile HTML olarak kaydet – Tam Programlama Öğreticisi +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: C# ile PDF'yi HTML olarak kaydet – Tam Adım Adım Rehber +url: /tr/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF'yi HTML olarak C# ile Kaydet – Tam Adım‑Adım Kılavuz + +PDF'yi HTML olarak **kaydetmek** isteyip de düzeni bozulmadan tutarken kaynak belgeyi de düzenlemenin nasıl yapılacağını hiç merak ettiniz mi? Tek başınıza değilsiniz—geliştiriciler genellikle dönüştürmeden önce sayfalama düzeltmeleri, boş sayfalar ve dijital imzalarla uğraşırlar. Bu öğreticide tam olarak bunu yapan tek bir bütünsel iş akışını adım adım inceleyeceğiz ve yol boyunca **PDF'ye sayfa ekleme**, **boş PDF sayfası ekleme** ve **PKCS7 ayrık imza oluşturma** konularına da değineceğiz. + +Bu kılavuzun sonunda, mevcut bir PDF'yi yükleyen, sayfalarını yeniden şekillendiren, ilk sayfayı imzalayan ve sonunda tüm belgeyi Unicode CMap önceliğiyle HTML olarak dışa aktaran çalıştırılabilir bir C# programına sahip olacaksınız. Bağlantısız referanslar yok, sadece herhangi bir .NET projesine ekleyebileceğiniz bağımsız bir çözüm. + +## Gereksinimler + +- **Aspose.PDF for .NET** (yazı zamanı en yeni sürüm, 23.x). +- **.NET 6.0** veya üzeri – kod .NET Framework 4.7 ile de derlenebilir, ancak .NET 6 en iyi performansı sağlar. +- PKCS7 imzası için bir **sertifika dosyası** (`.pfx`) ve şifresi. +- Üzerinde işlem yapmak istediğiniz bir giriş PDF'i (`input.pdf`). + +Bu öğelere sahipseniz doğrudan koda geçebiliriz. Aksi takdirde resmi siteden 30‑günlük ücretsiz bir Aspose deneme sürümü alın; API, ücretli sürümle aynı şekilde çalışır. + +--- + +## Adım 1 – PDF Belgesini C#'ta Yükleme (Ana Eylem) + +İlk iş, PDF'yi belleğe getirmektir. Aspose’un `Document` sınıfı tüm ağır işleri üstlenir. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*Why this matters:* Dosyayı yüklemek, değiştirilebilir bir nesne modeli sağlar. Buradan **PDF'ye sayfa ekleme**, boş sayfalar ekleme veya imzalar uygulama işlemlerini, diskteki orijinal dosyaya dokunmadan yapabilirsiniz. + +--- + +## Adım 2 – Sayfa Ekleme ve Boş PDF Sayfası Ekleme + +Bazen kaynak PDF'de sayfalama artefaktları bulunur—örneğin eksik bir sayfa ya da çiftlenmiş bir sayfa. Aşağıda sayfa 2'yi sayfa 1'in hemen sonrasına kopyalıyor, ardından dosyanın sonuna tamamen boş bir sayfa ekliyoruz. + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*Pro tip:* `UpdatePagination()` Aspose tarafından oluşturulan altbilgi veya üstbilgi içinde görünen sayfa numaralarını yeniden hesaplar. Bu adımı atlamak, son HTML'de eski numaraların kalmasına neden olabilir. + +--- + +## Adım 3 – PKCS7 Ayrık İmza Oluşturma (SHA‑512) + +Ayrık bir PKCS7 imzası, imza verisini doğrudan PDF içerik akışına gömmeden belgenin bütünlüğünü kanıtlar. PFX dosyasında saklanan bir sertifika kullanacağız. + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*Why SHA‑512?* SHA‑256'ya göre daha güçlü bir hash sunar ve hâlâ geniş çapta desteklenir. Daha eski standartlarla uyumluluk gerekiyorsa `Sha512` yerine `Sha256` kullanabilirsiniz. + +--- + +## Adım 4 – Görünür Dikdörtgen ile Sayfa 1'e Dijital İmza Uygulama + +İlk sayfada görünür bir imza alanı yerleştireceğiz. Dikdörtgen, imza görüntüsünün (veya yer tutucusunun) nerede görüneceğini tanımlar. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*Edge case:* Hedef sayfada aynı ada sahip bir form alanı zaten varsa API bir istisna fırlatır. İmza atmadan önce alan adlarının benzersiz olduğundan emin olun veya mevcut alanları temizleyin. + +--- + +## Adım 5 – Unicode CMap Önceliği İçin HTML Kaydetme Seçeneklerini Yapılandırma + +HTML'ye dönüştürürken Aspose, yazı tiplerini base‑64 olarak gömebilir, alt kümeler kullanabilir veya Unicode CMap'lere güvenebilir. Unicode önceliği, dosya boyutunu azaltır ve metin aranabilirliğini artırır. + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*What does this do?* Dönüştürücüye mümkün olduğunca özel yazı tipi gömmek yerine Unicode CMap'leri tercih etmesini söyler; bu, çok dilli PDF'ler için idealdir. + +--- + +## Adım 6 – İmzalı Belgeyi HTML Olarak Kaydetme + +Son olarak işlenmiş PDF'yi bir HTML klasörü olarak yazdırın (Aspose, CSS ve resimler gibi destek dosyalarını içeren bir dizin oluşturur). + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +`cmap.html` dosyasını bir tarayıcıda açarsanız, orijinal PDF düzeninin HTML olarak render edildiğini, sayfa 1'de görünür imza görüntüsüyle birlikte göreceksiniz. + +--- + +## Tam Çalışan Örnek (Tüm Adımlar Birleştirildi) + +Aşağıda bir konsol uygulamasına kopyalayıp yapıştırabileceğiniz tam program yer alıyor. Gerekli tüm `using` yönergeleri ve hata yönetimi dahil edilmiştir. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**Expected result:** +- `cmap.html` (ana HTML dosyası) +- CSS, resimler ve yazı tipi kaynaklarını içeren `cmap_files` klasörü. +- İlk sayfa, belirlediğiniz koordinatlarda görünür bir imza kutusu gösterir. + +--- + +## Sık Sorulan Sorular & Kenar Durumları + +| Question | Answer | +|----------|--------| +| *Can I use a self‑signed certificate?* | Yes, Aspose.PDF accepts any valid PFX. Just remember browsers may flag the signature as untrusted. | +| *What if I need to sign multiple pages?* | Create separate `PdfFileSignature` calls for each page, or use a loop that updates `pageNumber`. | +| *Is there a way to embed the signature image instead of a rectangle?* | Supply a `SignatureAppearance` object with an image stream to `PdfFileSignature.Sign`. | +| *My PDF has encrypted content—can I still convert?* | Decrypt it first using `pdfDoc.Decrypt("ownerPassword")`, then run the steps. | +| *Will the HTML keep hyperlinks from the original PDF?* | Aspose preserves link annotations by default. If you see missing links, set `htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;` | + +--- + +## Sonuç + +**PDF'yi HTML olarak kaydet** işlemini aynı anda **PDF'ye sayfa ekleme**, **boş PDF sayfası ekleme** ve **PKCS7 ayrık imza oluşturma** ile nasıl yapacağınızı C# kullanarak gösterdik. İş akışı lineer, hata ayıklaması kolay ve büyük projeler için tamamen özelleştirilebilir. + +Sonraki adımlarda şunları keşfedebilirsiniz: + +- **Batch processing** – bir klasördeki PDF'ler üzerinde döngü kurarak her birini dönüştürme. +- **Custom CSS** – `HtmlSaveOptions.CustomCss` ile sitenizin stiline uyacak şekilde ayarlama. +- **Advanced signatures** – uyumluluk düzeyinde imzalama için zaman damgası sunucuları veya LTV (Long‑Term Validation) kullanma. + +Bunları deneyin; böylece SEO‑dostu ve AI asistanları için alıntılamaya uygun, sağlam bir PDF‑to‑HTML hattına sahip olacaksınız. Kodlamanın tadını çıkarın! + +--- + +![PDF yüklendi, sayfalar eklendi, imza uygulandı ve ardından HTML çıktısı gösteren diyagram](/images/save-pdf-as-html-workflow.png "pdf'yi html olarak kaydet iş akışı") + +*Görsel alt metni:* **pdf'yi html olarak kaydet iş akışı diyagramı** + +{{< /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 d1543118f..bdecf6c8d 100644 --- a/pdf/turkish/net/digital-signatures/_index.md +++ b/pdf/turkish/net/digital-signatures/_index.md @@ -64,6 +64,9 @@ C# kullanarak PDF belgesini yükleyin, PDF/X‑4 formatına dönüştürün ve i ### [Aspose ile PDF İmzasını Doğrulama – PDF'yi HTML'ye Dönüştür](./validate-pdf-signature-with-aspose-convert-pdf-to-html/) Aspose kullanarak PDF imzasını doğrularken aynı zamanda PDF'yi HTML formatına dönüştürmeyi öğrenin. +### [PDF'i İmzalama ve Görüntü Ekleme – Tam C# Kılavuzu](./how-to-sign-pdf-and-add-images-complete-c-guide/) +C# kullanarak PDF'ye nasıl imza ekleyip, görüntü yerleştireceğinizi 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-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/turkish/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..a76559043 --- /dev/null +++ b/pdf/turkish/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-03-29 +description: C#'ta PDF'yi dijital imza ile nasıl imzalayacağınızı ve kırpılmış bir + resmi nasıl ekleyeceğinizi öğrenin. Dijital imza PDF eklemeyi, PDF için resmi kırpmayı + ve PDF'ye resmi kolayca eklemeyi keşfedin. +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: tr +og_description: C#'de Aspose.Pdf kullanarak PDF'yi dijital imza ile nasıl imzalayacağınızı + ve kırpılmış bir resmi nasıl gömeceğinizi öğrenin. Tam bir çözüm için bu rehberi + izleyin. +og_title: PDF'yi İmzalama ve Görüntü Ekleme – Adım Adım C# Öğreticisi +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: PDF'yi Nasıl İmzalar ve Görselleri Ekle – Tam C# Rehberi +url: /tr/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF'yi İmzalama ve Görüntü Ekleme – Tam C# Kılavuzu + +Programlı olarak **how to sign PDF** dosyalarını imzalamayı ve aynı zamanda özel bir resim eklemeyi hiç merak ettiniz mi? Belki bir onay iş akışı oluşturuyorsunuz ve yasal bağlayıcı bir imzaya *ve* imzalayanın fotoğrafının küçük bir önizlemesine aynı sayfada ihtiyacınız var. Kısacası, **add digital signature pdf** içeriğini eklemek, resmi kırpmak ve ardından **add image to pdf** yapmadan zahmetsiz bir şekilde gerçekleştirmek istiyorsunuz. + +Bu öğretici, bir ECDSA PKCS#7 sertifikasını yüklemekten JPEG'i kırpmaya ve imzalı sayfaya damgalamaya kadar her adımı size gösterir. Sonunda sayfa 1'i imzalayan, fotoğrafı 400 × 400 px olarak kırpan ve kesin bir konuma yerleştiren tek bir çalıştırılabilir C# dosyanız olacak. Harici betikler yok, sihir yok, sadece net kod ve açıklamalar. + +## Önkoşullar + +- .NET 6.0 veya üzeri (kod .NET Framework 4.7+ ile de çalışır) +- **Aspose.Pdf for .NET** NuGet paketi (versiyon 23.9 veya daha yeni) +- PKCS#7 (`.pfx`) formatında bir ECDSA P‑256 sertifikası ve şifresi +- Gömmek istediğiniz bir JPEG görüntüsü (ör. `photo.jpg`) + +> **Pro ipucu:** Sertifika dosyanızı kaynak kontrolünden uzak tutun ve şifreyi bir gizli yönetici ile koruyun. + +--- + +## Adım 1: Projeyi ve İçe Aktarmaları Ayarlama + +İlk olarak bir console uygulaması oluşturun (veya bunu mevcut bir servise entegre edin). Aspose.Pdf referansını ekleyin: + +```bash +dotnet add package Aspose.Pdf +``` + +Ardından gerekli ad alanlarını dahil edin: + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +Bu `using` ifadeleri, ileride ihtiyaç duyacağımız `Document`, `Signature` ve `Rectangle` sınıflarına erişim sağlar. + +## Adım 2: PDF'yi Yükleyin ve İmzayı Hazırlayın + +Mevcut bir PDF (`source.pdf`) açacağız ve PKCS#7 ayrık imzası kullanan bir **digital signature pdf** nesnesi oluşturacağız. Sertifika, uyumluluk için yaygın olarak kabul edilen bir ECDSA P‑256 anahtarıdır. + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**Neden önemli:** Ayrık bir PKCS#7 imzası kullanmak, orijinal PDF içeriğini bozmadan kriptografik bir hash ekler. Bu, yasal bağlayıcı PDF'ler için endüstri standardı yaklaşımdır. + +## Adım 3: Dijital İmzayı Belirli Bir Sayfaya Uygulayın + +Şimdi görünür imza alanını **page 1** üzerine yerleştireceğiz. Dikdörtgen, imza kutusunun nerede görüneceğini tanımlar (koordinatlar puan cinsindendir, 1 inch = 72 point). + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +Görünür bir kutuya ihtiyacınız yoksa `isVisible` değerini `false` yapın. `signatureRect` değerini belge düzeninize göre ayarlayabilirsiniz. + +## Adım 4: Görüntü Akışını Açın ve Kırpma Alanlarını Tanımlayın + +JPEG dosyasını bir akışa okuyacağız ve sol‑üst köşeden 400 × 400 piksel seçen bir **source rectangle** tanımlayacağız. Bu, **crop image for pdf** işlemdir. + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **Köşe durumu:** Görüntünüz 400 × 400'ten küçükse, kırpma otomatik olarak görüntünün gerçek boyutlarına sınırlanır—hiçbir istisna atılmaz. + +## Adım 5: Kırpılmış Görüntünün Nerede Görüneceğini Tanımlayın + +Sonra PDF sayfasında **destination rectangle** ayarlayın. Bu örnekte resmi (50, 50) konumuna 200 × 200 point (≈2.78 inç kare) boyutunda yerleştiriyoruz. + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +Deney yapmaktan çekinmeyin: X/Y koordinatlarını değiştirerek resmi taşıyabilir, genişlik/yüksekliği ayarlayarak ölçeklendirebilirsiniz. + +## Adım 6: Kırpılmış Görüntüyü İmzalı Sayfaya Ekleyin + +Son olarak **page 1**'e (şimdi imzayı taşıyan aynı sayfa) resmi ekliyoruz. Kullandığımız `AddImage` aşırı yüklemesi, kaynak ve hedef dikdörtgenleri kabul eder ve kırpma ile yerleştirmeyi tek bir çağrıda gerçekleştirir. + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +Arka planda, Aspose.Pdf 400 × 400 piksel bölgeyi çıkarır, 200 × 200 point'e yeniden ölçeklendirir ve PDF içerik akışına yazar. + +## Adım 7: İmzalı ve Görüntü‑Geliştirilmiş PDF'yi Kaydedin + +Tüm değişikliklerden sonra belgeyi kalıcı hale getirin. Orijinali üzerine yazabilir ya da yeni bir dosyaya kaydedebilirsiniz. + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +`output_signed.pdf` dosyasını Adobe Acrobat ya da herhangi bir PDF görüntüleyicide açtığınızda şunları göreceksiniz: + +- Belirttiğiniz koordinatlarda görünür bir imza alanı. +- (50, 50) konumunda sayfa 1 üzerine yerleştirilmiş kırpılmış fotoğraf. +- Dijital imzanın doğrulanması (görüntüleyici sertifikanıza güveniyorsa). + +## Sıkça Sorulan Sorular (SSS) + +| Question | Answer | +|----------|--------| +| **Can I sign a different page?** | Change the `pageNumber` argument in `signature.Sign` to any valid page index (1‑based). | +| **What if I need multiple signatures?** | Create a new `Signature` instance for each page or location, reusing the same `pkcsSignature` if the same cert applies. | +| **Is the image cropping limited to rectangles?** | Yes, Aspose.Pdf’s `AddImage` works with rectangular regions. For complex shapes you’d need to pre‑process the image (e.g., using System.Drawing) before embedding. | +| **How do I make the signature invisible?** | Set `isVisible` to `false` and omit the `signatureRect`. The signature will still be cryptographically valid. | +| **What formats can I embed besides JPEG?** | PNG, BMP, GIF, and TIFF are all supported. Just change the file path and ensure the stream reads the correct bytes. | + +## Tam Çalışan Örnek + +Aşağıda eksiksiz, bağımsız bir program yer alıyor. `Program.cs` içine kopyalayıp yapıştırın, yolları ayarlayın ve çalıştırın. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**Beklenen sonuç:** `output_signed.pdf` dosyasını açtığınızda 100 × 100 → 300 × 300 point arasında bir imza alanı ve `photo.jpg` dosyasının sol‑üst köşesinden türetilen 200 × 200‑point bir resim göreceksiniz. İmza, sağlanan ECDSA sertifikasına karşı doğrulanır. + +## Sonuç + +**how to sign PDF** dosyalarını, belirli bir sayfaya **add digital signature pdf** eklemeyi, **crop image for pdf** işlemini ve sonunda **add image to pdf** işlemini Aspose.Pdf kullanarak C# içinde nasıl yapacağınızı ele aldık. Sertifikayı yüklemekten son belgeyi kaydetmeye kadar tüm akış tek bir okunması kolay kaynak dosyasında toplanmıştır. + +Bir sonraki zorluğa hazırsanız, şunları düşünün: + +- Farklı sayfalara **multiple signatures** ekleme (“digital signature pdf page” kavramını kullanın). +- Doğrulama hizmetlerine bağlanan **QR kodları** gömme. +- PDF üretimini anlık olarak yapan bir ASP.NET Core API içinde süreci otomatikleştirme. + +Unutmayın, sağlam PDF otomasyonu için anahtar, sorumlulukların net ayrılmasıdır: imza yönetimi, görüntü işleme ve son belge birleştirme. Koordinatlarla oynayın, görüntü formatını değiştirin ya da zaman damgası ekleyerek deney yapın—iş akışınız artık tamamen genişletilebilir. + +Sorularınız, köşe‑durum senaryolarınız ya da paylaşmak istediğiniz ilginç bir kullanım örneğiniz mi var? Aşağıya bir yorum bırakın, iyi 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-security-and-signatures/_index.md b/pdf/turkish/net/programming-with-security-and-signatures/_index.md index ce8a6aa35..1e2808621 100644 --- a/pdf/turkish/net/programming-with-security-and-signatures/_index.md +++ b/pdf/turkish/net/programming-with-security-and-signatures/_index.md @@ -35,6 +35,7 @@ Eğitim, PDF dosyalarınızın gizliliğini ve gerçekliğini sağlamak için y | [İ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. | | [PDF Dosyalarını Onarmak – Aspose.Pdf ile Tam C# Rehberi](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | Aspose.PDF for .NET kullanarak PDF dosyalarını nasıl onaracağınızı adım adım öğrenin. | +| [PDF Dijital İmzasını Doğrulama – Tam C# Rehberi](./validate-pdf-digital-signature-complete-c-guide/) | Aspose.PDF for .NET kullanarak PDF dijital imzalarını nasıl doğrulayacağınızı adım adım öğrenin. | {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/turkish/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/turkish/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..e92abf2af --- /dev/null +++ b/pdf/turkish/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,262 @@ +--- +category: general +date: 2026-03-29 +description: PDF dijital imzasını hızlı bir şekilde doğrulayın. PDF imzasını nasıl + doğrulayacağınızı, PDF imza durumunu nasıl kontrol edeceğinizi ve Aspose.Pdf ile + C#’ta bozulmuş PDF’yi nasıl tespit edeceğinizi öğrenin. +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: tr +og_description: C#'ta PDF dijital imzasını doğrulayın. Bu öğreticide PDF imzasını + nasıl doğrulayacağınızı, PDF imza bütünlüğünü nasıl kontrol edeceğinizi ve Aspose.Pdf + kullanarak bozulmuş PDF'yi nasıl tespit edeceğinizi gösterir. +og_title: PDF Dijital İmzasını Doğrulama – Tam C# Rehberi +tags: +- C# +- Aspose.Pdf +- PDF Security +title: PDF Dijital İmzasını Doğrulama – Tam C# Rehberi +url: /tr/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PDF Dijital İmzasını Doğrulama – Tam C# Kılavuzu + +Hiç **bir PDF imzasını nasıl doğrularım** diye kafanız mı karıştı? Belki bir sözleşme aldınız, açtınız ve %100 emin olmak istediniz ki belge değiştirilmemiş olsun. İyi haber şu ki bir adli laboratuvara ihtiyacınız yok—sadece birkaç satır C# ve Aspose.Pdf ile **PDF dijital imzasını doğrulamak** çok kolay. + +Bu öğreticide, kütüphaneyi kurmaktan sonuca kadar her şeyi adım adım inceleyeceğiz; hatta birden çok imza ya da bozuk bir dosya gibi uç durumları da ele alacağız. Sonunda, **PDF imzasını kontrol etme** durumunu programlı olarak yapabilecek ve **bozulmuş PDF** dosyalarını sorun yaratmadan önce tespit edebileceksiniz. + +## Gereksinimler + +- **.NET 6.0 veya üzeri** (kod .NET Framework’te de çalışır, ancak .NET 6 ideal). +- **Aspose.Pdf for .NET** – NuGet üzerinden alabilirsiniz (`Install-Package Aspose.Pdf`). +- Test etmek istediğiniz **imzalı bir PDF**. Yoksa Adobe Acrobat ya da herhangi bir PDF imzalayıcı ile basit bir imzalı belge oluşturabilirsiniz. + +> Pro ipucu: PDF dosyalarınızı projenin kök klasöründen uzak tutun; `./Samples/signed.pdf` gibi göreli bir yol yeterli olur ve gizli dosyaların yanlışlıkla commit edilmesini önler. + +## Adım‑Adım Uygulama + +Aşağıda çözümü mantıksal parçalara ayırdık. Her parça kendi H2 başlığını alıyor—bunlardan biri bile ana anahtar kelimeyi içeriyor, SEO kuralını karşılıyor. + +### ## Adım 1 – Aspose.Pdf’i Yükleyin ve Referans Ekleyin + +İlk olarak, NuGet paketini projenize ekleyin: + +```powershell +dotnet add package Aspose.Pdf +``` + +Ya da Paket Yöneticisi Konsolu kullanıyorsanız: + +```powershell +Install-Package Aspose.Pdf +``` + +Paket yüklendikten sonra Visual Studio otomatik olarak `using Aspose.Pdf;` ad alanını ekleyecek. Ek DLL yönetimine gerek yok. + +### ## Adım 2 – İmzalı PDF Belgesini Yükleyin + +Şimdi dosyayı gerçekten açıyoruz. `using` ifadesi, belgenin doğru şekilde serbest bırakılmasını sağlar; bu büyük PDF’ler için özellikle önemlidir. + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +> **Neden önemli:** Belgeyi yüklemek, `DigitalSignatureInfo` nesnesine erişmemizi sağlar; bu da tüm imza‑ile‑ilgili sorguların giriş noktasıdır. + +### ## Adım 3 – Dijital İmza Bilgilerini Alın + +Aspose.Pdf, düşük seviyeli PKI detaylarını dostane bir API içinde paketler. `DigitalSignatureInfo` özelliğini alın ve **PDF imzasını kontrol etme** sağlığını değerlendirmek için ihtiyacınız olan her şeye sahip olun. + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +PDF birden çok imza içeriyorsa, `signatureInfo` bunları birleştirir ve `Count`, `Certificates`, `IsCompromised` gibi özellikleri sunar. Tek imzalı bir dosyada bu koleksiyonlarda yalnızca bir giriş olur. + +### ## Adım 4 – İmzanın Bozulup Bozulmadığını Belirleyin + +`IsCompromised` bayrağı, belgenin **imzalandıktan sonra** değiştirilip değiştirilmediğini gösterir. `true` değeri PDF’in bozulduğunu, yani **bozulmuş PDF** tespit ettiğimizi gösterir. + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +Daha kapsamlı bir **PDF imzasını doğrulama** (ör. sertifika zinciri doğrulaması) istiyorsanız, `signatureInfo.Certificates`’ı inceleyebilir ve her birına `Validate()` çağrısı yapabilirsiniz. Çoğu senaryo için `IsCompromised` yeterlidir. + +### ## Adım 5 – Sonucu Konsola Yazdırın + +Son olarak, kullanıcıya ne olduğunu bildirelim. Dostane bir mesaj yazdıracağız ve otomasyon betikleri için uygun bir çıkış kodu döndüreceğiz. + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### Beklenen Çıktı + +``` +Signature compromised: False +``` + +PDF’i kasıtlı olarak bozar (ör. rastgele bir karakter ekler) iseniz, çıktı `True` olur. İşte belge bütünlüğünün kırıldığını anladığınız an. + +### ## Kenar Durumları ve Yaygın Tuzaklar + +#### 1. Birden Çok İmza + +PDF’de birden fazla imzalayan varsa, `IsCompromised` *genel* durumu yansıtır—**herhangi** bir imza bozulmuşsa bayrak `true` olur. Hangi imzalayanın sorumlu olduğunu belirlemek için: + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. İmza Eksikliği + +PDF hiç imzalanmamışsa, `signatureInfo.Count` `0` olur. Yanlış bir güven duygusuna kapılmamak için kontrol ekleyin: + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. Bozuk PDF Dosyası + +Bozuk bir dosya `PdfException` fırlatır. Yükleme mantığını try‑catch içinde sararak temiz bir hata mesajı verin: + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. Sertifika Doğrulama (İleri Seviye) + +İmzalayan sertifikanın hâlâ geçerli (iptal edilmemiş, geçerlilik süresi içinde) olduğundan emin olmak istiyorsanız, şu çağrıyı yapabilirsiniz: + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +Bu adım, basit bir **PDF imzasını kontrol etme** işleminden tam bir **PDF imzasını nasıl doğrularım** iş akışına geçmenizi sağlar. + +### ## Tam Çalışan Örnek + +Her şeyi bir araya getirdiğimizde, işte eksiksiz, çalıştırmaya hazır program: + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +Programı komut satırından çalıştırın: + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +PDF’in bütünlüğünün korunup korunmadığını, hangi imzalayan(ların) yer aldığını ve sertifikalarının hâlâ güvenilir olup olmadığını net bir rapor olarak göreceksiniz. + +## Görsel Genel Bakış + +Aşağıda **PDF’i yükleme** aşamasından **doğrulama sonucunu çıktı olarak verme** aşamasına kadar akışı gösteren hızlı bir diyagram bulunuyor. Daha büyük bir belge‑işleme hattı tasarlarken kullanışlı bir referans. + +![PDF dijital imza doğrulama iş akışı diyagramı](image.png "PDF yükleme → DigitalSignatureInfo → IsCompromised kontrolü gösteren diyagram") + +*Alt metin: PDF dijital imza doğrulama iş akışı diyagramı* + +## Sonuç + +Aspose.Pdf ve C# kullanarak **PDF dijital imzasını doğrulamak** için **tam, uçtan uca bir çözüm** ele aldık. Özetle: + +- PDF’i `Document` ile yükleyin. +- `DigitalSignatureInfo`’yu alın ve `IsCompromised` ile **bozulmuş PDF** tespit edin. +- Çoklu imzalar, eksik imzalar ve bozuk dosyalar gibi durumları sorunsuz yönetin. +- Tam bir **PDF imzasını nasıl doğrularım** kontrol listesi için imzalayan sertifikasını da isteğe bağlı olarak doğrulayın. + +Buradan sonrası için mantığı genişletebilirsiniz—doğrulama sonuçlarını bir veritabanına kaydedin, web API’da imzasız yüklemeleri reddedin veya bir belge‑yönetim sistemiyle entegre edin. Diğer PDF güvenlik özellikleriyle ilgileniyorsanız, **PDF imza zaman damgalarını kontrol etme**, **yeni bir imza ekleme** veya **PDF’leri şifreleme** konularına bakın. + +Kenarı durumlarla ilgili sorularınız mı var, yoksa iText 7 gibi farklı bir kütüphane ile **PDF imzasını doğrulama** görmek mi istiyorsunuz? Aşağıya yorum bırakın, sohbeti sürdürelim. Mutlu 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/vietnamese/net/conversion-export/_index.md b/pdf/vietnamese/net/conversion-export/_index.md index 0d2073418..683fddddc 100644 --- a/pdf/vietnamese/net/conversion-export/_index.md +++ b/pdf/vietnamese/net/conversion-export/_index.md @@ -104,6 +104,9 @@ Tìm hiểu cách chuyển đổi tệp PDF sang định dạng XML bằng Aspos ### [Chuyển đổi PDF/A sang PDF chuẩn bằng Aspose.PDF .NET: Hướng dẫn toàn diện](./convert-pdf-a-standard-pdf-aspose-net/) Tìm hiểu cách chuyển đổi dễ dàng các tài liệu PDF/A sang PDF chuẩn bằng Aspose.PDF cho .NET với hướng dẫn từng bước này. +### [Chuyển đổi PDF sang PDF/X-1a, xuất trang PNG và thêm dấu văn bản](./convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/) +Tìm hiểu cách chuyển đổi tài liệu PDF sang chuẩn PDF/X-1a, xuất trang dưới dạng PNG và thêm dấu văn bản bằng Aspose.PDF cho .NET. + ### [Chuyển đổi PDF sang HTML tương tác với CSS tùy chỉnh bằng Aspose.PDF .NET](./convert-pdfs-to-html-custom-css-aspose-pdf-net/) Tìm hiểu cách chuyển đổi tài liệu PDF sang định dạng HTML tương tác, thân thiện với web bằng Aspose.PDF .NET, hoàn chỉnh với kiểu CSS tùy chỉnh. @@ -224,16 +227,11 @@ Làm chủ chuyển đổi PDF sang HTML bằng Aspose.PDF cho .NET. Tăng cư ### [Chuyển đổi PDF sang HTML với Aspose.PDF cho .NET](./pdf-to-html-conversion-aspose-dot-net/) Hướng dẫn mã cho Aspose.PDF Net -### [Chuyển đổi PDF sang TIFF trong .NET bằng Aspose.PDF: Hướng dẫn từng bước](./pdf-to-tiff-conversion-aspose-pdf-net/) -Tìm hiểu cách chuyển đổi tài liệu PDF sang hình ảnh TIFF bằng Aspose.PDF cho .NET. Làm chủ độ sâu màu tùy chỉnh và các kỹ thuật xử lý hình ảnh tiên tiến. - -## Tài nguyên bổ sung +### [Lưu PDF dưới dạng HTML với Aspose – Hướng dẫn C# đầy đủ](./save-pdf-as-html-with-aspose-complete-c-guide/) +Hướng dẫn chi tiết cách lưu tài liệu PDF thành HTML bằng Aspose.PDF cho .NET sử dụng C#. -- [Aspose.PDF cho Tài liệu Net](https://docs.aspose.com/pdf/net/) -- [Aspose.PDF cho Tài liệu tham khảo Net API](https://reference.aspose.com/pdf/net/) -- [Tải xuống Aspose.PDF cho Net](https://releases.aspose.com/pdf/net/) -- [Hỗ trợ miễn phí](https://forum.aspose.com/) -- [Giấy phép tạm thời](https://purchase.aspose.com/temporary-license/) +### [Lưu PDF dưới dạng HTML với C# – Hướng dẫn chi tiết từng bước](./save-pdf-as-html-with-c-complete-step-by-step-guide/) +Hướng dẫn chi tiết từng bước cách lưu PDF thành HTML bằng C# sử dụng Aspose.PDF, kèm ví dụ mã thực tế. {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/pdf/vietnamese/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md b/pdf/vietnamese/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md new file mode 100644 index 000000000..92186422b --- /dev/null +++ b/pdf/vietnamese/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-03-29 +description: chuyển đổi pdf sang pdf/x-1a và xuất trang pdf dưới dạng png trong một + quy trình – cũng học cách thêm dấu văn bản pdf bằng Aspose.Pdf (C#). +draft: false +keywords: +- convert pdf to pdf/x-1a +- export pdf page png +- add text stamp pdf +- Aspose.Pdf conversion +- PDF/X‑1a workflow +language: vi +og_description: chuyển đổi pdf sang pdf/x-1a và xuất trang pdf thành png trong khi + thêm dấu văn bản pdf – hướng dẫn C# đầy đủ với Aspose.Pdf. +og_title: chuyển đổi PDF sang PDF/X-1a, xuất trang PNG và thêm dấu văn bản +tags: +- Aspose.Pdf +- C# +- PDF processing +title: Chuyển đổi PDF sang PDF/X-1a, xuất trang PNG và thêm dấu văn bản +url: /vi/net/conversion-export/convert-pdf-to-pdf-x-1a-export-page-png-add-text-stamp/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# chuyển đổi pdf sang pdf/x-1a, xuất trang png & thêm dấu văn bản – Hướng dẫn C# đầy đủ + +Bạn đã bao giờ cần **convert pdf to pdf/x-1a** nhưng cũng muốn có một bản xem trước PNG nhanh của trang đầu tiên và một dấu văn bản tùy chỉnh trên cùng tài liệu? Bạn không phải là người duy nhất. Trong nhiều quy trình sản xuất—nghĩ đến việc kiểm tra trước khi in sẵn sàng hoặc tạo báo cáo tự động—bạn thường gặp yêu cầu kết hợp này. + +Trong hướng dẫn này, chúng ta sẽ đi qua một quy trình làm việc duy nhất, liền mạch thực hiện ba việc liên tiếp: **convert pdf to pdf/x-1a**, **export pdf page png**, và **add text stamp pdf**. Mã sử dụng thư viện Aspose.Pdf cho .NET, vì vậy bạn sẽ có một giải pháp cấp chuyên nghiệp mà không phải vật lộn với các chi tiết nội bộ của PDF. Khi kết thúc, bạn sẽ có một chương trình C# có thể chạy được mà bạn có thể đưa vào bất kỳ ứng dụng console, Azure Function, hoặc bước CI nào. + +> **Bạn sẽ nhận được** – một tệp nguồn đầy đủ, giải thích từng bước, mẹo cho các lỗi thường gặp, và cách nhanh để xác minh kết quả. + +## Yêu cầu trước + +- .NET 6.0 hoặc mới hơn (API cũng hoạt động với .NET Framework 4.x). +- Gói NuGet Aspose.Pdf cho .NET (`Aspose.Pdf`) – phiên bản 23.10 là hiện tại tại thời điểm viết. +- Một tệp PDF đầu vào (`input.pdf`) và một tệp hồ sơ ICC (`Coated_Fogra39L_VIGC_300.icc`) được đặt trong thư mục bạn kiểm soát. +- Kiến thức cơ bản về C# và Visual Studio (hoặc IDE yêu thích của bạn). + +Nếu bất kỳ mục nào trên gây khó hiểu, chỉ cần cài đặt gói NuGet bằng: + +```bash +dotnet add package Aspose.Pdf --version 23.10.0 +``` + +Bây giờ chúng ta bắt đầu. + +## Bước 1: Tải tài liệu PDF nguồn + +Điều đầu tiên chúng ta làm là mở PDF mà chúng ta muốn làm việc. Lớp `Document` của Aspose.Pdf đại diện cho toàn bộ tệp, và nó tải nội dung một cách lười biếng, vì vậy bạn không phải chịu phí hiệu năng cho đến khi thực sự truy cập các trang. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; + +// Adjust these paths to match your environment +string baseDir = @"C:\MyProjects\PdfDemo\"; +string inputPath = Path.Combine(baseDir, "input.pdf"); + +// Load the PDF – this is where any file‑not‑found errors will surface +Document pdfDoc = new Document(inputPath); +``` + +*Why this matters*: Việc tải tài liệu sớm cung cấp cho chúng ta một đối tượng duy nhất để truyền quanh cho việc chuyển đổi, render và dán dấu. Nếu bạn bỏ qua việc tải rõ ràng và cố gắng làm việc trên một tệp không tồn tại, bạn sẽ nhận được một `FileNotFoundException` khó hiểu sau này. + +## Bước 2: Chuyển đổi tài liệu sang PDF/X‑1a bằng hồ sơ ICC tùy chỉnh + +PDF/X‑1a là tiêu chuẩn de‑facto cho các PDF sẵn sàng in. Bước chuyển đổi cũng cho phép bạn nhúng một **Output Intent** (hồ sơ ICC) để các RIP hạ nguồn biết chính xác cách màu sắc nên được diễn giải. + +```csharp +// Prepare conversion options – we ask Aspose to delete any objects that would break PDF/X‑1a compliance +PdfFormatConversionOptions conversionOptions = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, // Target format + ConvertErrorAction.Delete) // Drop non‑compliant objects automatically +{ + IccProfileFileName = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"), + OutputIntent = new OutputIntent("FOGRA39") // Human‑readable name for the intent +}; + +// Perform the conversion in‑place +pdfDoc.Convert(conversionOptions); +``` + +*Pro tip*: Nếu bạn cần xử lý lỗi chặt chẽ hơn, thay thế `ConvertErrorAction.Delete` bằng `ConvertErrorAction.Throw`. Như vậy quá trình chuyển đổi sẽ dừng lại ngay khi gặp vấn đề tuân thủ đầu tiên, rất hữu ích cho các pipeline QA tự động. + +## Bước 3: Xuất trang đầu tiên dưới dạng PNG trong khi phân tích phông chữ + +Một bản xem trước PNG thường được yêu cầu để kiểm tra nhanh bằng mắt hoặc tạo thumbnail. Bằng cách bật `AnalyzeFonts`, Aspose đảm bảo mọi phông chữ nhúng được raster hoá đúng, tránh các bất ngờ về glyph bị thiếu. + +```csharp +// Configure the PNG device – you can tweak resolution, color depth, etc. +PngDevice pngDevice = new PngDevice +{ + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, // Guarantees faithful text rendering + Resolution = 300 // 300 DPI is a good trade‑off for quality vs. size + } +}; + +// Export the first page (index is 1‑based) +string pngPath = Path.Combine(baseDir, "page1.png"); +pngDevice.Process(pdfDoc.Pages[1], pngPath); +``` + +Sau khi chạy, bạn sẽ thấy `page1.png` nằm cạnh các tệp nguồn của mình. Mở nó bằng bất kỳ trình xem ảnh nào để xác nhận việc chuyển đổi trông đúng. + +## Bước 4: Thêm dấu văn bản tự động điều chỉnh kích thước phông chữ + +**Text stamp** là cách tiện lợi để đóng dấu nước hoặc chú thích PDF mà không thay đổi các luồng nội dung bên dưới. Thiết lập `AutoAdjustFontSizeToFitStampRectangle` có nghĩa là thư viện sẽ thu nhỏ hoặc phóng to văn bản sao cho không bao giờ tràn ra khỏi hình chữ nhật bạn định nghĩa. + +```csharp +// Create a stamp with the desired text +TextStamp autoSizeStamp = new TextStamp("Auto‑size") +{ + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, // Width of the stamp rectangle (points) + Height = 200, // Height of the stamp rectangle (points) + // Optional: position the stamp – here we center it on the page + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + // Optional: give it a semi‑transparent background for readability + Background = new BackgroundInfo(Color.FromRgb(255, 255, 0), 0.3f) +}; + +// Attach the stamp to the first page (you could loop over all pages if needed) +pdfDoc.Pages[1].AddStamp(autoSizeStamp); +``` + +*Why auto‑size?* Nếu sau này bạn thay đổi nội dung dấu thành chuỗi dài hơn (ví dụ, một dấu thời gian động), bạn sẽ không cần tính lại kích thước phông chữ thủ công — dấu sẽ tự điều chỉnh ngay lập tức. + +## Bước 5: Lưu tài liệu PDF đã cập nhật + +Cuối cùng, ghi mọi thứ trở lại đĩa. Bạn có thể ghi đè lên tệp gốc hoặc tạo một tệp mới hoàn toàn; ví dụ dưới đây tạo `output.pdf`. + +```csharp +string outputPath = Path.Combine(baseDir, "output.pdf"); +pdfDoc.Save(outputPath); +``` + +Khi lưu hoàn tất, bạn sẽ có: + +1. Một tệp **PDF/X‑1a** tuân thủ (`output.pdf`). +2. Một **bản xem trước PNG** của trang đầu tiên (`page1.png`). +3. Một **dấu văn bản** vừa vặn hoàn hảo trong hình chữ nhật của nó. + +### Danh sách kiểm tra nhanh + +| ✅ Kiểm tra | Cách xác minh | +|------------|---------------| +| Tuân thủ PDF/X‑1a | Mở `output.pdf` trong Adobe Acrobat → *Print Production* → *Preflight* và chọn “PDF/X‑1a:2001”. | +| PNG hiển thị đúng | Mở `page1.png` trong Windows Photo Viewer hoặc bất kỳ trình chỉnh sửa ảnh nào. | +| Dấu xuất hiện | Cuộn qua `output.pdf` – văn bản “Auto‑size” nên được căn giữa ở trang 1. | + +![xem trước convert pdf sang pdf/x-1a với dấu văn bản tự động điều chỉnh kích thước](image.png "xem trước convert pdf sang pdf/x-1a hiển thị trang có dấu") + +*Văn bản thay thế hình ảnh*: **xem trước convert pdf sang pdf/x-1a với dấu văn bản tự động điều chỉnh kích thước** – minh họa PDF cuối cùng sau tất cả các bước. + +## Biến thể phổ biến & Trường hợp góc cạnh + +- **Multiple pages** – Nếu bạn cần dán dấu mỗi trang, lặp qua `pdfDoc.Pages` và gọi `AddStamp` trong vòng lặp. +- **Different output format** – Thay đổi `PdfFormat.PDF_X_1A` thành `PdfFormat.PDF_A_1B` cho các PDF lưu trữ. +- **Higher‑resolution PNG** – Đặt `Resolution = 600` trong `RenderingOptions` để tạo thumbnail chất lượng in. +- **Custom font for the stamp** – Gán `autoSizeStamp.Font = FontRepository.FindFont("Arial")` trước khi thêm dấu. +- **Error handling** – Bao bọc mỗi bước chính trong `try/catch` và ghi log `ConversionException` hoặc `FileNotFoundException` để dễ dàng gỡ lỗi. + +## Ví dụ làm việc đầy đủ (Sẵn sàng sao chép‑dán) + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Devices; +using Aspose.Pdf.Text; +using Aspose.Pdf.Conversion; +using Aspose.Pdf.Color; // For BackgroundInfo color + +class PdfX1aWorkflow +{ + static void Main() + { + // ----------------------------------------------------------------- + // 1️⃣ Setup paths + // ----------------------------------------------------------------- + string baseDir = @"C:\MyProjects\PdfDemo\"; + string inputPdf = Path.Combine(baseDir, "input.pdf"); + string iccProfile = Path.Combine(baseDir, "Coated_Fogra39L_VIGC_300.icc"); + string pngOutput = Path.Combine(baseDir, "page1.png"); + string finalPdf = Path.Combine(baseDir, "output.pdf"); + + // ----------------------------------------------------------------- + // 2️⃣ Load the source document + // ----------------------------------------------------------------- + Document pdfDoc = new Document(inputPdf); + + // ----------------------------------------------------------------- + // 3️⃣ Convert to PDF/X‑1a (print‑ready) + // ----------------------------------------------------------------- + PdfFormatConversionOptions convOpts = new PdfFormatConversionOptions( + PdfFormat.PDF_X_1A, + ConvertErrorAction.Delete) + { + IccProfileFileName = iccProfile, + OutputIntent = new OutputIntent("FOGRA39") + }; + pdfDoc.Convert(convOpts); + + // ----------------------------------------------------------------- + // 4️⃣ Export first page as PNG (export pdf page png) + // ----------------------------------------------------------------- + PngDevice pngDevice = new PngDevice + { + RenderingOptions = new RenderingOptions + { + AnalyzeFonts = true, + Resolution = 300 + } + }; + pngDevice.Process(pdfDoc.Pages[1], pngOutput); + + // ----------------------------------------------------------------- + // 5️⃣ Add auto‑sizing text stamp (add text stamp pdf) + // ----------------------------------------------------------------- + TextStamp stamp = new TextStamp("Auto‑size") + { + AutoAdjustFontSizeToFitStampRectangle = true, + Width = 400, + Height = 200, + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center, + Background = new BackgroundInfo(Color.From + +{{< /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/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md b/pdf/vietnamese/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md new file mode 100644 index 000000000..b806f47fe --- /dev/null +++ b/pdf/vietnamese/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/_index.md @@ -0,0 +1,268 @@ +--- +category: general +date: 2026-03-29 +description: Lưu PDF thành HTML bằng Aspose.PDF trong C#. Tìm hiểu cách chuyển PDF + sang HTML, bỏ qua hình ảnh và xác minh chữ ký PDF trong một hướng dẫn duy nhất. +draft: false +keywords: +- save pdf as html +- convert pdf to html +- verify pdf signature +- validate pdf digital signature +- aspose convert pdf +language: vi +og_description: Lưu PDF dưới dạng HTML với Aspose.PDF trong C#. Hướng dẫn này chỉ + cho bạn cách chuyển PDF sang HTML, bỏ qua hình ảnh và xác thực chữ ký số của PDF. +og_title: Lưu PDF thành HTML với Aspose – Hướng dẫn C# đầy đủ +tags: +- Aspose.PDF +- C# +- PDF processing +title: Lưu PDF thành HTML với Aspose – Hướng dẫn C# đầy đủ +url: /vi/net/conversion-export/save-pdf-as-html-with-aspose-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Lưu PDF dưới dạng HTML với Aspose – Hướng dẫn đầy đủ C# + +Bạn đã bao giờ tự hỏi làm thế nào để **lưu PDF dưới dạng HTML** mà không kéo toàn bộ các hình ảnh nhúng không? Có thể bạn đang xây dựng một bản xem trước web nhẹ và khối lượng hình ảnh thêm vào đang làm chậm tốc độ trang. Tin tốt là bạn không cần viết trình phân tích tùy chỉnh—Aspose.PDF sẽ thực hiện công việc nặng cho bạn. Trong hướng dẫn này, chúng ta sẽ **chuyển đổi PDF sang HTML**, loại bỏ các hình ảnh, và sau đó **xác minh chữ ký PDF** để đảm bảo tài liệu không bị thay đổi. + +Chúng tôi sẽ đi qua từng dòng mã, giải thích *tại sao* mỗi cài đặt quan trọng, và thậm chí đề cập đến các trường hợp góc cạnh như PDF lớn hoặc thiếu chữ ký. Khi hoàn thành, bạn sẽ có một ứng dụng console C# sẵn sàng chạy, tạo ra một tệp HTML sạch sẽ và cung cấp kết quả true/false rõ ràng cho chữ ký số. + +## Những gì bạn sẽ học + +- Tải tệp PDF bằng Aspose.PDF. +- Sử dụng `HtmlSaveOptions` để **chuyển đổi PDF sang HTML** đồng thời bỏ qua hình ảnh. +- Lưu HTML kết quả vào đĩa. +- Thiết lập đối tượng `PdfFileSignature` để **xác minh chữ ký PDF**. +- Giải thích kết quả boolean và xử lý các vấn đề thường gặp. +- Mẹo bổ sung về hiệu suất và khắc phục sự cố. + +### Yêu cầu trước + +- .NET 6.0 trở lên (mã cũng hoạt động trên .NET Framework 4.7+). +- Gói NuGet Aspose.PDF cho .NET (phiên bản 23.12 hoặc mới hơn). +- Một tệp PDF đã ký (`input.pdf`) chứa chữ ký có tên “Sig1”. +- Kiến thức cơ bản về C# và ứng dụng console. + +> **Mẹo chuyên nghiệp:** Nếu bạn chưa cài đặt gói Aspose.PDF, hãy chạy `dotnet add package Aspose.PDF` từ thư mục dự án của bạn. + +--- + +## Bước 1: Tải tài liệu PDF nguồn + +Trước khi làm bất kỳ việc gì, chúng ta cần một biểu diễn PDF trong bộ nhớ. Lớp `Document` của Aspose.PDF đọc tệp và xây dựng một cây các trang, tài nguyên và chú thích. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // 👉 Step 1: Load the source PDF document + var pdfPath = @"YOUR_DIRECTORY\input.pdf"; + var pdfDocument = new Document(pdfPath); +``` + +**Tại sao điều này quan trọng:** Tải tài liệu một lần giúp việc sử dụng bộ nhớ dự đoán được. Nếu bạn dự định xử lý nhiều PDF trong một vòng lặp, hãy cân nhắc tái sử dụng cùng một thể hiện `Document` sau khi gọi `pdfDocument.Dispose()`. + +--- + +## Bước 2: Cấu hình tùy chọn lưu HTML – Bỏ qua hình ảnh + +Chúng ta muốn **lưu PDF dưới dạng HTML** nhưng không có dữ liệu hình ảnh nặng. `HtmlSaveOptions` cho phép kiểm soát chi tiết, và cờ `SkipImages` yêu cầu Aspose bỏ hoàn toàn các thẻ ``. + +```csharp + // 👉 Step 2: Set up HTML save options to omit all images + var htmlSaveOptions = new HtmlSaveOptions + { + // This flag removes elements from the generated HTML. + SkipImages = true, + // Optional: embed CSS inline to keep the output self‑contained. + EmbedCss = true + }; +``` + +**Tại sao bạn có thể muốn bỏ qua hình ảnh:** Đối với các cổng xem trước hoặc thiết kế mobile‑first, mỗi kilobyte đều quan trọng. Loại bỏ hình ảnh cũng giúp tránh các vấn đề cấp phép nếu PDF nguồn chứa đồ họa có bản quyền. + +--- + +## Bước 3: Xuất PDF thành tệp HTML mà không có hình ảnh + +Bây giờ chúng ta thực sự ghi tệp HTML. Phương thức `Save` sẽ tuân theo các tùy chọn đã thiết lập ở trên. + +```csharp + // 👉 Step 3: Export the PDF as an HTML file without images + var htmlPath = @"YOUR_DIRECTORY\noImages.html"; + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); +``` + +**Kết quả bạn sẽ thấy:** Một tệp `.html` chứa nội dung văn bản, bảng và đồ họa vector (nếu có), nhưng không có thẻ ``. Mở nó trong trình duyệt và bạn sẽ thấy bản hiển thị sạch sẽ, không có hình ảnh của PDF gốc. + +--- + +## Bước 4: Chuẩn bị bộ xác minh chữ ký cho cùng tài liệu + +Lớp `PdfFileSignature` của Aspose.PDF cho phép chúng ta kiểm tra các chữ ký số được nhúng trong PDF. Chúng ta sẽ tạo một thể hiện trỏ tới cùng một `Document` đã tải trước đó. + +```csharp + // 👉 Step 4: Prepare a signature verifier for the same document + using var signatureVerifier = new PdfFileSignature(pdfDocument); +``` + +**Lưu ý về quản lý tài nguyên:** Câu lệnh `using` đảm bảo bộ xác minh giải phóng mọi handle gốc khi chúng ta hoàn thành, ngăn ngừa các vấn đề khóa tệp trên Windows. + +--- + +## Bước 5: Xác minh chữ ký có tên “Sig1” bằng SHA‑3‑256 + +Hầu hết các PDF sử dụng SHA‑256 hoặc SHA‑1, nhưng Aspose cũng hỗ trợ họ họ SHA‑3 mới hơn. Ở đây chúng ta yêu cầu rõ ràng `Sha3_256`. Nếu chữ ký thiếu hoặc thuật toán không khớp, phương thức sẽ trả về `false`. + +```csharp + // 👉 Step 5: Verify the signature named "Sig1" using the SHA‑3‑256 algorithm + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + // (Optional) Display the verification result + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**“false” có thể có nghĩa là:** + +1. **Chữ ký không tìm thấy** – có thể PDF sử dụng tên khác; liệt kê các chữ ký bằng `signatureVerifier.GetSignatureNames()`. +2. **Không khớp thuật toán** – PDF có thể đã được ký bằng SHA‑256; thử `DigestHashAlgorithm.Sha256`. +3. **Tài liệu đã bị thay đổi** – bất kỳ thay đổi nào sau khi ký sẽ làm mất hiệu lực của hash, dẫn đến `false`. + +--- + +## Xử lý các trường hợp góc cạnh phổ biến + +### PDF lớn + +Nếu PDF nguồn của bạn vượt quá vài trăm megabyte, hãy cân nhắc bật **chế độ tiết kiệm bộ nhớ**: + +```csharp +var loadOptions = new LoadOptions { LoadAllPages = false }; +var largePdf = new Document(pdfPath, loadOptions); +``` + +Điều này sẽ stream các trang khi cần, giảm áp lực RAM. + +### Thiếu chữ ký + +Khi bạn không chắc tên chữ ký, hãy liệt kê chúng: + +```csharp +var names = signatureVerifier.GetSignatureNames(); +Console.WriteLine("Available signatures:"); +foreach (var name in names) Console.WriteLine($"- {name}"); +``` + +Chọn tên đúng từ danh sách trước khi gọi `VerifySignature`. + +### Tương thích trình duyệt + +Một số trình duyệt gặp khó khăn với HTML chứa CSS mặc định của Aspose. Đặt `htmlSaveOptions.EmbedCss = true` (như đã chỉ ra ở trên) sẽ nhúng các style vào trong, làm cho tệp trở nên di động hơn. + +--- + +## 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, bao gồm tất cả các bước, xử lý lỗi và chẩn đoán tùy chọn. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; + +class Program +{ + static void Main() + { + // Paths – adjust to your environment + string pdfPath = @"YOUR_DIRECTORY\input.pdf"; + string htmlPath = @"YOUR_DIRECTORY\noImages.html"; + + // Load the PDF document + var pdfDocument = new Document(pdfPath); + + // Configure HTML save options – skip images, embed CSS + var htmlSaveOptions = new HtmlSaveOptions + { + SkipImages = true, + EmbedCss = true + }; + + // Save as HTML without images + pdfDocument.Save(htmlPath, htmlSaveOptions); + Console.WriteLine($"HTML saved to: {htmlPath}"); + + // Set up signature verifier + using var signatureVerifier = new PdfFileSignature(pdfDocument); + + // Optional: list all signatures if you're not sure about the name + var signatureNames = signatureVerifier.GetSignatureNames(); + Console.WriteLine("Found signatures:"); + foreach (var name in signatureNames) Console.WriteLine($"- {name}"); + + // Verify the signature named "Sig1" using SHA‑3‑256 + bool isSignatureValid = signatureVerifier.VerifySignature( + "Sig1", DigestHashAlgorithm.Sha3_256); + + Console.WriteLine($"Signature valid: {isSignatureValid}"); + } +} +``` + +**Kết quả console dự kiến** (đường dẫn sẽ khác): + +``` +HTML saved to: YOUR_DIRECTORY\noImages.html +Found signatures: +- Sig1 +Signature valid: True +``` + +Nếu chữ ký không hợp lệ, dòng cuối cùng sẽ hiển thị `Signature valid: False`. + +--- + +## Câu hỏi thường gặp + +**Q: Tôi có thể chuyển đổi PDF sang HTML *có* hình ảnh không?** +A: Chắc chắn. Chỉ cần đặt `SkipImages = false` (hoặc bỏ qua thuộc tính). Aspose sẽ nhúng mỗi hình ảnh dưới dạng tệp riêng trong một thư mục con bên cạnh HTML. + +**Q: Điều này có hoạt động trên Linux không?** +A: Có. Aspose.PDF là đa nền tảng; chỉ cần đảm bảo các đường dẫn `YOUR_DIRECTORY` sử dụng dấu gạch chéo xuôi hoặc `Path.Combine`. + +**Q: Nếu tôi cần xác thực chữ ký số PDF bằng chứng chỉ tùy chỉnh thì sao?** +A: Sử dụng overload `PdfFileSignature.ValidateSignature` chấp nhận đối tượng `X509Certificate2`. Phương thức này cũng sẽ trả về một `SignatureInfo` chi tiết để bạn có thể kiểm tra. + +**Q: `aspose convert pdf` có giới hạn chỉ với C# không?** +A: Không. API tương tự tồn tại cho Java, Python và các ngôn ngữ .NET khác. Các khái niệm—tải, thiết lập tùy chọn, lưu, xác minh—vẫn giống nhau. + +--- + +## Kết luận + +Bạn giờ đã biết chính xác cách **lưu PDF dưới dạng HTML** bằng Aspose.PDF, loại bỏ các hình ảnh không cần thiết, và **xác minh chữ ký PDF** trong một chương trình C# gọn gàng. Quy trình đơn giản: tải, cấu hình, xuất và xác thực. Với các chẩn đoán tùy chọn và xử lý các trường hợp góc cạnh đã được đề cập, bạn có thể áp dụng mẫu này cho công việc batch, dịch vụ web hoặc tiện ích desktop. + +Sẵn sàng cho bước tiếp theo? Hãy thử **chuyển đổi PDF sang HTML** trong khi giữ lại hình ảnh, hoặc thử nghiệm các thuật toán hash khác để **xác thực chữ ký số PDF** với PKI của bạn. Bạn cũng có thể khám phá chuyển đổi PDF sang DOCX của Aspose hoặc hợp nhất nhiều PDF trước khi xuất—mỗi tính năng đều là mở rộng tự nhiên của quy trình chúng ta vừa xây dựng. + +Chúc lập trình vui vẻ, và hy vọng các bản xem trước HTML của bạn luôn nhẹ nhàng, chữ ký của bạn luôn đáng tin cậy! + +![save pdf as html example](image.png) + +{{< /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/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md b/pdf/vietnamese/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md new file mode 100644 index 000000000..a16a188cb --- /dev/null +++ b/pdf/vietnamese/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-03-29 +description: Lưu PDF dưới dạng HTML bằng C# và Aspose.PDF. Tìm hiểu cách chèn trang + vào PDF, thêm trang PDF trống và tạo chữ ký PKCS7 tách rời trong một quy trình. +draft: false +keywords: +- save pdf as html +- insert page into pdf +- add blank pdf page +- create pkcs7 detached signature +- load pdf document c# +language: vi +og_description: Lưu PDF thành HTML trong C# với Aspose.PDF. Hướng dẫn này chỉ cách + tải PDF, chèn trang, thêm trang trống, ký bằng PKCS7 và xuất ra HTML. +og_title: Lưu PDF dưới dạng HTML bằng C# – Hướng dẫn lập trình đầy đủ +tags: +- Aspose.PDF +- C# +- Digital Signature +- HTML Conversion +title: Lưu PDF dưới dạng HTML bằng C# – Hướng dẫn chi tiết từng bước +url: /vi/net/conversion-export/save-pdf-as-html-with-c-complete-step-by-step-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Lưu PDF dưới dạng HTML bằng C# – Hướng dẫn chi tiết từng bước + +Bạn đã bao giờ cần **save PDF as HTML** nhưng không chắc làm sao để giữ nguyên bố cục đồng thời chỉnh sửa tài liệu nguồn? Bạn không phải là người duy nhất—các nhà phát triển thường phải xử lý các vấn đề về phân trang, trang trắng và chữ ký số trước khi chuyển đổi. Trong hướng dẫn này, chúng tôi sẽ đi qua một quy trình thống nhất thực hiện đúng những việc đó, và sẽ giới thiệu cách **insert page into PDF**, **add blank PDF page**, và **create PKCS7 detached signature**. + +Khi hoàn thành hướng dẫn này, bạn sẽ có một chương trình C# sẵn sàng chạy, tải một PDF hiện có, thay đổi cấu trúc các trang, ký trang đầu tiên, và cuối cùng xuất toàn bộ ra HTML với ưu tiên Unicode CMap. Không có tham chiếu lơ lửng, chỉ một giải pháp tự chứa mà bạn có thể đưa vào bất kỳ dự án .NET nào. + +## Những gì bạn cần + +- **Aspose.PDF for .NET** (phiên bản mới nhất, 23.x tại thời điểm viết). +- **.NET 6.0** hoặc cao hơn – mã cũng biên dịch được với .NET Framework 4.7, nhưng .NET 6 cho hiệu năng tốt nhất. +- Một **certificate file** (`.pfx`) và mật khẩu của nó cho chữ ký PKCS7. +- Một file PDF đầu vào (`input.pdf`) mà bạn muốn thao tác. + +Nếu bạn đã có những thứ trên, chúng ta có thể ngay lập tức chuyển sang mã. Nếu chưa, hãy tải bản dùng thử miễn phí 30 ngày từ trang chính thức; API hoàn toàn giống phiên bản trả phí. + +--- + +## Bước 1 – Tải tài liệu PDF trong C# (Hành động chính) + +Việc đầu tiên là đưa PDF vào bộ nhớ. Lớp `Document` của Aspose thực hiện toàn bộ công việc nặng. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using System.Drawing; + +// Load the PDF from disk +Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + +// Verify the document loaded correctly (optional sanity check) +if (pdfDoc.Pages.Count == 0) +{ + throw new InvalidOperationException("The PDF appears to be empty."); +} +``` + +*Why this matters:* Việc tải file cung cấp cho bạn một mô hình đối tượng có thể thay đổi. Từ đây bạn có thể **insert page into PDF**, thêm trang trắng, hoặc áp dụng chữ ký mà không chạm vào file gốc trên đĩa. + +--- + +## Bước 2 – Chèn trang và Thêm trang PDF trắng + +Đôi khi PDF nguồn có các hiện tượng phân trang—có thể là trang bị thiếu hoặc trùng lặp. Dưới đây chúng ta sao chép trang 2 ngay sau trang 1, sau đó thêm một trang trắng hoàn toàn ở cuối. + +```csharp +// Insert a copy of page 2 after page 1 +pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); + +// Add a brand‑new blank page at the end of the document +pdfDoc.Pages.Add(); + +// Refresh internal pagination after modifications +pdfDoc.Pages.UpdatePagination(); +``` + +*Pro tip:* `UpdatePagination()` tính lại số trang xuất hiện trong chân trang hoặc đầu trang do Aspose tạo. Bỏ qua bước này có thể để lại các số cũ trong HTML cuối cùng. + +--- + +## Bước 3 – Tạo chữ ký PKCS7 Detached (SHA‑512) + +Một chữ ký PKCS7 detached chứng minh tính toàn vẹn của tài liệu mà không nhúng dữ liệu chữ ký trực tiếp vào luồng nội dung PDF. Chúng ta sẽ sử dụng một chứng chỉ được lưu trong file PFX. + +```csharp +using Aspose.Pdf.Signatures; + +// Prepare the PKCS#7 signature object +PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", // Path to your .pfx file + "pwd", // Password for the certificate + Aspose.Pdf.DigestHashAlgorithm.Sha512); +``` + +*Why SHA‑512?* Nó cung cấp hàm băm mạnh hơn SHA‑256 trong khi vẫn được hỗ trợ rộng rãi. Nếu bạn cần tuân thủ các tiêu chuẩn cũ hơn, hãy thay `Sha512` bằng `Sha256`. + +--- + +## Bước 4 – Áp dụng chữ ký số vào Trang 1 với một Hình chữ nhật hiển thị + +Chúng ta sẽ đặt một trường chữ ký có thể nhìn thấy trên trang đầu tiên. Hình chữ nhật xác định vị trí mà hình ảnh chữ ký (hoặc placeholder) sẽ xuất hiện. + +```csharp +using Aspose.Pdf; +using Aspose.Pdf.Signatures; + +// Initialize the signer with the modified document +PdfFileSignature signer = new PdfFileSignature(pdfDoc); + +// Sign page 1, show the signature rectangle (100,100)-(200,200) +signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); +``` + +*Edge case:* Nếu trang mục tiêu đã chứa một trường biểu mẫu có cùng tên, API sẽ ném ra ngoại lệ. Đảm bảo tên trường duy nhất hoặc xóa các trường hiện có trước khi ký. + +--- + +## Bước 5 – Cấu hình tùy chọn lưu HTML để ưu tiên Unicode CMap + +Khi chuyển đổi sang HTML, Aspose có thể nhúng phông chữ dưới dạng base‑64, sử dụng các subset, hoặc dựa vào Unicode CMaps. Ưu tiên Unicode giúp giảm kích thước file và cải thiện khả năng tìm kiếm văn bản. + +```csharp +using Aspose.Pdf; + +// Set HTML conversion options +HtmlSaveOptions htmlOptions = new HtmlSaveOptions +{ + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel +}; +``` + +*What does this do?* Nó chỉ cho bộ chuyển đổi ưu tiên Unicode CMaps hơn việc nhúng phông chữ tùy chỉnh bất cứ khi nào có thể, rất thích hợp cho các PDF đa ngôn ngữ. + +--- + +## Bước 6 – Lưu tài liệu đã ký dưới dạng HTML + +Cuối cùng, ghi PDF đã xử lý ra một thư mục HTML (Aspose sẽ tạo một thư mục chứa các file hỗ trợ như CSS và hình ảnh). + +```csharp +// Export the final PDF to HTML +pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); +``` + +Nếu bạn mở `cmap.html` trong trình duyệt, bạn sẽ thấy bố cục PDF gốc được hiển thị dưới dạng HTML, đầy đủ với hình ảnh chữ ký hiển thị trên trang 1. + +--- + +## Ví dụ làm việc đầy đủ (Tất cả các bước kết hợp) + +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 ứng dụng console. Nó bao gồm tất cả các chỉ thị `using` cần thiết và xử lý lỗi. + +```csharp +using System; +using Aspose.Pdf; +using Aspose.Pdf.Facades; +using Aspose.Pdf.Signatures; + +namespace PdfToHtmlDemo +{ + class Program + { + static void Main(string[] args) + { + // 1️⃣ Load the PDF document + Document pdfDoc = new Document(@"YOUR_DIRECTORY\input.pdf"); + if (pdfDoc.Pages.Count == 0) + throw new InvalidOperationException("Input PDF has no pages."); + + // 2️⃣ Insert page 2 after page 1 and add a blank page + pdfDoc.Pages.Insert(2, pdfDoc.Pages[1]); // copy page 2 + pdfDoc.Pages.Add(); // blank page at end + pdfDoc.Pages.UpdatePagination(); + + // 3️⃣ Prepare a PKCS#7 detached signature (SHA‑512) + PKCS7Detached pkcsSignature = new PKCS7Detached( + @"YOUR_DIRECTORY\cert.pfx", + "pwd", + DigestHashAlgorithm.Sha512); + + // 4️⃣ Apply the signature to page 1 with a visible rectangle + PdfFileSignature signer = new PdfFileSignature(pdfDoc); + signer.Sign( + pageNumber: 1, + signVisible: true, + signatureRectangle: new Rectangle(100, 100, 200, 200), + pkcsSignature); + + // 5️⃣ Set HTML save options – prioritize Unicode CMap + HtmlSaveOptions htmlOptions = new HtmlSaveOptions + { + FontEncodingStrategy = HtmlSaveOptions.FontEncodingRules.DecreaseToUnicodePriorityLevel + }; + + // 6️⃣ Save the result as HTML + pdfDoc.Save(@"YOUR_DIRECTORY\cmap.html", htmlOptions); + + Console.WriteLine("PDF successfully converted to HTML with signature."); + } + } +} +``` + +**Expected result:** +- `cmap.html` (tệp HTML chính) +- Thư mục `cmap_files` chứa CSS, hình ảnh và tài nguyên phông chữ. +- Trang đầu tiên hiển thị một hộp chữ ký có thể nhìn thấy tại các tọa độ bạn đã đặt. + +--- + +## Câu hỏi thường gặp & Trường hợp đặc biệt + +| Question | Answer | +|----------|--------| +| *Can I use a self‑signed certificate?* | Yes, Aspose.PDF accepts any valid PFX. Just remember browsers may flag the signature as untrusted. | +| *What if I need to sign multiple pages?* | Create separate `PdfFileSignature` calls for each page, or use a loop that updates `pageNumber`. | +| *Is there a way to embed the signature image instead of a rectangle?* | Supply a `SignatureAppearance` object with an image stream to `PdfFileSignature.Sign`. | +| *My PDF has encrypted content—can I still convert?* | Decrypt it first using `pdfDoc.Decrypt("ownerPassword")`, then run the steps. | +| *Will the HTML keep hyperlinks from the original PDF?* | Aspose preserves link annotations by default. If you see missing links, set `htmlOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedParts;` | + +--- + +## Kết luận + +Chúng tôi vừa trình diễn cách **save PDF as HTML** đồng thời **insert page into PDF**, **add blank PDF page**, và **create PKCS7 detached signature**—tất cả bằng C#. Quy trình này tuyến tính, dễ gỡ lỗi, và hoàn toàn tùy chỉnh cho các dự án quy mô lớn. + +Tiếp theo, bạn có thể khám phá: + +- **Batch processing** – lặp qua một thư mục các PDF và chuyển đổi từng cái. +- **Custom CSS** – tùy chỉnh `HtmlSaveOptions.CustomCss` để phù hợp với giao diện trang web của bạn. +- **Advanced signatures** – sử dụng máy chủ timestamp hoặc LTV (Long‑Term Validation) cho chữ ký đạt chuẩn tuân thủ. + +Hãy thử những gợi ý trên, và bạn sẽ có một pipeline PDF‑to‑HTML mạnh mẽ, thân thiện với SEO và đáng tin cậy cho các trợ lý AI. Chúc bạn lập trình vui vẻ! + +--- + +![Sơ đồ hiển thị PDF được tải, các trang được chèn, chữ ký được áp dụng, sau đó xuất ra HTML](/images/save-pdf-as-html-workflow.png "luồng công việc lưu pdf thành html") + +*Image alt text:* **luồng công việc lưu pdf thành html** + +{{< /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 4eda08eeb..94d8f0b1b 100644 --- a/pdf/vietnamese/net/digital-signatures/_index.md +++ b/pdf/vietnamese/net/digital-signatures/_index.md @@ -58,12 +58,16 @@ Tìm hiểu cách xác minh chữ ký số trong tệp PDF bằng Aspose.PDF cho ### [Xác minh chữ ký PDF trong C# – Hướng dẫn toàn diện để xác thực chữ ký số PDF](./verify-pdf-signature-in-c-complete-guide-to-validate-digital/) Hướng dẫn chi tiết cách xác thực chữ ký số PDF bằng C# với Aspose.PDF, bao gồm các bước triển khai và kiểm tra tính toàn vẹn. + ### [Tải tài liệu PDF C# – Chuyển đổi sang PDF/X‑4 và Liệt kê chữ ký](./load-pdf-document-c-convert-to-pdf-x-4-list-signatures/) Hướng dẫn cách tải tài liệu PDF, chuyển đổi sang định dạng PDF/X‑4 và liệt kê các chữ ký trong tài liệu bằng C#. ### [Xác thực chữ ký PDF với Aspose – Chuyển PDF sang HTML](./validate-pdf-signature-with-aspose-convert-pdf-to-html/) Hướng dẫn cách xác thực chữ ký PDF và chuyển đổi tài liệu PDF sang HTML bằng Aspose. +### [Cách ký PDF và Thêm Hình ảnh – Hướng dẫn C# đầy đủ](./how-to-sign-pdf-and-add-images-complete-c-guide/) +Hướng dẫn chi tiết cách ký tài liệu PDF và chèn hình ảnh vào chữ ký bằng C# với Aspose.PDF. + ## 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/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md b/pdf/vietnamese/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md new file mode 100644 index 000000000..dfdab82d2 --- /dev/null +++ b/pdf/vietnamese/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-03-29 +description: Cách ký PDF bằng chữ ký số và thêm hình ảnh đã cắt trong C#. Học cách + thêm chữ ký số vào PDF, cắt hình ảnh cho PDF và chèn hình ảnh vào PDF một cách dễ + dàng. +draft: false +keywords: +- how to sign pdf +- add digital signature pdf +- crop image for pdf +- add image to pdf +- digital signature pdf page +language: vi +og_description: Cách ký PDF bằng chữ ký số và chèn hình ảnh đã cắt bằng Aspose.Pdf + trong C#. Hãy theo dõi hướng dẫn này để có giải pháp hoàn chỉnh. +og_title: Cách ký PDF và thêm hình ảnh – Hướng dẫn C# từng bước +tags: +- Aspose.Pdf +- C# +- PDF manipulation +title: Cách ký PDF và thêm hình ảnh – Hướng dẫn C# đầy đủ +url: /vi/net/digital-signatures/how-to-sign-pdf-and-add-images-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách ký PDF và Thêm Hình Ảnh – Hướng Dẫn C# Đầy Đủ + +Bạn đã bao giờ tự hỏi **cách ký PDF** một cách lập trình đồng thời chèn một hình ảnh tùy chỉnh chưa? Có thể bạn đang xây dựng quy trình phê duyệt và cần một chữ ký pháp lý *và* một hình thu nhỏ của ảnh người ký trên cùng một trang. Nói ngắn gọn, bạn muốn **add digital signature pdf** vào nội dung, cắt hình ảnh đó, và sau đó **add image to pdf** mà không gặp khó khăn. + +Bài hướng dẫn này sẽ đưa bạn qua từng bước — từ việc tải chứng chỉ ECDSA PKCS#7 đến việc cắt JPEG và dán nó lên trang đã ký. Khi hoàn thành, bạn sẽ có một tệp C# duy nhất, có thể chạy được, ký trang 1, cắt ảnh thành 400 × 400 px và đặt nó vào vị trí chính xác. Không có script bên ngoài, không có phép thuật, chỉ có mã rõ ràng và giải thích. + +## Yêu Cầu Trước + +- .NET 6.0 hoặc mới hơn (mã cũng hoạt động với .NET Framework 4.7+) +- **Aspose.Pdf for .NET** package NuGet (phiên bản 23.9 hoặc mới hơn) +- Chứng chỉ ECDSA P‑256 ở định dạng PKCS#7 (`.pfx`) và mật khẩu của nó +- Hình ảnh JPEG mà bạn muốn nhúng (ví dụ: `photo.jpg`) + +> **Mẹo chuyên nghiệp:** Giữ tệp chứng chỉ của bạn ra khỏi source control và bảo vệ mật khẩu bằng một trình quản lý bí mật. + +--- + +## Bước 1: Thiết Lập Dự Án và Nhập Khẩu + +Đầu tiên, tạo một ứng dụng console (hoặc tích hợp vào bất kỳ dịch vụ hiện có nào). Thêm tham chiếu Aspose.Pdf: + +```bash +dotnet add package Aspose.Pdf +``` + +Sau đó, bao gồm các namespace cần thiết: + +```csharp +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; +``` + +Các câu lệnh `using` này cho phép bạn truy cập các lớp `Document`, `Signature`, và `Rectangle` mà chúng ta sẽ dùng sau. + +## Bước 2: Tải PDF và Chuẩn Bị Chữ Ký + +Chúng ta sẽ mở một tệp PDF hiện có (`source.pdf`) và tạo một đối tượng **digital signature pdf** sử dụng chữ ký PKCS#7 tách rời. Chứng chỉ là khóa ECDSA P‑256, được chấp nhận rộng rãi cho việc tuân thủ. + +```csharp +// Load the PDF you want to sign +var doc = new Document("YOUR_DIRECTORY/source.pdf"); + +// Initialize the signature appearance (optional but recommended) +var signature = new Signature(doc); +signature.Contact = "John Doe"; +signature.Location = "New York, USA"; +signature.Reason = "Document approval"; + +// Load the PKCS#7 certificate (ECDSA P‑256) for signing +var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", // certificate file + "YOUR_PASSWORD"); // certificate password +``` + +**Tại sao điều này quan trọng:** Sử dụng chữ ký PKCS#7 tách rời giữ nguyên nội dung PDF gốc trong khi nhúng một hàm băm mật mã. Đây là cách tiếp cận tiêu chuẩn trong ngành cho các PDF pháp lý. + +## Bước 3: Áp Dụng Chữ Ký Kỹ Thuật Số vào Trang Cụ Thể + +Bây giờ chúng ta sẽ đặt trường chữ ký hiển thị trên **page 1**. Hình chữ nhật xác định vị trí của hộp chữ ký (tọa độ tính bằng points, trong đó 1 inch = 72 points). + +```csharp +// Apply the digital signature to page 1, covering a rectangular area +signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); +``` + +Nếu bạn không cần hộp hiển thị, đặt `isVisible` thành `false`. `signatureRect` có thể điều chỉnh để phù hợp với bố cục tài liệu của bạn. + +## Bước 4: Mở Luồng Hình Ảnh và Xác Định Vùng Cắt + +Chúng ta sẽ đọc tệp JPEG vào một luồng và chỉ định một **source rectangle** chọn vùng 400 × 400 pixel ở góc trên‑trái. Đây là thao tác **crop image for pdf**. + +```csharp +// Open the image file that will be added to the PDF +using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + +// Define the source rectangle that selects the portion to crop (0‑400 pixels) +var sourceRect = new Rectangle(0, 0, 400, 400); +``` + +> **Trường hợp đặc biệt:** Nếu hình ảnh của bạn nhỏ hơn 400 × 400, việc cắt sẽ tự động giới hạn tới kích thước thực tế của ảnh — không có ngoại lệ nào được ném. + +## Bước 5: Xác Định Vị Trí Hiển Thị Hình Ảnh Đã Cắt + +Tiếp theo, đặt **destination rectangle** trên trang PDF. Trong ví dụ này chúng tôi đặt hình ảnh tại (50, 50) với kích thước 200 × 200 points (≈2.78 inch vuông). + +```csharp +// Define the destination rectangle where the cropped image will be placed on the page +var destinationRect = new Rectangle(50, 50, 200, 200); +``` + +Bạn có thể thử nghiệm: thay đổi tọa độ X/Y để di chuyển hình ảnh, hoặc điều chỉnh chiều rộng/chiều cao để thay đổi tỷ lệ. + +## Bước 6: Chèn Hình Ảnh Đã Cắt vào Trang Đã Ký + +Cuối cùng, chúng ta thêm hình ảnh vào **page 1** (cùng trang hiện đang có chữ ký). Phương thức `AddImage` overload mà chúng ta dùng chấp nhận các hình chữ nhật nguồn và đích, thực hiện việc cắt và đặt vị trí trong một lời gọi. + +```csharp +// Insert the cropped image onto page 1 at the specified location +doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); +``` + +Trong nền, Aspose.Pdf sẽ trích xuất vùng 400 × 400 pixel, thay đổi kích thước thành 200 × 200 points và ghi vào luồng nội dung PDF. + +## Bước 7: Lưu PDF Đã Ký và Được Thêm Hình Ảnh + +Sau khi thực hiện mọi thay đổi, lưu tài liệu. Bạn có thể ghi đè lên tệp gốc hoặc tạo một tệp mới. + +```csharp +// Save the final document +doc.Save("YOUR_DIRECTORY/output_signed.pdf"); +Console.WriteLine("PDF signed and image added successfully!"); +``` + +Khi mở `output_signed.pdf` trong Adobe Acrobat hoặc bất kỳ trình xem PDF nào, bạn sẽ thấy: + +- Một trường chữ ký hiển thị tại tọa độ bạn đã chỉ định. +- Ảnh đã cắt được đặt tại (50, 50) trên page 1. +- Chữ ký kỹ thuật số được xác thực (miễn là trình xem tin tưởng chứng chỉ của bạn). + +--- + +## Câu Hỏi Thường Gặp (FAQ) + +| Câu hỏi | Trả lời | +|----------|--------| +| **Tôi có thể ký trang khác không?** | Thay đổi đối số `pageNumber` trong `signature.Sign` thành bất kỳ chỉ số trang hợp lệ nào (đánh số từ 1). | +| **Nếu tôi cần nhiều chữ ký thì sao?** | Tạo một thể hiện `Signature` mới cho mỗi trang hoặc vị trí, sử dụng lại `pkcsSignature` nếu cùng một chứng chỉ được áp dụng. | +| **Việc cắt ảnh có bị giới hạn ở hình chữ nhật không?** | Có, `AddImage` của Aspose.Pdf hoạt động với các vùng hình chữ nhật. Đối với hình dạng phức tạp, bạn cần tiền xử lý ảnh (ví dụ, dùng System.Drawing) trước khi nhúng. | +| **Làm sao để làm chữ ký không hiển thị?** | Đặt `isVisible` thành `false` và bỏ qua `signatureRect`. Chữ ký vẫn sẽ hợp lệ về mặt mật mã. | +| **Ngoài JPEG, tôi có thể nhúng định dạng nào khác?** | PNG, BMP, GIF và TIFF đều được hỗ trợ. Chỉ cần thay đổi đường dẫn tệp và đảm bảo luồng đọc đúng byte. | + +## Ví Dụ Hoàn Chỉnh + +Dưới đây là chương trình hoàn chỉnh, tự chứa. Sao chép‑dán vào `Program.cs`, điều chỉnh các đường dẫn và chạy. + +```csharp +// Program.cs +using System; +using System.IO; +using Aspose.Pdf; +using Aspose.Pdf.Forms; +using Aspose.Pdf.Drawing; + +class Program +{ + static void Main() + { + // 1️⃣ Load the source PDF + var doc = new Document("YOUR_DIRECTORY/source.pdf"); + + // 2️⃣ Prepare the digital signature appearance + var signature = new Signature(doc) + { + Contact = "John Doe", + Location = "New York, USA", + Reason = "Document approval" + }; + + // 3️⃣ Load the PKCS#7 ECDSA P‑256 certificate + var pkcsSignature = new PKCS7Detached( + "YOUR_DIRECTORY/ecdsa.pfx", + "YOUR_PASSWORD"); + + // 4️⃣ Apply a visible signature on page 1 + signature.Sign( + pageNumber: 1, + isVisible: true, + signatureRect: new Rectangle(100, 100, 300, 300), + pkcsSignature); + + // 5️⃣ Open the image to be added + using var imageStream = File.OpenRead("YOUR_DIRECTORY/photo.jpg"); + + // 6️⃣ Define crop (source) and placement (destination) rectangles + var sourceRect = new Rectangle(0, 0, 400, 400); // crop 400×400 px from top‑left + var destinationRect = new Rectangle(50, 50, 200, 200); // place at (50,50) with 200×200 pt size + + // 7️⃣ Insert the cropped image onto the same page + doc.Pages[1].AddImage(imageStream, sourceRect, destinationRect); + + // 8️⃣ Save the final PDF + doc.Save("YOUR_DIRECTORY/output_signed.pdf"); + Console.WriteLine("PDF signed and image added successfully!"); + } +} +``` + +**Kết quả mong đợi:** Khi mở `output_signed.pdf` sẽ hiển thị một trường chữ ký (100 × 100 → 300 × 300 points) và một hình ảnh 200 × 200 point được lấy từ góc trên‑trái của `photo.jpg`. Chữ ký được xác thực dựa trên chứng chỉ ECDSA đã cung cấp. + +## Kết Luận + +Chúng ta đã đề cập đến **cách ký PDF** files, cách **add digital signature pdf** vào một trang cụ thể, cách **crop image for pdf**, và cuối cùng cách **add image to pdf** bằng Aspose.Pdf trong C#. Toàn bộ quy trình — từ tải chứng chỉ đến lưu tài liệu cuối cùng — được gói gọn trong một tệp nguồn duy nhất, dễ đọc. + +Nếu bạn đã sẵn sàng cho thử thách tiếp theo, hãy cân nhắc: + +- Thêm **nhiều chữ ký** trên các trang khác nhau (sử dụng khái niệm “digital signature pdf page”). +- Nhúng **mã QR** liên kết tới các dịch vụ xác thực. +- Tự động hoá quy trình trong một API ASP.NET Core để tạo PDF ngay lập tức. + +Hãy nhớ, chìa khóa để tự động hoá PDF mạnh mẽ là tách biệt rõ ràng các mối quan tâm: xử lý chữ ký, xử lý hình ảnh và lắp ráp tài liệu cuối cùng. Thử nghiệm với các tọa độ, thay đổi định dạng ảnh, hoặc thử nghiệm với timestamp — quy trình của bạn giờ đã hoàn toàn mở rộng. + +Có câu hỏi, trường hợp đặc biệt, hoặc một ví dụ thú vị muốn chia sẻ? Để lại bình luận bên dưới, và chúc bạn 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-security-and-signatures/_index.md b/pdf/vietnamese/net/programming-with-security-and-signatures/_index.md index 9252b2d23..be37e62d7 100644 --- a/pdf/vietnamese/net/programming-with-security-and-signatures/_index.md +++ b/pdf/vietnamese/net/programming-with-security-and-signatures/_index.md @@ -35,6 +35,7 @@ Hướng dẫn cung cấp cho bạn tổng quan chi tiết về các phương ph | [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 sửa tệp PDF – Hướng dẫn C# đầy đủ với Aspose.Pdf](./how-to-repair-pdf-files-complete-c-guide-with-aspose-pdf/) | Học cách sửa chữa các tệp PDF bị hỏng bằng Aspose.PDF cho .NET trong hướng dẫn chi tiết bằng C#. | +| [Xác thực chữ ký số PDF – Hướng dẫn C# đầy đủ](./validate-pdf-digital-signature-complete-c-guide/) | Học cách xác thực chữ ký số trong PDF bằng Aspose.PDF cho .NET với 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/validate-pdf-digital-signature-complete-c-guide/_index.md b/pdf/vietnamese/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md new file mode 100644 index 000000000..62f1e9503 --- /dev/null +++ b/pdf/vietnamese/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/_index.md @@ -0,0 +1,264 @@ +--- +category: general +date: 2026-03-29 +description: Xác thực chữ ký số PDF nhanh chóng. Tìm hiểu cách kiểm tra chữ ký PDF, + kiểm tra trạng thái chữ ký PDF và phát hiện PDF bị giả mạo bằng Aspose.Pdf trong + C#. +draft: false +keywords: +- validate pdf digital signature +- how to verify pdf signature +- check pdf signature +- verify pdf signature +- detect tampered pdf +language: vi +og_description: Xác thực chữ ký số PDF trong C#. Hướng dẫn này cho thấy cách kiểm + tra chữ ký PDF, kiểm tra tính toàn vẹn của chữ ký PDF và phát hiện PDF bị giả mạo + bằng Aspose.Pdf. +og_title: Xác thực Chữ ký số PDF – Hướng dẫn C# toàn diện +tags: +- C# +- Aspose.Pdf +- PDF Security +title: Xác thực Chữ ký số PDF – Hướng dẫn đầy đủ C# +url: /vi/net/programming-with-security-and-signatures/validate-pdf-digital-signature-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Xác Thực Chữ Ký Số PDF – Hướng Dẫn Toàn Diện C# + +Bạn đã bao giờ tự hỏi **cách xác minh chữ ký PDF** mà không phải rối bời? Có thể bạn nhận được một hợp đồng, mở nó, và cần chắc chắn 100 % rằng nó chưa bị thay đổi. Tin tốt là bạn không cần phòng thí nghiệm pháp y—chỉ cần vài dòng C# và Aspose.Pdf là có thể **xác thực chữ ký số PDF** ngay lập tức. + +Trong hướng dẫn này, chúng ta sẽ đi qua mọi thứ bạn cần biết: từ cài đặt thư viện đến việc diễn giải kết quả, và thậm chí xử lý các trường hợp đặc biệt như nhiều chữ ký hoặc tệp bị hỏng. Khi kết thúc, bạn sẽ có thể **kiểm tra trạng thái chữ ký PDF** một cách lập trình và **phát hiện PDF bị giả mạo** trước khi chúng gây rắc rối. + +## Những Gì Bạn Cần + +- **.NET 6.0 hoặc mới hơn** (mã vẫn chạy trên .NET Framework, nhưng .NET 6 là lựa chọn tối ưu). +- **Aspose.Pdf for .NET** – bạn có thể lấy nó từ NuGet (`Install-Package Aspose.Pdf`). +- Một **PDF đã ký** mà bạn muốn kiểm tra. Nếu chưa có, hãy tạo một tài liệu ký đơn giản bằng Adobe Acrobat hoặc bất kỳ công cụ ký PDF nào. + +> Pro tip: Giữ các tệp PDF của bạn ra khỏi thư mục gốc của dự án; một đường dẫn tương đối như `./Samples/signed.pdf` hoạt động tốt và tránh việc vô tình commit các tệp bí mật. + +## Triển Khai Bước‑Theo‑Bước + +Dưới đây chúng tôi chia giải pháp thành các khối logic. Mỗi khối có tiêu đề H2 riêng—một trong số chúng thậm chí chứa từ khóa chính, đáp ứng quy tắc SEO. + +### ## Bước 1 – Cài Đặt và Tham Chiếu Aspose.Pdf + +First, add the NuGet package to your project: + +```powershell +dotnet add package Aspose.Pdf +``` + +Or, if you’re using the Package Manager Console: + +```powershell +Install-Package Aspose.Pdf +``` + +Sau khi gói được cài đặt, Visual Studio sẽ tự động thêm namespace `using Aspose.Pdf;`. Không cần thao tác DLL thêm nào. + +### ## Bước 2 – Tải Tài Liệu PDF Đã Ký + +Now we actually open the file. The `using` statement ensures the document is disposed correctly, which is especially important for large PDFs. + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + // Step 2: Load the signed PDF document + var pdfPath = @"./Samples/signed.pdf"; // adjust the path as needed + using var pdfDocument = new Document(pdfPath); +``` + +> **Why this matters:** Loading the document gives us access to the `DigitalSignatureInfo` object, the entry point for all signature‑related queries. + +> **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 đối tượng `DigitalSignatureInfo`, điểm khởi đầu cho mọi truy vấn liên quan đến chữ ký. + +### ## Bước 3 – Lấy Thông Tin Chữ Ký Số + +Aspose.Pdf wraps the low‑level PKI details in a friendly API. Grab the `DigitalSignatureInfo` property and you’ll have everything you need to **check PDF signature** health. + +```csharp + // Step 3: Retrieve digital signature information + var signatureInfo = pdfDocument.DigitalSignatureInfo; +``` + +Nếu PDF chứa nhiều chữ ký, `signatureInfo` sẽ tổng hợp chúng, cung cấp các thuộc tính như `Count`, `Certificates`, và `IsCompromised`. Đối với tệp chỉ có một chữ ký, các collection này sẽ chỉ có một mục. + +### ## Bước 4 – Xác Định Chữ Ký Có Bị Đánh Cắp Không + +The `IsCompromised` flag tells you if the document has been altered **after** it was signed. A `true` value means the PDF is tampered—exactly what we want to **detect tampered PDF**. + +```csharp + // Step 4: Determine whether the signature has been compromised (e.g., tampered) + bool isCompromised = signatureInfo.IsCompromised; +``` + +Nếu bạn cần **verify PDF signature** kỹ hơn (ví dụ, xác thực chuỗi chứng chỉ), bạn cũng có thể kiểm tra `signatureInfo.Certificates` và gọi `Validate()` cho mỗi chứng chỉ. Đối với hầu hết các trường hợp, `IsCompromised` đã đủ. + +### ## Bước 5 – Xuất Kết Quả Ra Console + +Finally, let the user know what happened. We’ll print a friendly message and also return an appropriate exit code for automation scripts. + +```csharp + // Step 5: Output the result + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional: return non‑zero exit code if compromised (useful for CI pipelines) + Environment.Exit(isCompromised ? 1 : 0); + } +} +``` + +#### Kết Quả Dự Kiến + +``` +Signature compromised: False +``` + +Nếu bạn cố tình làm thay đổi PDF (ví dụ, thêm một ký tự lạ), kết quả sẽ chuyển thành `True`. Đó là lúc bạn biết tính toàn vẹn của tài liệu đã bị phá vỡ. + +### ## Xử Lý Các Trường Hợp Đặc Biệt và Những Cạm Bẫy Thông Thường + +#### 1. Nhiều Chữ Ký + +When a PDF has more than one signer, `IsCompromised` reflects the *overall* state—if **any** signature is broken, the flag becomes `true`. To pinpoint which signer is at fault: + +```csharp +foreach (var sig in signatureInfo.Signatures) +{ + Console.WriteLine($"Signer: {sig.SignerName}, Compromised: {sig.IsCompromised}"); +} +``` + +#### 2. Thiếu Chữ Ký + +If the PDF isn’t signed at all, `signatureInfo.Count` will be `0`. You should guard against a false sense of security: + +```csharp +if (signatureInfo.Count == 0) +{ + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); +} +``` + +#### 3. Tệp PDF Bị Hỏng + +A corrupted file throws a `PdfException`. Wrap the loading logic in a try‑catch to give a clean error message: + +```csharp +try +{ + using var pdfDocument = new Document(pdfPath); + // ...rest of the code +} +catch (PdfException ex) +{ + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); +} +``` + +#### 4. Xác Thực Chứng Chỉ (Nâng Cao) + +If you need to ensure the signing certificate is still valid (not revoked, within its validity period), you can call: + +```csharp +bool certValid = signatureInfo.Signatures[0].Certificate.Validate(); +Console.WriteLine($"Certificate valid: {certValid}"); +``` + +This step moves you from a simple **check PDF signature** to a full **how to verify PDF signature** workflow. + +### ## Ví Dụ Hoàn Chỉnh Hoạt Động + +Putting everything together, here’s the complete, ready‑to‑run program: + +```csharp +using System; +using Aspose.Pdf; + +class PdfSignatureValidator +{ + static void Main() + { + var pdfPath = @"./Samples/signed.pdf"; + + try + { + using var pdfDocument = new Document(pdfPath); + var signatureInfo = pdfDocument.DigitalSignatureInfo; + + if (signatureInfo.Count == 0) + { + Console.WriteLine("No digital signatures found in the document."); + Environment.Exit(2); + return; + } + + bool isCompromised = signatureInfo.IsCompromised; + Console.WriteLine($"Signature compromised: {isCompromised}"); + + // Optional detailed per‑signer report + for (int i = 0; i < signatureInfo.Count; i++) + { + var sig = signatureInfo.Signatures[i]; + Console.WriteLine($"Signer {i + 1}: {sig.SignerName}"); + Console.WriteLine($" Compromised: {sig.IsCompromised}"); + Console.WriteLine($" Certificate valid: {sig.Certificate.Validate()}"); + } + + Environment.Exit(isCompromised ? 1 : 0); + } + catch (PdfException ex) + { + Console.WriteLine($"Failed to open PDF: {ex.Message}"); + Environment.Exit(3); + } + } +} +``` + +Run the program from the command line: + +```bash +dotnet run --project PdfSignatureValidator.csproj +``` + +You should see a clear report telling you whether the PDF is intact, which signer(s) are involved, and if their certificates are still trustworthy. + +## Tổng Quan Trực Quan + +Below is a quick diagram illustrating the flow from **loading the PDF** to **outputting the validation result**. It’s a handy reference when you’re sketching the architecture of a larger document‑processing pipeline. + +![validate pdf digital signature workflow diagram](image.png "Diagram showing PDF load → DigitalSignatureInfo → IsCompromised check") + +*Alt text: sơ đồ quy trình xác thực chữ ký số PDF* + +## Kết Luận + +We’ve just covered a **complete, end‑to‑end solution to validate PDF digital signature** using Aspose.Pdf in C#. The key takeaways: + +- Load the PDF with `Document`. => - Tải PDF bằng `Document`. +- Pull `DigitalSignatureInfo` and check `IsCompromised` to **detect tampered PDF**. => - Lấy `DigitalSignatureInfo` và kiểm tra `IsCompromised` để **phát hiện PDF bị giả mạo**. +- Handle multiple signatures, missing signatures, and corrupted files gracefully. => - Xử lý nhiều chữ ký, thiếu chữ ký và tệp bị hỏng một cách mềm mại. +- Optionally validate the signing certificate for a full **how to verify PDF signature** checklist. => - Tùy chọn xác thực chứng chỉ ký để có danh sách kiểm tra đầy đủ **cách xác minh chữ ký PDF**. + +From here you can expand the logic—store validation results in a database, reject unsigned uploads in a web API, or integrate with a document‑management system. If you’re curious about other PDF security features, look into **checking PDF signature timestamps**, **adding a new signature**, or **encrypting PDFs**. + +Got questions about edge cases, or want to see how to **verify PDF signature** with a different library like iText 7? Drop a comment below, and let’s keep the conversation going. 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