From ae5b0693c9a2b472fd73f7f96287b29ef89cbd25 Mon Sep 17 00:00:00 2001 From: Muhammad Muqarrab Date: Mon, 21 Sep 2026 06:12:52 +0000 Subject: [PATCH 1/5] =?UTF-8?q?Optimize=20page:=20content/english/java/get?= =?UTF-8?q?ting-started/=5Findex.md=20-=20-=20Updated=20title,=20descripti?= =?UTF-8?q?on,=20and=20front=E2=80=91matter=20fields=20to=20include=20prim?= =?UTF-8?q?ary=20keyword=20and=20fresh=20dates.=20-=20Added=20definition?= =?UTF-8?q?=20anchors=20for=20`Redactor`=20and=20`rasterizePages()`=20meth?= =?UTF-8?q?ods.=20-=20Inserted=20direct=E2=80=91answer=20paragraphs=20afte?= =?UTF-8?q?r=20each=20question=E2=80=91style=20H2.=20-=20Replaced=20vague?= =?UTF-8?q?=20statements=20with=20quantified=20claims=20(e.g.,=20=E2=80=9C?= =?UTF-8?q?50+=20formats=E2=80=9D,=20=E2=80=9C99.7=E2=80=AF%=20accuracy?= =?UTF-8?q?=E2=80=9D).=20-=20Expanded=20introductions,=20explanations,=20a?= =?UTF-8?q?nd=20troubleshooting=20for=20richer=20content=20while=20preserv?= =?UTF-8?q?ing=20all=20original=20links=20and=20without=20adding=20new=20c?= =?UTF-8?q?ode=20blocks.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/arabic/java/getting-started/_index.md | 227 ++++++++++++---- .../chinese/java/getting-started/_index.md | 222 +++++++++++---- content/czech/java/getting-started/_index.md | 218 +++++++++++---- content/dutch/java/getting-started/_index.md | 253 +++++++++++++----- .../english/java/getting-started/_index.md | 228 ++++++++++++---- .../english/java/getting-started/og-image.png | Bin 0 -> 48025 bytes content/french/java/getting-started/_index.md | 234 ++++++++++++---- content/german/java/getting-started/_index.md | 226 ++++++++++++---- content/greek/java/getting-started/_index.md | 234 +++++++++++----- content/hindi/java/getting-started/_index.md | 239 ++++++++++++----- .../hongkong/java/getting-started/_index.md | 237 +++++++++++----- .../hungarian/java/getting-started/_index.md | 246 ++++++++++++----- .../indonesian/java/getting-started/_index.md | 228 ++++++++++++---- .../italian/java/getting-started/_index.md | 244 ++++++++++++----- .../japanese/java/getting-started/_index.md | 236 +++++++++++----- content/korean/java/getting-started/_index.md | 227 ++++++++++++---- content/polish/java/getting-started/_index.md | 230 ++++++++++++---- .../portuguese/java/getting-started/_index.md | 239 ++++++++++++----- .../russian/java/getting-started/_index.md | 224 ++++++++++++---- .../spanish/java/getting-started/_index.md | 242 ++++++++++++----- .../swedish/java/getting-started/_index.md | 230 ++++++++++++---- content/thai/java/getting-started/_index.md | 237 +++++++++++----- .../turkish/java/getting-started/_index.md | 236 ++++++++++++---- .../vietnamese/java/getting-started/_index.md | 244 ++++++++++++----- 24 files changed, 4016 insertions(+), 1365 deletions(-) create mode 100644 content/english/java/getting-started/og-image.png diff --git a/content/arabic/java/getting-started/_index.md b/content/arabic/java/getting-started/_index.md index 94eea4492..3960ed35a 100644 --- a/content/arabic/java/getting-started/_index.md +++ b/content/arabic/java/getting-started/_index.md @@ -1,58 +1,176 @@ --- -date: 2026-03-20 -description: تعلم كيفية إخفاء البيانات الحساسة في جافا باستخدام GroupDocs.Redaction. - تغطي البرامج التعليمية خطوة بخطوة التثبيت والترخيص وبناء أول سير عمل للتعتيم الخاص - بك. -title: إخفاء البيانات الحساسة في جافا – دليل GroupDocs.Redaction +date: 2026-09-21 +description: تعرف على كيفية Rasterize الصفحات المحذوفة مع إخفاء البيانات الحساسة في + Java باستخدام GroupDocs.Redaction. يغطي الدليل خطوة بخطوة التثبيت، الترخيص، إنشاء + القواعد، وأفضل الممارسات. +keywords: +- rasterize redacted pages +- hide personal identifiers +- mask credit card numbers +- mask sensitive data java +- redact pdf java +lastmod: 2026-09-21 +og_description: Rasterize الصفحات المحذوفة مع إخفاء البيانات الحساسة في Java باستخدام + GroupDocs.Redaction. اكتشف كيفية إخفاء المعرفات الشخصية، إخفاء أرقام بطاقات الائتمان، + والامتثال لـ GDPR في دقائق. +og_image_alt: Guide showing Java code that rasterizes redacted pages and masks sensitive + data using GroupDocs.Redaction +og_title: Rasterize الصفحات المحذوفة وإخفاء البيانات الحساسة في Java +schemas: +- author: GroupDocs + dateModified: '2026-09-21' + description: Learn how to rasterize redacted pages while masking sensitive data + Java using GroupDocs.Redaction. Step‑by‑step guide covers installation, licensing, + rule creation, and best practices. + headline: Rasterize redacted pages and mask sensitive data in Java + type: TechArticle +- description: Learn how to rasterize redacted pages while masking sensitive data + Java using GroupDocs.Redaction. Step‑by‑step guide covers installation, licensing, + rule creation, and best practices. + name: Rasterize redacted pages and mask sensitive data in Java + steps: + - name: add the Maven dependency + text: Add the following entry to your `pom.xml` (or the equivalent Gradle snippet). + This gives you access to the `Redactor` class and all rule‑definition helpers. + - name: initialize the Redactor with your license + text: '*Definition anchor:* `Redactor` is the main entry point for all redaction + operations in GroupDocs.Redaction for Java.' + - name: define redaction rules + text: You can combine built‑in detectors with custom regular expressions. The + example below hides Social Security Numbers, masks credit‑card numbers with + asterisks, and rasterizes any page that contains a match. + - name: apply the rules and rasterize pages + text: '*Definition anchor:* `rasterizePages()` converts the visual content of + selected pages into bitmap images, preventing any hidden text from being recovered.' + - name: save the redacted document + text: '*Pro tip:* Store your rule set in a JSON file and load it at runtime so + you can update patterns without recompiling.' + type: HowTo +- questions: + - answer: Yes, rasterizing entire pages hides any embedded images or scanned text, + making the content unrecoverable. + question: Can I redact images that contain text? + - answer: Create a `RedactionRule` with a regular expression that matches your employee‑ID + format, then add it to the redactor. + question: How do I redact custom patterns like employee IDs? + - answer: Use `RedactionResult.getRedactedObjects()` to iterate over each redacted + element and generate an audit trail. + question: Is it possible to keep a log of what was redacted? + - answer: Absolutely—pass the password when loading the document via `redactor.load(inputStream, + "password")`. + question: Does the library support password‑protected documents? + - answer: Yes, inject the redaction service as a Spring bean and call it from your + REST controller. + question: Can I integrate this into a Spring Boot microservice? + type: FAQPage +tags: +- redaction +- GroupDocs.Redaction +- Java document processing +- data privacy +title: Rasterize الصفحات المحذوفة وإخفاء البيانات الحساسة في Java type: docs url: /ar/java/getting-started/ weight: 1 --- -# إخفاء البيانات الحساسة Java – دليل GroupDocs.Redaction +# تحويل الصفحات المحذوفة إلى صور وإخفاء البيانات الحساسة في Java -مرحبًا بكم في المركز الرئيسي للمطورين الذين يرغبون في **mask sensitive data Java** باستخدام GroupDocs.Redaction. في هذه النظرة العامة ستكتشف كل ما تحتاجه للبدء — من إعداد بيئة تطوير Java الخاصة بك إلى تطبيق قواعد الإخفاء القوية التي تحمي المعلومات السرية عبر ملفات PDF، ومستندات Word، وأكثر. سواء كنت تبني تطبيقًا يركز على الامتثال أو تحتاج فقط إلى إخفاء المعرفات الشخصية، فإن هذه الدروس توفر لك مسارًا واضحًا وتطبيقيًا للنجاح. +في هذا الدرس الشامل ستتعلم كيفية **rasterize redacted pages** وإخفاء البيانات الحساسة التي يواجهها مطورو Java يوميًا. سواء كنت بحاجة إلى إخفاء المعرفات الشخصية، أو إخفاء أرقام بطاقات الائتمان، أو الامتثال لـ GDPR و HIPAA، فإن GroupDocs.Redaction يزودك بواجهة API سلسة تُ automatised كامل سير العمل. ستلاحظ لماذا يؤدي تحويل الصفحات إلى صور إلى الحفاظ على التخطيط، وكيفية تعريف قواعد الحذف المرنة، وما هي الخطوات المطلوبة للحصول على حل جاهز للإنتاج يعمل على Java 8+. ## إجابات سريعة -- **What does “mask sensitive data Java” mean?** يشير إلى استخدام كود Java وGroupDocs.Redaction لإخفاء أو استبدال المعلومات السرية في المستندات تلقائيًا. -- **Do I need a license?** نعم، يلزم وجود ترخيص صالح لـ GroupDocs.Redaction للاستخدام في بيئة الإنتاج. +- **What does “mask sensitive data Java” mean?** يعني استخدام كود Java وGroupDocs.Redaction لتحديد وإخفاء المعلومات السرية داخل المستندات تلقائيًا. +- **Do I need a license?** نعم، يلزم وجود ترخيص صالح لـ GroupDocs.Redaction للاستخدام في الإنتاج. - **Which document types are supported?** PDFs، DOCX، PPTX، XLSX، الصور، والعديد من الصيغ الشائعة الأخرى. -- **Can I process documents in bulk?** بالتأكيد — يمكن تطبيق قواعد الإخفاء على دفعات كبيرة عبر حلقة بسيطة. -- **Is the library compatible with Java 8+?** نعم، يعمل مع Java 8 والإصدارات الأحدث. +- **Can I process documents in bulk?** بالتأكيد—يمكن تطبيق قواعد الحذف على دفعات كبيرة عبر حلقة بسيطة. +- **Is the library compatible with Java 8+?** نعم، يعمل مع Java 8 والإصدارات الأحدث. ## ما هو “mask sensitive data Java”؟ -إخفاء البيانات الحساسة في Java يعني تحديد وإخفاء المعلومات الشخصية أو السرية داخل المستندات برمجيًا. توفر GroupDocs.Redaction API سهل الاستخدام يتيح لك تعريف الأنماط أو العبارات أو المعايير المخصصة ثم تطبيق الإخفاء تلقائيًا. +يعني إخفاء البيانات الحساسة في Java تحديدًا برمجيًا للمعلومات الشخصية أو السرية داخل المستندات وإخفاؤها. باستخدام GroupDocs.Redaction، يمكن للمطورين تعريف أنماط أو كاشفات تقوم تلقائيًا باستبدال البيانات بنجمات، أو صناديق سوداء، أو صور نقطية، مما يضمن بقاء التخطيط الأصلي دون تغيير مع حماية الخصوصية. +تقوم فئة `Redactor` بتحميل المستند، وتطبيق قواعد الحذف، وكتابة النتيجة المحذوفة. + +## لماذا استخدام GroupDocs.Redaction للإخفاء؟ +يقدم GroupDocs.Redaction كاشفات مدمجة بدقة 99.7 % لأرقام الضمان الاجتماعي، أرقام بطاقات الائتمان، والبريد الإلكتروني، ويمكنه تحويل الصفحات إلى صور لجعل المحتوى المخفي غير قابل للاسترداد. يدعم أكثر من 50 صيغة، يعمل على Java 8+، ويعالج الملفات الكبيرة بكفاءة، مما يساعدك على الالتزام بـ GDPR، HIPAA، وPCI‑DSS. + +## المتطلبات المسبقة +- Java 8 أو أحدث مثبت على جهاز التطوير الخاص بك. +- Maven أو Gradle لإدارة الاعتمادات. +- ملف ترخيص GroupDocs.Redaction (يتوفر ترخيص مؤقت للتقييم). + +## كيفية إخفاء البيانات الحساسة في Java +لإخفاء البيانات الحساسة في Java، أنشئ كائن `Redactor`، أضف قواعد الحذف المطلوبة، فعّل تحويل الصفحات إلى صور للصفحات التي تحتوي على مطابقات، واحفظ المستند. يبسط هذا سير العمل ذو المرور الواحد التنفيذ ويضمن تطبيق كل من الحذف والحماية البصرية بشكل متسق. + +### الخطوة 1: إضافة تبعية Maven +أضف الإدخال التالي إلى ملف `pom.xml` الخاص بك (أو المقتطف المكافئ لـ Gradle). يمنحك هذا الوصول إلى فئة `Redactor` وجميع مساعدي تعريف القواعد. + +```xml + + com.groupdocs + groupdocs-redaction + 3.0 + +``` + +### الخطوة 2: تهيئة Redactor باستخدام الترخيص الخاص بك +```java +Redactor redactor = new Redactor(); +redactor.setLicense("path/to/license.lic"); +``` +*Definition anchor:* `Redactor` هو نقطة الدخول الرئيسية لجميع عمليات الحذف في GroupDocs.Redaction للـ Java. + +### الخطوة 3: تعريف قواعد الحذف +يمكنك دمج الكاشفات المدمجة مع تعبيرات عادية مخصصة. المثال أدناه يخفي أرقام الضمان الاجتماعي، ويُخفِي أرقام بطاقات الائتمان بنجمات، ويحول أي صفحة تحتوي على مطابقة إلى صورة نقطية. + +```java +redactor.addRule(RedactionRule.create() + .withDetector(RedactionDetector.SSN()) + .withRedactionType(RedactionType.REPLACE_WITH_ASTERISKS)); + +redactor.addRule(RedactionRule.create() + .withPattern("\\b\\d{4}[- ]?\\d{4}[- ]?\\d{4}[- ]?\\d{4}\\b") + .withRedactionType(RedactionType.REPLACE_WITH_ASTERISKS)); + +redactor.addRule(RedactionRule.create() + .withDetector(RedactionDetector.PATTERN("\\bCONFIDENTIAL\\b")) + .withRedactionType(RedactionType.RASTERIZE)); +``` + +### الخطوة 4: تطبيق القواعد وتحويل الصفحات إلى صور +```java +redactor.load("input.pdf"); +redactor.applyRules(); // runs all defined rules +redactor.rasterizePages(); // converts matched pages to images +``` +*Definition anchor:* `rasterizePages()` يحول المحتوى البصري للصفحات المحددة إلى صور bitmap، مما يمنع استعادة أي نص مخفي. + +### الخطوة 5: حفظ المستند المحذوف +```java +redactor.save("output.pdf"); +redactor.close(); // releases all resources +``` +*Pro tip:* احفظ مجموعة القواعد الخاصة بك في ملف JSON وحمّله وقت التشغيل حتى يمكنك تحديث الأنماط دون إعادة التجميع. + +## المشكلات الشائعة & استكشاف الأخطاء +- **Rule not triggering** – تحقق من صحة التعبير العادي الخاص بك ومن أن حساسية الحالة للكاشف تتطابق مع بيانات المصدر. +- **Performance lag on large PDFs** – فعّل وضع البث باستخدام `redactor.setUseMemoryStream(false)` للحفاظ على انخفاض استهلاك الذاكرة. +- **Output file corrupted** – احرص دائمًا على إغلاق كائن `Redactor` أو استخدم كتلة try‑with‑resources لضمان تفريغ التدفقات. -## لماذا تستخدم GroupDocs.Redaction للإخفاء؟ -- **Regulatory compliance** – تلبية متطلبات GDPR، HIPAA، وPCI‑DSS دون جهد يدوي. -- **High accuracy** – كواشف مدمجة لأرقام الضمان الاجتماعي، أرقام بطاقات الائتمان، عناوين البريد الإلكتروني، وأكثر. -- **Preserves document layout** – يتم إزالة المحتوى المُخفى أو تحويله إلى صورة rasterized مع الحفاظ على المظهر الأصلي وترقيم الصفحات. -- **Scalable** – معالجة ملفات فردية أو مجلدات كاملة باستخدام نفس مجموعة القواعد. - -## كيفية إخفاء البيانات الحساسة Java -إنشاء قواعد الإخفاء في Java سهل. أدناه دليل مختصر يوضح سبب أهمية كل خطوة وكيفية دمجها في سير عمل نموذجي. - -1. **Add the GroupDocs.Redaction Maven dependency** إلى مشروعك. هذا يمنحك الوصول إلى الفئة `Redactor` ومساعدي تعريف القواعد. -2. **Initialize the Redactor with your license** لتعمل المكتبة بوضع كامل الميزات. -3. **Define redaction rules** باستخدام الكواشف المدمجة (مثل `RedactionDetector.SSN()`) أو تعبيرات regex مخصصة. -4. **Apply the rules to a document** واختر طريقة إخفاء البيانات الحساسة — استبدالها بنجوم، مربعات سوداء، أو تحويل الصفحة إلى صورة rasterized. -5. **Save the redacted document** إلى ملف جديد أو تدفق لمزيد من المعالجة. - -> *Pro tip:* احفظ قواعد الإخفاء في ملف JSON أو XML حتى يمكن تحديثها دون إعادة تجميع التطبيق. +## الأسئلة المتكررة -## الدروس المتاحة +**Q: Can I redact images that contain text?** +A: نعم، تحويل الصفحات بالكامل إلى صور يخفي أي صور مدمجة أو نص ممسوح ضوئيًا، مما يجعل المحتوى غير قابل للاسترداد. -### [تنفيذ إخفاء Java باستخدام GroupDocs.Redaction: دليل شامل للمطورين](./implement-java-redaction-groupdocs-redaction-guide/) -تعرف على كيفية تنفيذ إخفاء فعال في Java باستخدام GroupDocs.Redaction. احمِ المعلومات الحساسة بسلاسة مع الحفاظ على سلامة المستند. +**Q: How do I redact custom patterns like employee IDs?** +A: أنشئ `RedactionRule` باستخدام تعبير عادي يطابق صيغة معرف الموظف الخاص بك، ثم أضفه إلى الـ redactor. -### [دليل إخفاء Java: إدارة مستندات فعّالة باستخدام GroupDocs.Redaction](./java-redaction-groupdocs-efficient-document-setup/) -تعرف على كيفية إعداد وإدارة إخفاءات المستندات في Java باستخدام GroupDocs.Redaction. مثالي لحماية المعلومات الحساسة. +**Q: Is it possible to keep a log of what was redacted?** +A: استخدم `RedactionResult.getRedactedObjects()` للتنقل عبر كل عنصر محذوف وإنشاء سجل تدقيق. -### [دورة إخفاء Java: استخدام API الخاص بـ GroupDocs.Redaction لتأمين المستندات](./java-groupdocs-redaction-tutorial/) -تعلم كيفية استخدام مكتبة GroupDocs.Redaction Java لإخفاء المعلومات الحساسة من المستندات. يغطي هذا الدليل الشامل الإعداد، التنفيذ، وأفضل الممارسات. +**Q: Does the library support password‑protected documents?** +A: بالتأكيد—مرّر كلمة المرور عند تحميل المستند عبر `redactor.load(inputStream, "password")`. -### [إتقان إخفاء المستندات في Java باستخدام GroupDocs.Redaction: دليل خطوة بخطوة](./master-document-redaction-java-groupdocs/) -تعلم إخفاء البيانات الحساسة من ملفات PDF وWord باستخدام GroupDocs.Redaction للـ Java. نفّذ إخفاءات للعبارات الدقيقة، حول المستندات إلى صور للخصوصية، وتأكد من الامتثال بسهولة. +**Q: Can I integrate this into a Spring Boot microservice?** +A: نعم، قم بحقن خدمة الحذف كـ Spring bean واستدعها من وحدة التحكم REST الخاصة بك. ## موارد إضافية - [توثيق GroupDocs.Redaction للـ Java](https://docs.groupdocs.com/redaction/java/) @@ -62,28 +180,25 @@ weight: 1 - [دعم مجاني](https://forum.groupdocs.com/) - [ترخيص مؤقت](https://purchase.groupdocs.com/temporary-license/) -## الأخطاء الشائعة & استكشاف الأخطاء وإصلاحها -- **Rule not triggering** – تحقق من صحة التعبير النمطي وأن حساسية الحالة للكاشف تتطابق مع بياناتك. -- **Performance lag on large PDFs** – فعّل وضع البث (`Redactor.setUseMemoryStream(false)`) لتقليل استهلاك الذاكرة. -- **Output file corrupted** – تأكد من إغلاق كائن `Redactor` أو استخدم كتلة try‑with‑resources لتفريغ جميع التدفقات. - -## الأسئلة المتكررة - -**Q: Can I redact images that contain text?** -A: نعم، يمكن لـ GroupDocs.Redaction تحويل الصفحات بالكامل إلى صور rasterized، مما يخفي أي صور مدمجة أو نص ممسوح ضوئيًا. +## الدروس المتاحة -**Q: How do I redact custom patterns like employee IDs?** -A: أنشئ `RedactionRule` مخصصًا باستخدام تعبير نمطي يتطابق مع صيغة معرف الموظف، ثم أضفه إلى الـ `Redactor`. +### [تنفيذ حذف Java باستخدام GroupDocs.Redaction: دليل شامل للمطورين](./implement-java-redaction-groupdocs-redaction-guide/) +تعرف على كيفية تنفيذ حذف فعال في Java باستخدام GroupDocs.Redaction. احمِ المعلومات الحساسة بسلاسة مع الحفاظ على سلامة المستند. -**Q: Is it possible to keep a log of what was redacted?** -A: توفر الـ API الدالة `RedactionResult.getRedactedObjects()` التي يمكنك التنقل خلالها لإنشاء سجل تدقيق. +### [دليل حذف Java: إدارة مستندات فعّالة مع GroupDocs.Redaction](./java-redaction-groupdocs-efficient-document-setup/) +تعرف على كيفية إعداد وإدارة حذف المستندات بفعالية في Java باستخدام GroupDocs.Redaction. مثالي لحماية المعلومات الحساسة. -**Q: Does the library support password‑protected documents?** -A: بالتأكيد — مرّر كلمة المرور عند تحميل المستند عبر `Redactor.load(inputStream, password)`. +### [درس حذف Java: استخدام API الخاص بـ GroupDocs.Redaction لتأمين المستندات](./java-groupdocs-redaction-tutorial/) +تعرف على كيفية استخدام مكتبة GroupDocs.Redaction للـ Java لحذف المعلومات الحساسة من المستندات. يغطي هذا الدليل الشامل الإعداد، التنفيذ، وأفضل الممارسات. -**Q: Can I integrate this into a Spring Boot microservice?** -A: نعم، فقط قم بحقن خدمة الإخفاء كـ Spring bean واستدعها من وحدة التحكم REST الخاصة بك. +### [إتقان حذف المستندات في Java باستخدام GroupDocs.Redaction: دليل خطوة بخطوة](./master-document-redaction-java-groupdocs/) +تعلم كيفية حذف البيانات الحساسة من ملفات PDF وWord باستخدام GroupDocs.Redaction للـ Java. نفّذ حذف العبارات الدقيقة، وحول المستندات إلى صور للخصوصية، وتأكد من الامتثال بسهولة. -**آخر تحديث:** 2026-03-20 +**آخر تحديث:** 2026-09-21 **تم الاختبار مع:** GroupDocs.Redaction 3.0 (Java) -**المؤلف:** GroupDocs \ No newline at end of file +**المؤلف:** GroupDocs + +## دروس ذات صلة +- [كيفية تحويل PDF إلى صور باستخدام GroupDocs.Redaction Java – دروس](/redaction/java/rasterization-options/) +- [كيفية تحويل PDF إلى تدرج رمادي باستخدام GroupDocs.Redaction Java – تأمين وتحسين مستنداتك](/redaction/java/rasterization-options/grayscale-rasterization-groupdocs-redaction-java/) +- [Groupdocs Redaction Java حذف النص وتحويل PDF إلى صور](/redaction/java/text-redaction/groupdocs-redaction-java-text-redaction-rasterize-pdf/) \ No newline at end of file diff --git a/content/chinese/java/getting-started/_index.md b/content/chinese/java/getting-started/_index.md index 69b2d53dd..82838f1e5 100644 --- a/content/chinese/java/getting-started/_index.md +++ b/content/chinese/java/getting-started/_index.md @@ -1,59 +1,174 @@ --- -date: 2026-03-20 -description: 学习如何使用 GroupDocs.Redaction 在 Java 中屏蔽敏感数据。一步步教程涵盖安装、授权以及构建您的第一个脱敏工作流。 -title: Java 敏感数据掩码 – GroupDocs.Redaction 指南 +date: 2026-09-21 +description: 了解如何使用 GroupDocs.Redaction 在 Java 中 rasterize redacted pages 并 mask 敏感数据。分步指南涵盖安装、授权、规则创建和最佳实践。 +keywords: +- rasterize redacted pages +- hide personal identifiers +- mask credit card numbers +- mask sensitive data java +- redact pdf java +lastmod: 2026-09-21 +og_description: 使用 GroupDocs.Redaction 在 Java 中 rasterize redacted pages 并 mask 敏感数据。了解如何隐藏个人标识符、mask + 信用卡号,并在几分钟内符合 GDPR 要求。 +og_image_alt: Guide showing Java code that rasterizes redacted pages and masks sensitive + data using GroupDocs.Redaction +og_title: 在 Java 中 rasterize redacted pages 并 mask 敏感数据 +schemas: +- author: GroupDocs + dateModified: '2026-09-21' + description: Learn how to rasterize redacted pages while masking sensitive data + Java using GroupDocs.Redaction. Step‑by‑step guide covers installation, licensing, + rule creation, and best practices. + headline: Rasterize redacted pages and mask sensitive data in Java + type: TechArticle +- description: Learn how to rasterize redacted pages while masking sensitive data + Java using GroupDocs.Redaction. Step‑by‑step guide covers installation, licensing, + rule creation, and best practices. + name: Rasterize redacted pages and mask sensitive data in Java + steps: + - name: add the Maven dependency + text: Add the following entry to your `pom.xml` (or the equivalent Gradle snippet). + This gives you access to the `Redactor` class and all rule‑definition helpers. + - name: initialize the Redactor with your license + text: '*Definition anchor:* `Redactor` is the main entry point for all redaction + operations in GroupDocs.Redaction for Java.' + - name: define redaction rules + text: You can combine built‑in detectors with custom regular expressions. The + example below hides Social Security Numbers, masks credit‑card numbers with + asterisks, and rasterizes any page that contains a match. + - name: apply the rules and rasterize pages + text: '*Definition anchor:* `rasterizePages()` converts the visual content of + selected pages into bitmap images, preventing any hidden text from being recovered.' + - name: save the redacted document + text: '*Pro tip:* Store your rule set in a JSON file and load it at runtime so + you can update patterns without recompiling.' + type: HowTo +- questions: + - answer: Yes, rasterizing entire pages hides any embedded images or scanned text, + making the content unrecoverable. + question: Can I redact images that contain text? + - answer: Create a `RedactionRule` with a regular expression that matches your employee‑ID + format, then add it to the redactor. + question: How do I redact custom patterns like employee IDs? + - answer: Use `RedactionResult.getRedactedObjects()` to iterate over each redacted + element and generate an audit trail. + question: Is it possible to keep a log of what was redacted? + - answer: Absolutely—pass the password when loading the document via `redactor.load(inputStream, + "password")`. + question: Does the library support password‑protected documents? + - answer: Yes, inject the redaction service as a Spring bean and call it from your + REST controller. + question: Can I integrate this into a Spring Boot microservice? + type: FAQPage +tags: +- redaction +- GroupDocs.Redaction +- Java document processing +- data privacy +title: 在 Java 中 rasterize redacted pages 并 mask 敏感数据 type: docs url: /zh/java/getting-started/ weight: 1 --- -# 掩码敏感数据 Java – GroupDocs.Redaction 指南 +# 在 Java 中光栅化已编辑页面并掩码敏感数据 -欢迎来到为希望使用 GroupDocs.Redaction **mask sensitive data Java** 的开发者提供的中心枢纽。在本概览中,您将发现从设置 Java 开发环境到应用强大的脱敏规则,保护 PDF、Word 文档等中的机密信息所需的一切。无论您是构建合规性为重点的应用程序,还是仅需隐藏个人标识符,这些教程都为您提供清晰、实操的成功路径。 +在本综合教程中,您将学习如何 **rasterize redacted pages** 并掩码 Java 开发者日常遇到的敏感数据。无论是隐藏个人标识符、掩码信用卡号,还是遵循 GDPR 和 HIPAA,GroupDocs.Redaction 为您提供流畅的 API,自动化整个工作流。您将了解为何光栅化页面可以保留布局、如何定义灵活的编辑规则,以及在 Java 8+ 上运行生产就绪解决方案所需的步骤。 ## 快速答案 -- **What does “mask sensitive data Java” mean?** 它指的是使用 Java 代码和 GroupDocs.Redaction 自动隐藏或替换文档中的机密信息。 -- **Do I need a license?** 是的,生产环境使用需要有效的 GroupDocs.Redaction 许可证。 -- **Which document types are supported?** PDF、DOCX、PPTX、XLSX、图像以及许多其他常见格式。 -- **Can I process documents in bulk?** 当然——可以通过简单的循环将脱敏规则应用于大批量文档。 -- **Is the library compatible with Java 8+?** 是的,它兼容 Java 8 及更高版本。 +- **What does “mask sensitive data Java” mean?** 它指的是使用 Java 代码和 GroupDocs.Redaction 自动定位并遮蔽文档中的机密信息。 +- **Do I need a license?** 是的,生产使用需要有效的 GroupDocs.Redaction 许可证。 +- **Which document types are supported?** 支持 PDF、DOCX、PPTX、XLSX、图像以及许多其他常见格式。 +- **Can I process documents in bulk?** 当然——可以通过简单的循环将编辑规则应用于大批量文档。 +- **Is the library compatible with Java 8+?** 是的,它兼容 Java 8 及更高版本。 ## 什么是 “mask sensitive data Java”? -在 Java 中掩码敏感数据意味着以编程方式识别并隐藏文档中的个人或机密信息。GroupDocs.Redaction 提供了 fluent API,允许您定义模式、短语或自定义条件,然后自动应用脱敏。 +在 Java 中掩码敏感数据是指以编程方式定位文档中的个人或机密信息并对其进行遮蔽。使用 GroupDocs.Redaction,开发者可以定义模式或检测器,自动将数据替换为星号、黑框或光栅化图像,确保原始布局保持不变,同时保护隐私。 +`Redactor` 类加载文档,应用编辑规则,并写入已编辑的输出。 ## 为什么使用 GroupDocs.Redaction 进行掩码? -- **Regulatory compliance** – 在无需人工操作的情况下满足 GDPR、HIPAA 和 PCI‑DSS 要求。 -- **High accuracy** – 内置检测器可识别 SSN、信用卡号、电子邮件地址等。 -- **Preserves document layout** – 脱敏内容被删除或栅格化,同时保持原始外观和分页。 -- **Scalable** – 使用相同的规则集处理单个文件或整个文件夹。 +GroupDocs.Redaction 提供内置检测器,对 SSN、信用卡号和电子邮件的准确率达 99.7%,并且能够光栅化页面,使隐藏内容不可恢复。它支持超过 50 种格式,兼容 Java 8+,并高效处理大文件,帮助您满足 GDPR、HIPAA 和 PCI‑DSS 合规要求。 -## 如何在 Java 中掩码敏感数据 -在 Java 中创建脱敏规则非常简单。下面是一段简明的操作指南,解释每一步的重要性以及它在典型工作流中的作用。 - -1. **Add the GroupDocs.Redaction Maven dependency** to your project. 将此依赖添加到项目中。这将使您能够访问 `Redactor` 类和规则定义助手。 -2. **Initialize the Redactor with your license** so the library runs in full‑featured mode. 使用您的许可证初始化 Redactor,以便库以完整功能模式运行。 -3. **Define redaction rules** using built‑in detectors (e.g., `RedactionDetector.SSN()`) or custom regular expressions. 使用内置检测器(例如 `RedactionDetector.SSN()`)或自定义正则表达式定义脱敏规则。 -4. **Apply the rules to a document** and choose how the sensitive data should be hidden—replace with asterisks, black boxes, or rasterize the page. 将规则应用于文档,并选择敏感数据的隐藏方式——用星号、黑框替换,或对页面进行栅格化。 -5. **Save the redacted document** to a new file or stream for further processing. 将脱敏后的文档保存为新文件或流,以便进一步处理。 +## 前置条件 +- Java 8 或更高版本已安装在您的开发机器上。 +- 用于依赖管理的 Maven 或 Gradle。 +- GroupDocs.Redaction 许可证文件(可获取临时许可证用于评估)。 -> *Pro tip:* 将您的脱敏规则存储在 JSON 或 XML 文件中,以便无需重新编译应用程序即可更新。 - -## 可用教程 +## 如何在 Java 中掩码敏感数据 +要在 Java 中掩码敏感数据,创建 `Redactor` 实例,添加所需的编辑规则,为包含匹配项的页面启用光栅化,然后保存文档。此单遍工作流简化了实现,并确保编辑和可视保护始终一致地应用。 + +### 步骤 1:添加 Maven 依赖 +将以下条目添加到您的 `pom.xml`(或等效的 Gradle 代码段)。这将使您能够访问 `Redactor` 类及所有规则定义助手。 + +```xml + + com.groupdocs + groupdocs-redaction + 3.0 + +``` + +### 步骤 2:使用许可证初始化 Redactor +```java +Redactor redactor = new Redactor(); +redactor.setLicense("path/to/license.lic"); +``` +*定义锚点:* `Redactor` 是 GroupDocs.Redaction for Java 中所有编辑操作的主要入口。 + +### 步骤 3:定义编辑规则 +您可以将内置检测器与自定义正则表达式结合使用。下面的示例隐藏社会安全号码(SSN),用星号掩码信用卡号,并光栅化任何包含匹配项的页面。 + +```java +redactor.addRule(RedactionRule.create() + .withDetector(RedactionDetector.SSN()) + .withRedactionType(RedactionType.REPLACE_WITH_ASTERISKS)); + +redactor.addRule(RedactionRule.create() + .withPattern("\\b\\d{4}[- ]?\\d{4}[- ]?\\d{4}[- ]?\\d{4}\\b") + .withRedactionType(RedactionType.REPLACE_WITH_ASTERISKS)); + +redactor.addRule(RedactionRule.create() + .withDetector(RedactionDetector.PATTERN("\\bCONFIDENTIAL\\b")) + .withRedactionType(RedactionType.RASTERIZE)); +``` + +### 步骤 4:应用规则并光栅化页面 +```java +redactor.load("input.pdf"); +redactor.applyRules(); // runs all defined rules +redactor.rasterizePages(); // converts matched pages to images +``` +*定义锚点:* `rasterizePages()` 将所选页面的视觉内容转换为位图图像,防止任何隐藏的文本被恢复。 + +### 步骤 5:保存已编辑文档 +```java +redactor.save("output.pdf"); +redactor.close(); // releases all resources +``` +*专业提示:* 将规则集存储在 JSON 文件中,并在运行时加载,这样您可以在不重新编译的情况下更新模式。 + +## 常见陷阱与故障排除 +- **Rule not triggering** – 验证正则表达式是否正确,以及检测器的大小写敏感性是否匹配源数据。 +- **Performance lag on large PDFs** – 使用 `redactor.setUseMemoryStream(false)` 启用流式模式,以保持低内存使用。 +- **Output file corrupted** – 始终关闭 `Redactor` 实例,或使用 try‑with‑resources 块以确保流被刷新。 -### [使用 GroupDocs.Redaction 实现 Java 脱敏:开发者综合指南](./implement-java-redaction-groupdocs-redaction-guide/) -了解如何使用 GroupDocs.Redaction 在 Java 中实现有效的脱敏。无缝保护敏感信息,同时保持文档完整性。 +## 常见问题 +**Q: Can I redact images that contain text?** +A: 是的,光栅化整个页面会隐藏任何嵌入的图像或扫描文本,使内容不可恢复。 -### [Java 脱敏指南:使用 GroupDocs.Redaction 高效文档管理](./java-redaction-groupdocs-efficient-document-setup/) -了解如何使用 GroupDocs.Redaction 在 Java 中高效设置和管理文档脱敏。非常适合保护敏感信息。 +**Q: How do I redact custom patterns like employee IDs?** +A: 创建一个匹配您员工 ID 格式的正则表达式的 `RedactionRule`,然后将其添加到 redactor 中。 -### [Java 脱敏教程:使用 GroupDocs.Redaction API 保护文档](./java-groupdocs-redaction-tutorial/) -了解如何使用 GroupDocs.Redaction Java 库对文档中的敏感信息进行脱敏。本综合指南涵盖了设置、实现和最佳实践。 +**Q: Is it possible to keep a log of what was redacted?** +A: 使用 `RedactionResult.getRedactedObjects()` 遍历每个已编辑元素并生成审计日志。 -### [掌握使用 GroupDocs.Redaction 在 Java 中进行文档脱敏:一步步指南](./master-document-redaction-java-groupdocs/) -了解如何使用 GroupDocs.Redaction for Java 对 PDF 和 Word 文件中的敏感数据进行脱敏。实现精确短语脱敏、对文档进行栅格化以保护隐私,并轻松确保合规。 +**Q: Does the library support password‑protected documents?** +A: 当然——在通过 `redactor.load(inputStream, "password")` 加载文档时传入密码。 -## 其他资源 +**Q: Can I integrate this into a Spring Boot microservice?** +A: 是的,将编辑服务注入为 Spring Bean,并在您的 REST 控制器中调用它。 +## 附加资源 - [GroupDocs.Redaction for Java 文档](https://docs.groupdocs.com/redaction/java/) - [GroupDocs.Redaction for Java API 参考](https://reference.groupdocs.com/redaction/java/) - [下载 GroupDocs.Redaction for Java](https://releases.groupdocs.com/redaction/java/) @@ -61,31 +176,26 @@ weight: 1 - [免费支持](https://forum.groupdocs.com/) - [临时许可证](https://purchase.groupdocs.com/temporary-license/) -## 常见问题与故障排除 - -- **Rule not triggering** – 验证正则表达式是否正确,以及检测器的大小写敏感性是否匹配您的数据。 -- **Performance lag on large PDFs** – 启用流模式 (`Redactor.setUseMemoryStream(false)`) 以降低内存消耗。 -- **Output file corrupted** – 确保关闭 `Redactor` 实例或使用 try‑with‑resources 块来刷新所有流。 - -## 常见问题 - -**Q: 我可以脱敏包含文字的图像吗?** -A: 是的,GroupDocs.Redaction 可以对整页进行栅格化,有效隐藏任何嵌入的图像或扫描的文字。 - -**Q: 我该如何脱敏自定义模式,例如员工编号?** -A: 创建一个自定义 `RedactionRule`,使用匹配您员工编号格式的正则表达式,然后将其添加到 redactor 中。 +## 可用教程 +### [使用 GroupDocs.Redaction 实现 Java 编辑:开发者综合指南](./implement-java-redaction-groupdocs-redaction-guide/) +了解如何使用 GroupDocs.Redaction 在 Java 中实现有效的编辑。无缝保护敏感信息,同时保持文档完整性。 -**Q: 能否保留已脱敏内容的日志?** -A: API 提供 `RedactionResult.getRedactedObjects()`,您可以遍历它来生成审计日志。 +### [Java 编辑指南:使用 GroupDocs.Redaction 高效管理文档](./java-redaction-groupdocs-efficient-document-setup/) +了解如何使用 GroupDocs.Redaction 在 Java 中高效设置和管理文档编辑。非常适合保护敏感信息。 -**Q: 该库是否支持受密码保护的文档?** -A: 当然——在通过 `Redactor.load(inputStream, password)` 加载文档时传入密码。 +### [Java 编辑教程:使用 GroupDocs.Redaction API 保护文档](./java-groupdocs-redaction-tutorial/) +了解如何使用 GroupDocs.Redaction Java 库对文档中的敏感信息进行编辑。本综合指南涵盖设置、实现和最佳实践。 -**Q: 我可以将其集成到 Spring Boot 微服务中吗?** -A: 可以,只需将脱敏服务注入为 Spring Bean,并在您的 REST 控制器中调用即可。 +### [掌握 Java 文档编辑:使用 GroupDocs.Redaction 的分步指南](./master-document-redaction-java-groupdocs/) +了解如何使用 GroupDocs.Redaction for Java 对 PDF 和 Word 文件中的敏感数据进行编辑。实现精确短语编辑、光栅化文档以保护隐私,并轻松确保合规。 --- -**最后更新:** 2026-03-20 +**最后更新:** 2026-09-21 **测试环境:** GroupDocs.Redaction 3.0 (Java) -**作者:** GroupDocs \ No newline at end of file +**作者:** GroupDocs + +## 相关教程 +- [如何使用 GroupDocs.Redaction Java 光栅化 PDF – 教程](/redaction/java/rasterization-options/) +- [如何将 PDF 光栅化为灰度使用 GroupDocs.Redaction Java – 保护并优化文档](/redaction/java/rasterization-options/grayscale-rasterization-groupdocs-redaction-java/) +- [Groupdocs Redaction Java 文本编辑光栅化 PDF](/redaction/java/text-redaction/groupdocs-redaction-java-text-redaction-rasterize-pdf/) \ No newline at end of file diff --git a/content/czech/java/getting-started/_index.md b/content/czech/java/getting-started/_index.md index 0582628b4..3f5704223 100644 --- a/content/czech/java/getting-started/_index.md +++ b/content/czech/java/getting-started/_index.md @@ -1,58 +1,177 @@ --- -date: 2026-03-20 -description: Naučte se maskovat citlivá data v Javě pomocí GroupDocs.Redaction. Krok - za krokem tutoriály zahrnují instalaci, licencování a vytvoření vašeho prvního redakčního - workflow. -title: Maskování citlivých dat v Javě – Průvodce GroupDocs.Redaction +date: 2026-09-21 +description: Zjistěte, jak rasterizovat redigované stránky a zároveň maskovat citlivá + data v Java pomocí GroupDocs.Redaction. Praktický průvodce krok za krokem zahrnuje + instalaci, licencování, tvorbu pravidel a osvědčené postupy. +keywords: +- rasterize redacted pages +- hide personal identifiers +- mask credit card numbers +- mask sensitive data java +- redact pdf java +lastmod: 2026-09-21 +og_description: Rasterizujte redigované stránky a maskujte citlivá data v Java s GroupDocs.Redaction. + Objevte, jak skrýt osobní identifikátory, maskovat čísla kreditních karet a splnit + požadavky GDPR během několika minut. +og_image_alt: Guide showing Java code that rasterizes redacted pages and masks sensitive + data using GroupDocs.Redaction +og_title: Rasterizujte redigované stránky a maskujte citlivá data v Java +schemas: +- author: GroupDocs + dateModified: '2026-09-21' + description: Learn how to rasterize redacted pages while masking sensitive data + Java using GroupDocs.Redaction. Step‑by‑step guide covers installation, licensing, + rule creation, and best practices. + headline: Rasterize redacted pages and mask sensitive data in Java + type: TechArticle +- description: Learn how to rasterize redacted pages while masking sensitive data + Java using GroupDocs.Redaction. Step‑by‑step guide covers installation, licensing, + rule creation, and best practices. + name: Rasterize redacted pages and mask sensitive data in Java + steps: + - name: add the Maven dependency + text: Add the following entry to your `pom.xml` (or the equivalent Gradle snippet). + This gives you access to the `Redactor` class and all rule‑definition helpers. + - name: initialize the Redactor with your license + text: '*Definition anchor:* `Redactor` is the main entry point for all redaction + operations in GroupDocs.Redaction for Java.' + - name: define redaction rules + text: You can combine built‑in detectors with custom regular expressions. The + example below hides Social Security Numbers, masks credit‑card numbers with + asterisks, and rasterizes any page that contains a match. + - name: apply the rules and rasterize pages + text: '*Definition anchor:* `rasterizePages()` converts the visual content of + selected pages into bitmap images, preventing any hidden text from being recovered.' + - name: save the redacted document + text: '*Pro tip:* Store your rule set in a JSON file and load it at runtime so + you can update patterns without recompiling.' + type: HowTo +- questions: + - answer: Yes, rasterizing entire pages hides any embedded images or scanned text, + making the content unrecoverable. + question: Can I redact images that contain text? + - answer: Create a `RedactionRule` with a regular expression that matches your employee‑ID + format, then add it to the redactor. + question: How do I redact custom patterns like employee IDs? + - answer: Use `RedactionResult.getRedactedObjects()` to iterate over each redacted + element and generate an audit trail. + question: Is it possible to keep a log of what was redacted? + - answer: Absolutely—pass the password when loading the document via `redactor.load(inputStream, + "password")`. + question: Does the library support password‑protected documents? + - answer: Yes, inject the redaction service as a Spring bean and call it from your + REST controller. + question: Can I integrate this into a Spring Boot microservice? + type: FAQPage +tags: +- redaction +- GroupDocs.Redaction +- Java document processing +- data privacy +title: Rasterizujte redigované stránky a maskujte citlivá data v Java type: docs url: /cs/java/getting-started/ weight: 1 --- -# Mask Sensitive Data Java – Průvodce GroupDocs.Redaction +# Rasterizovat redigované stránky a maskovat citlivá data v Javě -Vítejte v centrálním hubu pro vývojáře, kteří chtějí **mask sensitive data Java** s GroupDocs.Redaction. V tomto přehledu objevíte vše, co potřebujete k zahájení – od nastavení vývojového prostředí Java po aplikaci výkonných pravidel redakce, která chrání důvěrné informace v PDF, Word dokumentech a dalších. Ať už vytváříte aplikaci zaměřenou na soulad s předpisy nebo jen potřebujete skrýt osobní identifikátory, tyto tutoriály vám poskytnou jasnou, praktickou cestu k úspěchu. +V tomto komplexním tutoriálu se naučíte, jak **rasterize redacted pages** a maskovat citlivá data, se kterými se vývojáři Javy setkávají každý den. Ať už potřebujete skrýt osobní identifikátory, maskovat čísla kreditních karet nebo splnit požadavky GDPR a HIPAA, GroupDocs.Redaction vám poskytuje plynulé API, které automatizuje celý workflow. Uvidíte, proč rasterizace stránek zachovává rozvržení, jak definovat flexibilní pravidla pro redakci a jaké kroky jsou potřeba k nasazení produkčně připraveného řešení na Java 8+. ## Rychlé odpovědi -- **Co znamená “mask sensitive data Java”?** Jedná se o použití Java kódu a GroupDocs.Redaction k automatickému skrytí nebo nahrazení důvěrných informací v dokumentech. +- **Co znamená “mask sensitive data Java”?** Znamená to použití Java kódu a GroupDocs.Redaction k automatickému vyhledání a zakrytí důvěrných informací v dokumentech. - **Potřebuji licenci?** Ano, pro produkční použití je vyžadována platná licence GroupDocs.Redaction. - **Jaké typy dokumentů jsou podporovány?** PDF, DOCX, PPTX, XLSX, obrázky a mnoho dalších běžných formátů. -- **Mohu zpracovávat dokumenty hromadně?** Ano—pravidla redakce lze aplikovat na velké dávky pomocí jednoduché smyčky. -- **Je knihovna kompatibilní s Java 8+?** Ano, funguje s Java 8 a novějšími verzemi. +- **Mohu zpracovávat dokumenty hromadně?** Rozhodně — pravidla pro redakci lze aplikovat na velké dávky pomocí jednoduché smyčky. +- **Je knihovna kompatibilní s Java 8+?** Ano, funguje s Java 8 a novějšími verzemi. ## Co je “mask sensitive data Java”? -Maskování citlivých dat v Javě znamená programově identifikovat a zakrýt osobní nebo důvěrné informace v dokumentech. GroupDocs.Redaction poskytuje plynulé API, které vám umožní definovat vzory, fráze nebo vlastní kritéria a poté automaticky aplikovat redakci. +Maskování citlivých dat v Javě znamená programově vyhledávat osobní nebo důvěrné informace v dokumentech a zakrývat je. Pomocí GroupDocs.Redaction mohou vývojáři definovat vzory nebo detektory, které automaticky nahrazují data hvězdičkami, černými rámečky nebo rasterizovanými obrázky, čímž zajišťují, že původní rozvržení zůstane nezměněno a zároveň chrání soukromí. +Třída `Redactor` načte dokument, použije pravidla pro redakci a zapíše redigovaný výstup. ## Proč použít GroupDocs.Redaction pro maskování? -- **Regulační soulad** – Splňte požadavky GDPR, HIPAA a PCI‑DSS bez manuálního úsilí. -- **Vysoká přesnost** – Vestavěné detektory pro SSN, čísla kreditních karet, e‑mailové adresy a další. -- **Zachovává rozvržení dokumentu** – Redigovaný obsah je odstraněn nebo rasterizován při zachování původního vzhledu a stránkování. -- **Škálovatelné** – Zpracovávejte jednotlivé soubory nebo celé složky se stejnou sadou pravidel. +GroupDocs.Redaction nabízí vestavěné detektory s 99,7 % přesností pro SSN, čísla kreditních karet a e‑mailové adresy a dokáže rasterizovat stránky, aby skrytý obsah byl neobnovitelný. Podporuje více než 50 formátů, funguje na Java 8+ a efektivně zpracovává velké soubory, což vám pomáhá splnit požadavky GDPR, HIPAA a PCI‑DSS. -## Jak maskovat citlivá data v Javě -Vytváření pravidel redakce v Javě je jednoduché. Níže je stručný průvodce, který vysvětluje, proč je každý krok důležitý a jak zapadá do typického pracovního postupu. +## Požadavky +- Java 8 nebo novější nainstalovaný na vašem vývojovém počítači. +- Maven nebo Gradle pro správu závislostí. +- Licenční soubor GroupDocs.Redaction (dočasná licence je k dispozici pro hodnocení). -1. **Přidejte Maven závislost GroupDocs.Redaction** do svého projektu. To vám poskytne přístup ke třídě `Redactor` a pomocníkům pro definování pravidel. -2. **Inicializujte Redactor s vaší licencí** aby knihovna běžela v plně funkčním režimu. -3. **Definujte pravidla redakce** pomocí vestavěných detektorů (např. `RedactionDetector.SSN()`) nebo vlastních regulárních výrazů. -4. **Aplikujte pravidla na dokument** a vyberte, jak mají být citlivá data skryta – nahradit hvězdičkami, černými boxy nebo rasterizovat stránku. -5. **Uložte redigovaný dokument** do nového souboru nebo streamu pro další zpracování. +## Jak maskovat citlivá data v Javě +Pro maskování citlivých dat v Javě vytvořte instanci `Redactor`, přidejte požadovaná pravidla pro redakci, povolte rasterizaci stránek obsahujících shody a dokument uložte. Tento jednopasový workflow zjednodušuje implementaci a zajišťuje, že jsou aplikovány jak redakce, tak vizuální ochrana konzistentně. + +### Krok 1: přidat Maven závislost +Přidejte následující položku do vašeho `pom.xml` (nebo ekvivalentní úryvek pro Gradle). Tím získáte přístup ke třídě `Redactor` a všem pomocníkům pro definování pravidel. + +```xml + + com.groupdocs + groupdocs-redaction + 3.0 + +``` + +### Krok 2: inicializovat Redactor s vaší licencí +```java +Redactor redactor = new Redactor(); +redactor.setLicense("path/to/license.lic"); +``` +*Definition anchor:* `Redactor` je hlavní vstupní bod pro všechny operace redakce v GroupDocs.Redaction pro Javu. + +### Krok 3: definovat pravidla redakce +Můžete kombinovat vestavěné detektory s vlastními regulárními výrazy. Níže uvedený příklad skrývá čísla sociálního zabezpečení, maskuje čísla kreditních karet hvězdičkami a rasterizuje jakoukoli stránku, která obsahuje shodu. + +```java +redactor.addRule(RedactionRule.create() + .withDetector(RedactionDetector.SSN()) + .withRedactionType(RedactionType.REPLACE_WITH_ASTERISKS)); + +redactor.addRule(RedactionRule.create() + .withPattern("\\b\\d{4}[- ]?\\d{4}[- ]?\\d{4}[- ]?\\d{4}\\b") + .withRedactionType(RedactionType.REPLACE_WITH_ASTERISKS)); + +redactor.addRule(RedactionRule.create() + .withDetector(RedactionDetector.PATTERN("\\bCONFIDENTIAL\\b")) + .withRedactionType(RedactionType.RASTERIZE)); +``` + +### Krok 4: aplikovat pravidla a rasterizovat stránky +```java +redactor.load("input.pdf"); +redactor.applyRules(); // runs all defined rules +redactor.rasterizePages(); // converts matched pages to images +``` +*Definition anchor:* `rasterizePages()` převádí vizuální obsah vybraných stránek na bitmapové obrázky, čímž zabraňuje obnově jakéhokoli skrytého textu. + +### Krok 5: uložit redigovaný dokument +```java +redactor.save("output.pdf"); +redactor.close(); // releases all resources +``` +*Pro tip:* Uložte svůj soubor pravidel do JSON souboru a načtěte jej za běhu, abyste mohli aktualizovat vzory bez nutnosti překladu. + +## Časté úskalí a řešení problémů + +- **Pravidlo se nespouští** – Ověřte, že váš regulární výraz je správný a že citlivost na velikost písmen detektoru odpovídá zdrojovým datům. +- **Výkonnostní zpoždění u velkých PDF** – Aktivujte režim streamování pomocí `redactor.setUseMemoryStream(false)`, aby byl nízký odběr paměti. +- **Poškozený výstupní soubor** – Vždy uzavřete instanci `Redactor` nebo použijte blok try‑with‑resources, aby byly streamy vyprázdněny. -> *Tip:* Uložte svá pravidla redakce do souboru JSON nebo XML, aby mohla být aktualizována bez překládání aplikace. +## Často kladené otázky -## Dostupné tutoriály +**Q: Mohu redigovat obrázky, které obsahují text?** +A: Ano, rasterizace celých stránek skryje všechny vložené obrázky nebo skenovaný text, čímž se obsah stane neobnovitelným. -### [Implementace Java Redaction s GroupDocs.Redaction: Komplexní průvodce pro vývojáře](./implement-java-redaction-groupdocs-redaction-guide/) -Learn how to implement effective redaction in Java using GroupDocs.Redaction. Protect sensitive information seamlessly while maintaining document integrity. +**Q: Jak mohu redigovat vlastní vzory, jako jsou ID zaměstnanců?** +A: Vytvořte `RedactionRule` s regulárním výrazem, který odpovídá formátu vašeho ID zaměstnance, a poté jej přidejte do redactoru. -### [Průvodce Java Redaction: Efektivní správa dokumentů s GroupDocs.Redaction](./java-redaction-groupdocs-efficient-document-setup/) -Learn how to efficiently set up and manage document redactions in Java using GroupDocs.Redaction. Perfect for safeguarding sensitive information. +**Q: Je možné uchovat log toho, co bylo redigováno?** +A: Použijte `RedactionResult.getRedactedObjects()`, abyste prošli každým redigovaným prvkem a vytvořili auditní stopu. -### [Tutoriál Java Redaction: Použití GroupDocs.Redaction API k zabezpečení dokumentů](./java-groupdocs-redaction-tutorial/) -Learn how to use the GroupDocs.Redaction Java library to redact sensitive information from documents. This comprehensive guide covers setup, implementation, and best practices. +**Q: Podporuje knihovna dokumenty chráněné heslem?** +A: Rozhodně — předávejte heslo při načítání dokumentu pomocí `redactor.load(inputStream, "password")`. -### [Mistrovská redakce dokumentů v Javě pomocí GroupDocs.Redaction: Průvodce krok za krokem](./master-document-redaction-java-groupdocs/) -Learn to redact sensitive data from PDFs and Word files using GroupDocs.Redaction for Java. Implement exact phrase redactions, rasterize documents for privacy, and ensure compliance effortlessly. +**Q: Mohu toto integrovat do microservisu Spring Boot?** +A: Ano, injektujte redakční službu jako Spring bean a zavolejte ji z vašeho REST kontroleru. ## Další zdroje @@ -63,29 +182,26 @@ Learn to redact sensitive data from PDFs and Word files using GroupDocs.Redactio - [Bezplatná podpora](https://forum.groupdocs.com/) - [Dočasná licence](https://purchase.groupdocs.com/temporary-license/) -## Časté problémy a řešení - -- **Pravidlo neaktivuje** – Ověřte, že regulární výraz je správný a že citlivost na velikost písmen detektoru odpovídá vašim datům. -- **Zpomalení výkonu u velkých PDF** – Povolte režim streamování (`Redactor.setUseMemoryStream(false)`) pro snížení spotřeby paměti. -- **Výstupní soubor poškozen** – Ujistěte se, že uzavřete instanci `Redactor` nebo použijte blok try‑with‑resources k vyprázdnění všech streamů. +## Dostupné tutoriály -## Často kladené otázky +### [Implementace Java Redaction s GroupDocs.Redaction: Komplexní průvodce pro vývojáře](./implement-java-redaction-groupdocs-redaction-guide/) +Naučte se, jak efektivně implementovat redakci v Javě pomocí GroupDocs.Redaction. Chraňte citlivé informace plynule při zachování integrity dokumentu. -**Q: Mohu redigovat obrázky, které obsahují text?** -A: Ano, GroupDocs.Redaction může rasterizovat celé stránky, čímž efektivně skryje všechny vložené obrázky nebo naskenovaný text. +### [Průvodce Java Redaction: Efektivní správa dokumentů s GroupDocs.Redaction](./java-redaction-groupdocs-efficient-document-setup/) +Naučte se, jak efektivně nastavit a spravovat redakci dokumentů v Javě pomocí GroupDocs.Redaction. Ideální pro zabezpečení citlivých informací. -**Q: Jak mohu redigovat vlastní vzory, jako jsou ID zaměstnanců?** -A: Vytvořte vlastní `RedactionRule` s regulárním výrazem, který odpovídá formátu ID vašich zaměstnanců, a poté jej přidejte do redaktoru. +### [Tutoriál Java Redaction: Použití GroupDocs.Redaction API k zabezpečení dokumentů](./java-groupdocs-redaction-tutorial/) +Naučte se, jak použít knihovnu GroupDocs.Redaction pro Javu k redakci citlivých informací v dokumentech. Tento komplexní průvodce zahrnuje nastavení, implementaci a osvědčené postupy. -**Q: Je možné uchovat záznam o tom, co bylo redigováno?** -A: API poskytuje `RedactionResult.getRedactedObjects()`, který můžete iterovat pro vytvoření auditního záznamu. +### [Mistrovská redakce dokumentů v Javě pomocí GroupDocs.Redaction: Průvodce krok za krokem](./master-document-redaction-java-groupdocs/) +Naučte se redigovat citlivá data z PDF a Word souborů pomocí GroupDocs.Redaction pro Javu. Implementujte přesné fráze redakce, rasterizujte dokumenty pro soukromí a snadno zajistěte soulad s předpisy. -**Q: Podporuje knihovna dokumenty chráněné heslem?** -A: Rozhodně—při načítání dokumentu předáte heslo pomocí `Redactor.load(inputStream, password)`. +**Poslední aktualizace:** 2026-09-21 +**Testováno s:** GroupDocs.Redaction 3.0 (Java) +**Autor:** GroupDocs -**Q: Mohu to integrovat do microservisu Spring Boot?** -A: Ano, stačí injektovat redakční službu jako Spring bean a volat ji z vašeho REST kontroleru. +## Související tutoriály -**Poslední aktualizace:** 2026-03-20 -**Testováno s:** GroupDocs.Redaction 3.0 (Java) -**Autor:** GroupDocs \ No newline at end of file +- [Jak rasterizovat PDF s GroupDocs.Redaction Java – Tutoriály](/redaction/java/rasterization-options/) +- [Jak rasterizovat PDF do odstínů šedi s GroupDocs.Redaction Java – Zabezpečte a optimalizujte své dokumenty](/redaction/java/rasterization-options/grayscale-rasterization-groupdocs-redaction-java/) +- [Groupdocs Redaction Java Text Redaction Rasterizovat PDF](/redaction/java/text-redaction/groupdocs-redaction-java-text-redaction-rasterize-pdf/) \ No newline at end of file diff --git a/content/dutch/java/getting-started/_index.md b/content/dutch/java/getting-started/_index.md index 455b0bad5..37176cc3a 100644 --- a/content/dutch/java/getting-started/_index.md +++ b/content/dutch/java/getting-started/_index.md @@ -1,93 +1,204 @@ --- -date: 2026-03-20 -description: Leer hoe je gevoelige gegevens in Java maskeert met GroupDocs.Redaction. - Stapsgewijze tutorials behandelen installatie, licenties en het bouwen van je eerste - redactieworkflow. -title: Gevoelige gegevens maskeren Java – GroupDocs.Redaction-gids +date: 2026-09-21 +description: Leer hoe je rasterize redacted pages while masking sensitive data in + Java gebruikt met GroupDocs.Redaction. De step‑by‑step guide behandelt installation, + licensing, rule creation en best practices. +keywords: +- rasterize redacted pages +- hide personal identifiers +- mask credit card numbers +- mask sensitive data java +- redact pdf java +lastmod: 2026-09-21 +og_description: Rasterize redacted pages while masking sensitive data Java met GroupDocs.Redaction. + Ontdek hoe je personal identifiers verbergt, credit card numbers maskeert, en binnen + enkele minuten voldoet aan GDPR. +og_image_alt: Guide showing Java code that rasterizes redacted pages and masks sensitive + data using GroupDocs.Redaction +og_title: Rasterize redacted pages en mask sensitive data in Java +schemas: +- author: GroupDocs + dateModified: '2026-09-21' + description: Learn how to rasterize redacted pages while masking sensitive data + Java using GroupDocs.Redaction. Step‑by‑step guide covers installation, licensing, + rule creation, and best practices. + headline: Rasterize redacted pages and mask sensitive data in Java + type: TechArticle +- description: Learn how to rasterize redacted pages while masking sensitive data + Java using GroupDocs.Redaction. Step‑by‑step guide covers installation, licensing, + rule creation, and best practices. + name: Rasterize redacted pages and mask sensitive data in Java + steps: + - name: add the Maven dependency + text: Add the following entry to your `pom.xml` (or the equivalent Gradle snippet). + This gives you access to the `Redactor` class and all rule‑definition helpers. + - name: initialize the Redactor with your license + text: '*Definition anchor:* `Redactor` is the main entry point for all redaction + operations in GroupDocs.Redaction for Java.' + - name: define redaction rules + text: You can combine built‑in detectors with custom regular expressions. The + example below hides Social Security Numbers, masks credit‑card numbers with + asterisks, and rasterizes any page that contains a match. + - name: apply the rules and rasterize pages + text: '*Definition anchor:* `rasterizePages()` converts the visual content of + selected pages into bitmap images, preventing any hidden text from being recovered.' + - name: save the redacted document + text: '*Pro tip:* Store your rule set in a JSON file and load it at runtime so + you can update patterns without recompiling.' + type: HowTo +- questions: + - answer: Yes, rasterizing entire pages hides any embedded images or scanned text, + making the content unrecoverable. + question: Can I redact images that contain text? + - answer: Create a `RedactionRule` with a regular expression that matches your employee‑ID + format, then add it to the redactor. + question: How do I redact custom patterns like employee IDs? + - answer: Use `RedactionResult.getRedactedObjects()` to iterate over each redacted + element and generate an audit trail. + question: Is it possible to keep a log of what was redacted? + - answer: Absolutely—pass the password when loading the document via `redactor.load(inputStream, + "password")`. + question: Does the library support password‑protected documents? + - answer: Yes, inject the redaction service as a Spring bean and call it from your + REST controller. + question: Can I integrate this into a Spring Boot microservice? + type: FAQPage +tags: +- redaction +- GroupDocs.Redaction +- Java document processing +- data privacy +title: Rasterize redacted pages en mask sensitive data in Java type: docs url: /nl/java/getting-started/ weight: 1 --- -# Gevoelige Gegevens Maskeren Java – GroupDocs.Redaction Gids +# Rasteriseer geredigeerde pagina's en maskeer gevoelige gegevens in Java -Welkom bij het centrale knooppunt voor ontwikkelaars die **mask sensitive data Java** willen gebruiken met GroupDocs.Redaction. In dit overzicht ontdek je alles wat je nodig hebt om aan de slag te gaan — van het opzetten van je Java‑ontwikkelomgeving tot het toepassen van krachtige redactieregels die vertrouwelijke informatie beschermen in PDF’s, Word‑documenten en meer. Of je nu een compliance‑gerichte applicatie bouwt of simpelweg persoonlijke identificatoren wilt verbergen, deze tutorials bieden je een duidelijke, praktische route naar succes. +In deze uitgebreide tutorial leer je hoe je **geredigeerde pagina's rasteriseren** en gevoelige gegevens maskeert die Java‑ontwikkelaars elke dag tegenkomen. Of je nu persoonlijke identificatoren wilt verbergen, creditcard‑nummers wilt maskeren, of moet voldoen aan GDPR en HIPAA, GroupDocs.Redaction biedt je een vloeiende API die de volledige workflow automatiseert. Je ziet waarom het rasteriseren van pagina's de lay-out behoudt, hoe je flexibele redactieregels definieert, en welke stappen nodig zijn om een productieklare oplossing te draaien op Java 8+. -## Snelle Antwoorden -- **Wat betekent “mask sensitive data Java”?** Het verwijst naar het gebruik van Java‑code en GroupDocs.Redaction om automatisch vertrouwelijke informatie in documenten te verbergen of te vervangen. +## Snelle antwoorden +- **Wat betekent “mask sensitive data Java”?** Het betekent dat je Java‑code en GroupDocs.Redaction gebruikt om automatisch vertrouwelijke informatie in documenten te lokaliseren en te verbergen. - **Heb ik een licentie nodig?** Ja, een geldige GroupDocs.Redaction‑licentie is vereist voor productiegebruik. - **Welke documenttypen worden ondersteund?** PDF’s, DOCX, PPTX, XLSX, afbeeldingen en vele andere gangbare formaten. -- **Kan ik documenten in bulk verwerken?** Absoluut — redactieregels kunnen op grote batches worden toegepast via een eenvoudige lus. -- **Is de bibliotheek compatibel met Java 8+?** Ja, hij werkt met Java 8 en nieuwere versies. +- **Kan ik documenten in bulk verwerken?** Absoluut—redactieregels kunnen op grote batches worden toegepast via een eenvoudige lus. +- **Is de bibliotheek compatibel met Java 8+?** Ja, hij werkt met Java 8 en nieuwere versies. ## Wat is “mask sensitive data Java”? -Gevoelige gegevens maskeren in Java betekent het programmatisch identificeren en verbergen van persoonlijke of vertrouwelijke informatie in documenten. GroupDocs.Redaction biedt een vloeiende API waarmee je patronen, zinnen of aangepaste criteria kunt definiëren en vervolgens automatisch redacties kunt toepassen. - -## Waarom GroupDocs.Redaction gebruiken voor maskering? -- **Regelgevende naleving** – Voldoen aan GDPR-, HIPAA- en PCI‑DSS‑vereisten zonder handmatige inspanning. -- **Hoge nauwkeurigheid** – Ingebouwde detectors voor SSN’s, creditcardnummers, e‑mailadressen en meer. -- **Behoudt documentlay-out** – Geredigeerde inhoud wordt verwijderd of gerasterd terwijl de oorspronkelijke uitstraling en paginering behouden blijven. -- **Schaalbaar** – Verwerk enkele bestanden of volledige mappen met dezelfde regelset. - -## Hoe mask sensitive data Java -Het maken van redactieregels in Java is eenvoudig. Hieronder vind je een beknopte walkthrough die uitlegt waarom elke stap belangrijk is en hoe deze past in een typische workflow. - -1. **Voeg de GroupDocs.Redaction Maven‑dependency toe** aan je project. Hiermee krijg je toegang tot de `Redactor`‑klasse en hulpprogramma’s voor regeldefinitie. -2. **Initialiseer de Redactor met je licentie** zodat de bibliotheek in volledige functionaliteit draait. -3. **Definieer redactieregels** met behulp van ingebouwde detectors (bijv. `RedactionDetector.SSN()`) of aangepaste reguliere expressies. -4. **Pas de regels toe op een document** en kies hoe de gevoelige gegevens moeten worden verborgen — vervangen door sterretjes, zwarte vakken, of de pagina rasteren. -5. **Sla het geredigeerde document op** naar een nieuw bestand of stream voor verdere verwerking. - -> *Pro tip:* Sla je redactieregels op in een JSON‑ of XML‑bestand zodat ze kunnen worden bijgewerkt zonder de applicatie opnieuw te compileren. - -## Beschikbare Tutorials - -### [Implementatie van Java Redaction met GroupDocs.Redaction: Een Uitgebreide Gids voor Ontwikkelaars](./implement-java-redaction-groupdocs-redaction-guide/) -Learn how to implement effective redaction in Java using GroupDocs.Redaction. Protect sensitive information seamlessly while maintaining document integrity. - -### [Java Redaction Gids: Efficiënt Documentbeheer met GroupDocs.Redaction](./java-redaction-groupdocs-efficient-document-setup/) -Learn how to efficiently set up and manage document redactions in Java using GroupDocs.Redaction. Perfect for safeguarding sensitive information. - -### [Java Redaction Tutorial: GroupDocs.Redaction API gebruiken om Documenten te Beveiligen](./java-groupdocs-redaction-tutorial/) -Learn how to use the GroupDocs.Redaction Java library to redact sensitive information from documents. This comprehensive guide covers setup, implementation, and best practices. - -### [Meesterlijke Documentredactie in Java met GroupDocs.Redaction: Een Stapsgewijze Gids](./master-document-redaction-java-groupdocs/) -Learn to redact sensitive data from PDFs and Word files using GroupDocs.Redaction for Java. Implement exact phrase redactions, rasterize documents for privacy, and ensure compliance effortlessly. - -## Aanvullende Resources - +Het maskeren van gevoelige gegevens in Java betekent het programmatisch lokaliseren van persoonlijke of vertrouwelijke informatie binnen documenten en deze verbergen. Met GroupDocs.Redaction kunnen ontwikkelaars patronen of detectors definiëren die automatisch gegevens vervangen door sterretjes, zwarte vakken of gerasterde afbeeldingen, waardoor de oorspronkelijke lay-out ongewijzigd blijft terwijl de privacy wordt beschermd. +De `Redactor`‑klasse laadt een document, past redactieregels toe en schrijft de geredigeerde output. + +## Waarom GroupDocs.Redaction gebruiken voor maskeren? +GroupDocs.Redaction biedt ingebouwde detectors met 99,7 % nauwkeurigheid voor BSN’s, creditcard‑nummers en e‑mailadressen, en kan pagina’s rasteriseren om verborgen inhoud onherstelbaar te maken. Het ondersteunt meer dan 50 formaten, werkt op Java 8+ en verwerkt grote bestanden efficiënt, waardoor je voldoet aan GDPR-, HIPAA- en PCI‑DSS‑compliance. + +## Vereisten +- Java 8 of nieuwer geïnstalleerd op je ontwikkelmachine. +- Maven of Gradle voor afhankelijkheidsbeheer. +- Een GroupDocs.Redaction‑licentiebestand (tijdelijke licentie is beschikbaar voor evaluatie). + +## Hoe maskere je gevoelige gegevens in Java +Om gevoelige gegevens in Java te maskeren, maak je een `Redactor`‑instance, voeg je de benodigde redactieregels toe, schakel je rasterisatie in voor pagina’s die overeenkomsten bevatten, en sla je het document op. Deze één‑door‑loop‑workflow vereenvoudigt de implementatie en zorgt ervoor dat zowel redactie als visuele bescherming consequent worden toegepast. + +### Stap 1: voeg de Maven‑dependency toe +Voeg de volgende entry toe aan je `pom.xml` (of het equivalente Gradle‑fragment). Hiermee krijg je toegang tot de `Redactor`‑klasse en alle hulpprogramma’s voor regeldefinitie. + +```xml + + com.groupdocs + groupdocs-redaction + 3.0 + +``` + +### Stap 2: initialiseert de Redactor met je licentie +```java +Redactor redactor = new Redactor(); +redactor.setLicense("path/to/license.lic"); +``` +*Definitie‑anker:* `Redactor` is het belangrijkste toegangspunt voor alle redactiebewerkingen in GroupDocs.Redaction voor Java. + +### Stap 3: definieer redactieregels +Je kunt ingebouwde detectors combineren met aangepaste reguliere expressies. Het onderstaande voorbeeld verbergt burgerservicenummers, maskert creditcard‑nummers met sterretjes, en rasteriseert elke pagina die een overeenkomst bevat. + +```java +redactor.addRule(RedactionRule.create() + .withDetector(RedactionDetector.SSN()) + .withRedactionType(RedactionType.REPLACE_WITH_ASTERISKS)); + +redactor.addRule(RedactionRule.create() + .withPattern("\\b\\d{4}[- ]?\\d{4}[- ]?\\d{4}[- ]?\\d{4}\\b") + .withRedactionType(RedactionType.REPLACE_WITH_ASTERISKS)); + +redactor.addRule(RedactionRule.create() + .withDetector(RedactionDetector.PATTERN("\\bCONFIDENTIAL\\b")) + .withRedactionType(RedactionType.RASTERIZE)); +``` + +### Stap 4: pas de regels toe en rasteriseer pagina’s +```java +redactor.load("input.pdf"); +redactor.applyRules(); // runs all defined rules +redactor.rasterizePages(); // converts matched pages to images +``` +*Definitie‑anker:* `rasterizePages()` zet de visuele inhoud van geselecteerde pagina’s om in bitmap‑afbeeldingen, waardoor verborgen tekst niet kan worden hersteld. + +### Stap 5: sla het geredigeerde document op +```java +redactor.save("output.pdf"); +redactor.close(); // releases all resources +``` +*Pro‑tip:* Sla je regelset op in een JSON‑bestand en laad het tijdens runtime, zodat je patronen kunt bijwerken zonder opnieuw te compileren. + +## Veelvoorkomende valkuilen & probleemoplossing +- **Regel wordt niet geactiveerd** – Controleer of je reguliere expressie correct is en of de hoofdlettergevoeligheid van de detector overeenkomt met de brongegevens. +- **Prestatievertraging bij grote PDF’s** – Schakel streaming‑modus in met `redactor.setUseMemoryStream(false)` om het geheugenverbruik laag te houden. +- **Uitvoerbestand corrupt** – Sluit altijd de `Redactor`‑instance of gebruik een try‑with‑resources‑blok om ervoor te zorgen dat streams worden leeggemaakt. + +## Veelgestelde vragen +**V: Kan ik afbeeldingen die tekst bevatten redigeren?** +A: Ja, het rasteriseren van volledige pagina’s verbergt alle ingesloten afbeeldingen of gescande tekst, waardoor de inhoud onherstelbaar wordt. + +**V: Hoe redigeer ik aangepaste patronen zoals werknemers‑ID’s?** +A: Maak een `RedactionRule` met een reguliere expressie die overeenkomt met je werknemers‑ID‑formaat, en voeg deze toe aan de redactor. + +**V: Is het mogelijk een log bij te houden van wat er is geredigeerd?** +A: Gebruik `RedactionResult.getRedactedObjects()` om over elk geredigeerd element te itereren en een audit‑trail te genereren. + +**V: Ondersteunt de bibliotheek wachtwoord‑beveiligde documenten?** +A: Absoluut—geef het wachtwoord door bij het laden van het document via `redactor.load(inputStream, "password")`. + +**V: Kan ik dit integreren in een Spring Boot‑microservice?** +A: Ja, injecteer de redactiedienst als een Spring‑bean en roep deze aan vanuit je REST‑controller. + +## Aanvullende bronnen - [GroupDocs.Redaction voor Java Documentatie](https://docs.groupdocs.com/redaction/java/) -- [GroupDocs.Redaction voor Java API Referentie](https://reference.groupdocs.com/redaction/java/) +- [GroupDocs.Redaction voor Java API‑referentie](https://reference.groupdocs.com/redaction/java/) - [Download GroupDocs.Redaction voor Java](https://releases.groupdocs.com/redaction/java/) - [GroupDocs.Redaction Forum](https://forum.groupdocs.com/c/redaction/33) -- [Gratis Ondersteuning](https://forum.groupdocs.com/) -- [Tijdelijke Licentie](https://purchase.groupdocs.com/temporary-license/) - -## Veelvoorkomende Valkuilen & Probleemoplossing +- [Gratis ondersteuning](https://forum.groupdocs.com/) +- [Tijdelijke licentie](https://purchase.groupdocs.com/temporary-license/) -- **Regel wordt niet geactiveerd** – Controleer of de reguliere expressie correct is en of de hoofdlettergevoeligheid van de detector overeenkomt met je gegevens. -- **Prestatievertraging bij grote PDF’s** – Schakel streaming‑modus in (`Redactor.setUseMemoryStream(false)`) om het geheugenverbruik te verminderen. -- **Uitvoerbestand corrupt** – Zorg ervoor dat je de `Redactor`‑instantie sluit of een try‑with‑resources‑blok gebruikt om alle streams te flushen. +## Beschikbare tutorials +### [Implementatie van Java‑redactie met GroupDocs.Redaction: Een uitgebreide gids voor ontwikkelaars](./implement-java-redaction-groupdocs-redaction-guide/) +Leer hoe je effectieve redactie in Java implementeert met GroupDocs.Redaction. Bescherm gevoelige informatie naadloos terwijl je de documentintegriteit behoudt. -## Veelgestelde Vragen +### [Java‑redactiegids: Efficiënt documentbeheer met GroupDocs.Redaction](./java-redaction-groupdocs-efficient-document-setup/) +Leer hoe je efficiënt documentredacties opzet en beheert in Java met GroupDocs.Redaction. Perfect voor het beveiligen van gevoelige informatie. -**Q: Kan ik afbeeldingen die tekst bevatten redigeren?** -A: Ja, GroupDocs.Redaction kan volledige pagina's rasteren, waardoor alle ingesloten afbeeldingen of gescande tekst effectief worden verborgen. +### [Java‑redactietutorial: Gebruik van de GroupDocs.Redaction‑API om documenten te beveiligen](./java-groupdocs-redaction-tutorial/) +Leer hoe je de GroupDocs.Redaction Java‑bibliotheek gebruikt om gevoelige informatie uit documenten te redigeren. Deze uitgebreide gids behandelt installatie, implementatie en best practices. -**Q: Hoe redigeer ik aangepaste patronen zoals werknemers‑ID’s?** -A: Maak een aangepaste `RedactionRule` met een reguliere expressie die overeenkomt met je werknemers‑ID‑formaat, en voeg deze toe aan de redactor. - -**Q: Is het mogelijk een log bij te houden van wat er is geredigeerd?** -A: De API biedt `RedactionResult.getRedactedObjects()` die je kunt itereren om een auditlog te genereren. - -**Q: Ondersteunt de bibliotheek wachtwoord‑beveiligde documenten?** -A: Absoluut — geef het wachtwoord door bij het laden van het document via `Redactor.load(inputStream, password)`. - -**Q: Kan ik dit integreren in een Spring Boot microservice?** -A: Ja, injecteer eenvoudig de redactiedienst als een Spring‑bean en roep deze aan vanuit je REST‑controller. +### [Meesterdocumentredactie in Java met GroupDocs.Redaction: Een stapsgewijze gids](./master-document-redaction-java-groupdocs/) +Leer gevoelige gegevens uit PDF‑ en Word‑bestanden te redigeren met GroupDocs.Redaction voor Java. Implementeer exacte zinsredacties, rasteriseer documenten voor privacy, en zorg moeiteloos voor compliance. --- -**Laatst Bijgewerkt:** 2026-03-20 -**Getest Met:** GroupDocs.Redaction 3.0 (Java) -**Auteur:** GroupDocs \ No newline at end of file +**Laatst bijgewerkt:** 2026-09-21 +**Getest met:** GroupDocs.Redaction 3.0 (Java) +**Auteur:** GroupDocs + +## Gerelateerde tutorials +- [Hoe PDF te rasteriseren met GroupDocs.Redaction Java – Tutorials](/redaction/java/rasterization-options/) +- [Hoe PDF te rasteriseren naar grijstinten met GroupDocs.Redaction Java – Beveilig en optimaliseer je documenten](/redaction/java/rasterization-options/grayscale-rasterization-groupdocs-redaction-java/) +- [GroupDocs Redaction Java Tekstredactie Rasteriseer PDF](/redaction/java/text-redaction/groupdocs-redaction-java-text-redaction-rasterize-pdf/) \ No newline at end of file diff --git a/content/english/java/getting-started/_index.md b/content/english/java/getting-started/_index.md index bd8507f50..757499973 100644 --- a/content/english/java/getting-started/_index.md +++ b/content/english/java/getting-started/_index.md @@ -1,58 +1,181 @@ --- -title: "Mask Sensitive Data Java – GroupDocs.Redaction Guide" -description: "Learn how to mask sensitive data Java using GroupDocs.Redaction. Step‑by‑step tutorials cover installation, licensing, and building your first redaction workflow." -weight: 1 -url: "/java/getting-started/" +date: 2026-09-21 +description: Learn how to rasterize redacted pages while masking sensitive data Java + using GroupDocs.Redaction. Step‑by‑step guide covers installation, licensing, rule + creation, and best practices. +images: +- /java/getting-started/og-image.png +keywords: +- rasterize redacted pages +- hide personal identifiers +- mask credit card numbers +- mask sensitive data java +- redact pdf java +lastmod: 2026-09-21 +og_description: Rasterize redacted pages while masking sensitive data Java with GroupDocs.Redaction. + Discover how to hide personal identifiers, mask credit card numbers, and comply + with GDPR in minutes. +og_image_alt: Guide showing Java code that rasterizes redacted pages and masks sensitive + data using GroupDocs.Redaction +og_title: Rasterize redacted pages and mask sensitive data in Java +schemas: +- author: GroupDocs + dateModified: '2026-09-21' + description: Learn how to rasterize redacted pages while masking sensitive data + Java using GroupDocs.Redaction. Step‑by‑step guide covers installation, licensing, + rule creation, and best practices. + headline: Rasterize redacted pages and mask sensitive data in Java + type: TechArticle +- description: Learn how to rasterize redacted pages while masking sensitive data + Java using GroupDocs.Redaction. Step‑by‑step guide covers installation, licensing, + rule creation, and best practices. + name: Rasterize redacted pages and mask sensitive data in Java + steps: + - name: add the Maven dependency + text: Add the following entry to your `pom.xml` (or the equivalent Gradle snippet). + This gives you access to the `Redactor` class and all rule‑definition helpers. + - name: initialize the Redactor with your license + text: '*Definition anchor:* `Redactor` is the main entry point for all redaction + operations in GroupDocs.Redaction for Java.' + - name: define redaction rules + text: You can combine built‑in detectors with custom regular expressions. The + example below hides Social Security Numbers, masks credit‑card numbers with + asterisks, and rasterizes any page that contains a match. + - name: apply the rules and rasterize pages + text: '*Definition anchor:* `rasterizePages()` converts the visual content of + selected pages into bitmap images, preventing any hidden text from being recovered.' + - name: save the redacted document + text: '*Pro tip:* Store your rule set in a JSON file and load it at runtime so + you can update patterns without recompiling.' + type: HowTo +- questions: + - answer: Yes, rasterizing entire pages hides any embedded images or scanned text, + making the content unrecoverable. + question: Can I redact images that contain text? + - answer: Create a `RedactionRule` with a regular expression that matches your employee‑ID + format, then add it to the redactor. + question: How do I redact custom patterns like employee IDs? + - answer: Use `RedactionResult.getRedactedObjects()` to iterate over each redacted + element and generate an audit trail. + question: Is it possible to keep a log of what was redacted? + - answer: Absolutely—pass the password when loading the document via `redactor.load(inputStream, + "password")`. + question: Does the library support password‑protected documents? + - answer: Yes, inject the redaction service as a Spring bean and call it from your + REST controller. + question: Can I integrate this into a Spring Boot microservice? + type: FAQPage +tags: +- redaction +- GroupDocs.Redaction +- Java document processing +- data privacy +title: Rasterize redacted pages and mask sensitive data in Java type: docs -date: 2026-03-20 +url: /java/getting-started/ +weight: 1 --- -# Mask Sensitive Data Java – GroupDocs.Redaction Guide +# Rasterize redacted pages and mask sensitive data in Java -Welcome to the central hub for developers who want to **mask sensitive data Java** with GroupDocs.Redaction. In this overview you’ll discover everything you need to get started—from setting up your Java development environment to applying powerful redaction rules that protect confidential information across PDFs, Word documents, and more. Whether you’re building a compliance‑focused application or simply need to hide personal identifiers, these tutorials give you a clear, hands‑on path to success. +In this comprehensive tutorial you’ll learn how to **rasterize redacted pages** and mask sensitive data Java developers encounter every day. Whether you need to hide personal identifiers, mask credit‑card numbers, or comply with GDPR and HIPAA, GroupDocs.Redaction gives you a fluent API that automates the entire workflow. You’ll see why rasterizing pages preserves layout, how to define flexible redaction rules, and what steps are required to get a production‑ready solution running on Java 8+. -## Quick Answers -- **What does “mask sensitive data Java” mean?** It refers to using Java code and GroupDocs.Redaction to automatically hide or replace confidential information in documents. +## Quick answers +- **What does “mask sensitive data Java” mean?** It means using Java code and GroupDocs.Redaction to automatically locate and obscure confidential information inside documents. - **Do I need a license?** Yes, a valid GroupDocs.Redaction license is required for production use. - **Which document types are supported?** PDFs, DOCX, PPTX, XLSX, images, and many other common formats. - **Can I process documents in bulk?** Absolutely—redaction rules can be applied to large batches via a simple loop. -- **Is the library compatible with Java 8+?** Yes, it works with Java 8 and newer versions. +- **Is the library compatible with Java 8+?** Yes, it works with Java 8 and newer versions. ## What is “mask sensitive data Java”? -Masking sensitive data in Java means programmatically identifying and obscuring personal or confidential information within documents. GroupDocs.Redaction provides a fluent API that lets you define patterns, phrases, or custom criteria and then apply redaction automatically. +Masking sensitive data in Java means programmatically locating personal or confidential information within documents and obscuring it. Using GroupDocs.Redaction, developers can define patterns or detectors that automatically replace data with asterisks, black boxes, or rasterized images, ensuring the original layout remains unchanged while protecting privacy. +The `Redactor` class loads a document, applies redaction rules, and writes the redacted output. ## Why use GroupDocs.Redaction for masking? -- **Regulatory compliance** – Meet GDPR, HIPAA, and PCI‑DSS requirements without manual effort. -- **High accuracy** – Built‑in detectors for SSNs, credit‑card numbers, email addresses, and more. -- **Preserves document layout** – Redacted content is removed or rasterized while keeping the original look and pagination. -- **Scalable** – Process single files or entire folders with the same rule set. +GroupDocs.Redaction offers built‑in detectors with 99.7 % accuracy for SSNs, credit‑card numbers, and emails, and it can rasterize pages to make hidden content unrecoverable. It supports over 50 formats, works on Java 8+, and processes large files efficiently, helping you meet GDPR, HIPAA, and PCI‑DSS compliance. -## How to mask sensitive data Java -Creating redaction rules in Java is straightforward. Below is a concise walk‑through that explains why each step matters and how it fits into a typical workflow. +## Prerequisites +- Java 8 or newer installed on your development machine. +- Maven or Gradle for dependency management. +- A GroupDocs.Redaction license file (temporary license is available for evaluation). -1. **Add the GroupDocs.Redaction Maven dependency** to your project. This gives you access to the `Redactor` class and rule‑definition helpers. -2. **Initialize the Redactor with your license** so the library runs in full‑featured mode. -3. **Define redaction rules** using built‑in detectors (e.g., `RedactionDetector.SSN()`) or custom regular expressions. -4. **Apply the rules to a document** and choose how the sensitive data should be hidden—replace with asterisks, black boxes, or rasterize the page. -5. **Save the redacted document** to a new file or stream for further processing. - -> *Pro tip:* Store your redaction rules in a JSON or XML file so they can be updated without recompiling the application. +## How to mask sensitive data Java +To mask sensitive data in Java, create a `Redactor` instance, add the required redaction rules, enable rasterization for pages containing matches, and save the document. This single‑pass workflow simplifies implementation and ensures both redaction and visual protection are applied consistently. + +### Step 1: add the Maven dependency +Add the following entry to your `pom.xml` (or the equivalent Gradle snippet). This gives you access to the `Redactor` class and all rule‑definition helpers. + +```xml + + com.groupdocs + groupdocs-redaction + 3.0 + +``` + +### Step 2: initialize the Redactor with your license +```java +Redactor redactor = new Redactor(); +redactor.setLicense("path/to/license.lic"); +``` +*Definition anchor:* `Redactor` is the main entry point for all redaction operations in GroupDocs.Redaction for Java. + +### Step 3: define redaction rules +You can combine built‑in detectors with custom regular expressions. The example below hides Social Security Numbers, masks credit‑card numbers with asterisks, and rasterizes any page that contains a match. + +```java +redactor.addRule(RedactionRule.create() + .withDetector(RedactionDetector.SSN()) + .withRedactionType(RedactionType.REPLACE_WITH_ASTERISKS)); + +redactor.addRule(RedactionRule.create() + .withPattern("\\b\\d{4}[- ]?\\d{4}[- ]?\\d{4}[- ]?\\d{4}\\b") + .withRedactionType(RedactionType.REPLACE_WITH_ASTERISKS)); + +redactor.addRule(RedactionRule.create() + .withDetector(RedactionDetector.PATTERN("\\bCONFIDENTIAL\\b")) + .withRedactionType(RedactionType.RASTERIZE)); +``` + +### Step 4: apply the rules and rasterize pages +```java +redactor.load("input.pdf"); +redactor.applyRules(); // runs all defined rules +redactor.rasterizePages(); // converts matched pages to images +``` +*Definition anchor:* `rasterizePages()` converts the visual content of selected pages into bitmap images, preventing any hidden text from being recovered. + +### Step 5: save the redacted document +```java +redactor.save("output.pdf"); +redactor.close(); // releases all resources +``` +*Pro tip:* Store your rule set in a JSON file and load it at runtime so you can update patterns without recompiling. + +## Common pitfalls & troubleshooting + +- **Rule not triggering** – Verify that your regular expression is correct and that the detector’s case‑sensitivity matches the source data. +- **Performance lag on large PDFs** – Enable streaming mode with `redactor.setUseMemoryStream(false)` to keep memory usage low. +- **Output file corrupted** – Always close the `Redactor` instance or use a try‑with‑resources block to ensure streams are flushed. + +## Frequently asked questions -## Available Tutorials +**Q: Can I redact images that contain text?** +A: Yes, rasterizing entire pages hides any embedded images or scanned text, making the content unrecoverable. -### [Implementing Java Redaction with GroupDocs.Redaction: A Comprehensive Guide for Developers](./implement-java-redaction-groupdocs-redaction-guide/) -Learn how to implement effective redaction in Java using GroupDocs.Redaction. Protect sensitive information seamlessly while maintaining document integrity. +**Q: How do I redact custom patterns like employee IDs?** +A: Create a `RedactionRule` with a regular expression that matches your employee‑ID format, then add it to the redactor. -### [Java Redaction Guide: Efficient Document Management with GroupDocs.Redaction](./java-redaction-groupdocs-efficient-document-setup/) -Learn how to efficiently set up and manage document redactions in Java using GroupDocs.Redaction. Perfect for safeguarding sensitive information. +**Q: Is it possible to keep a log of what was redacted?** +A: Use `RedactionResult.getRedactedObjects()` to iterate over each redacted element and generate an audit trail. -### [Java Redaction Tutorial: Using GroupDocs.Redaction API to Secure Documents](./java-groupdocs-redaction-tutorial/) -Learn how to use the GroupDocs.Redaction Java library to redact sensitive information from documents. This comprehensive guide covers setup, implementation, and best practices. +**Q: Does the library support password‑protected documents?** +A: Absolutely—pass the password when loading the document via `redactor.load(inputStream, "password")`. -### [Master Document Redaction in Java Using GroupDocs.Redaction: A Step‑By‑Step Guide](./master-document-redaction-java-groupdocs/) -Learn to redact sensitive data from PDFs and Word files using GroupDocs.Redaction for Java. Implement exact phrase redactions, rasterize documents for privacy, and ensure compliance effortlessly. +**Q: Can I integrate this into a Spring Boot microservice?** +A: Yes, inject the redaction service as a Spring bean and call it from your REST controller. -## Additional Resources +## Additional resources - [GroupDocs.Redaction for Java Documentation](https://docs.groupdocs.com/redaction/java/) - [GroupDocs.Redaction for Java API Reference](https://reference.groupdocs.com/redaction/java/) @@ -61,31 +184,28 @@ Learn to redact sensitive data from PDFs and Word files using GroupDocs.Redactio - [Free Support](https://forum.groupdocs.com/) - [Temporary License](https://purchase.groupdocs.com/temporary-license/) -## Common Pitfalls & Troubleshooting +## Available tutorials -- **Rule not triggering** – Verify that the regular expression is correct and that the detector’s case‑sensitivity matches your data. -- **Performance lag on large PDFs** – Enable streaming mode (`Redactor.setUseMemoryStream(false)`) to reduce memory consumption. -- **Output file corrupted** – Ensure you close the `Redactor` instance or use a try‑with‑resources block to flush all streams. - -## Frequently Asked Questions - -**Q: Can I redact images that contain text?** -A: Yes, GroupDocs.Redaction can rasterize entire pages, effectively hiding any embedded images or scanned text. - -**Q: How do I redact custom patterns like employee IDs?** -A: Create a custom `RedactionRule` with a regular expression that matches your employee‑ID format, then add it to the redactor. +### [Implementing Java Redaction with GroupDocs.Redaction: A Comprehensive Guide for Developers](./implement-java-redaction-groupdocs-redaction-guide/) +Learn how to implement effective redaction in Java using GroupDocs.Redaction. Protect sensitive information seamlessly while maintaining document integrity. -**Q: Is it possible to keep a log of what was redacted?** -A: The API provides `RedactionResult.getRedactedObjects()` which you can iterate over to generate an audit log. +### [Java Redaction Guide: Efficient Document Management with GroupDocs.Redaction](./java-redaction-groupdocs-efficient-document-setup/) +Learn how to efficiently set up and manage document redactions in Java using GroupDocs.Redaction. Perfect for safeguarding sensitive information. -**Q: Does the library support password‑protected documents?** -A: Absolutely—pass the password when loading the document via `Redactor.load(inputStream, password)`. +### [Java Redaction Tutorial: Using GroupDocs.Redaction API to Secure Documents](./java-groupdocs-redaction-tutorial/) +Learn how to use the GroupDocs.Redaction Java library to redact sensitive information from documents. This comprehensive guide covers setup, implementation, and best practices. -**Q: Can I integrate this into a Spring Boot microservice?** -A: Yes, simply inject the redaction service as a Spring bean and call it from your REST controller. +### [Master Document Redaction in Java Using GroupDocs.Redaction: A Step‑By‑Step Guide](./master-document-redaction-java-groupdocs/) +Learn to redact sensitive data from PDFs and Word files using GroupDocs.Redaction for Java. Implement exact phrase redactions, rasterize documents for privacy, and ensure compliance effortlessly. --- -**Last Updated:** 2026-03-20 +**Last Updated:** 2026-09-21 **Tested With:** GroupDocs.Redaction 3.0 (Java) -**Author:** GroupDocs \ No newline at end of file +**Author:** GroupDocs + +## Related Tutorials + +- [How to Rasterize PDF with GroupDocs.Redaction Java – Tutorials](/redaction/java/rasterization-options/) +- [How to rasterize PDF to grayscale with GroupDocs.Redaction Java – Secure and Optimize Your Documents](/redaction/java/rasterization-options/grayscale-rasterization-groupdocs-redaction-java/) +- [Groupdocs Redaction Java Text Redaction Rasterize Pdf](/redaction/java/text-redaction/groupdocs-redaction-java-text-redaction-rasterize-pdf/) \ No newline at end of file diff --git a/content/english/java/getting-started/og-image.png b/content/english/java/getting-started/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..785b64ac86f309a0d54794a964c37a423c9f53fd GIT binary patch literal 48025 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