تنسيق مستندات PDF في Java
يتضمن التنسيق في Aspose.PDF for Java سلوك عارض المستندات، وتضمين الخط، وإعدادات العرض.
احصل على إعدادات نافذة المستند
استخدم هذا المثال لتفحص تفضيلات المشاهد الحالية المخزنة في مستند PDF موجود.
- افتح ملف PDF المصدر Document.
- اقرأ خصائص النافذة والعرض المطلوبة من المستند.
- اعرض الإعدادات الحالية للفحص أو التصحيح.
public static void getDocumentWindow(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
System.out.println("CenterWindow: " + document.isCenterWindow());
System.out.println("Direction: " + document.getDirection());
System.out.println("DisplayDocTitle: " + document.isDisplayDocTitle());
System.out.println("FitWindow: " + document.isFitWindow());
System.out.println("HideMenuBar: " + document.isHideMenubar());
System.out.println("HideToolBar: " + document.isHideToolBar());
System.out.println("HideWindowUI: " + document.isHideWindowUI());
System.out.println("NonFullScreenPageMode: " + document.getNonFullScreenPageMode());
System.out.println("PageLayout: " + document.getPageLayout());
System.out.println("PageMode: " + document.getPageMode());
}
}
ضبط تفضيلات نافذة المستند
يقوم هذا المثال بتحديث طريقة عرض ملف PDF عندما يتم فتحه في عارض متوافق.
- افتح ملف PDF المصدر Document.
- عيّن التفضيلات المطلوبة للنافذة والتخطيط ووضع الصفحة.
- احفظ ملف PDF المحدّث Document.
public static void setDocumentWindow(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
document.setCenterWindow(true);
document.setDirection(Direction.R2L);
document.setDisplayDocTitle(true);
document.setFitWindow(true);
document.setHideMenubar(true);
document.setHideToolBar(true);
document.setHideWindowUI(true);
document.setNonFullScreenPageMode(PageMode.UseOC);
document.setPageLayout(PageLayout.TwoColumnLeft);
document.setPageMode(PageMode.UseThumbs);
document.save(outputFile.toString());
}
}
تضمين الخطوط في ملف PDF موجود
استخدم هذا النهج عندما يجب أن يحمل المستند الخطوط المطلوبة لضمان عرض أكثر موثوقية على الأنظمة الأخرى.
- افتح ملف PDF المصدر Document.
- فعّل تضمين الخطوط القياسية وتكرار عبر الخطوط المستخدمة في كلٍ Page.
- علِّم أي غير مضمّن الكائنات Font للتضمين.
- احفظ المستند المحدث.
public static void embeddedFonts(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
document.setEmbedStandardFonts(true);
for (Page page : document.getPages()) {
for (Font pageFont : page.getResources().getFonts()) {
if (!pageFont.isEmbedded()) {
pageFont.setEmbedded(true);
}
}
}
document.save(outputFile.toString());
}
}
تضمين الخطوط عند إنشاء ملف PDF جديد
هذا المثال ينشئ ملف PDF جديد ويُعيّن خطًا مدمجًا لمحتوى النص من البداية.
- أنشئ مستند PDF جديدًا باستخدام Document وأضف Page.
- أنشئ المطلوب TextFragment, TextSegment، و TextState.
- استرجع الخط المستهدف Font من المستودع وضع علامة عليه لتضمينه.
- أضف محتوى النص إلى الصفحة واحفظ مستند الإخراج.
public static void embeddedFontsInNewDocument(Path outputFile) {
try (Document document = new Document()) {
try (Page page = document.getPages().add()) {
TextFragment fragment = new TextFragment("");
TextSegment segment = new TextSegment(" This is a sample text using Custom font.");
TextState textState = new TextState();
Font font = FontRepository.findFont("Arial");
font.setEmbedded(true);
textState.setFont(font);
segment.setTextState(textState);
fragment.getSegments().add(segment);
page.getParagraphs().add(fragment);
}
document.save(outputFile.toString());
}
}
تعيين Font افتراضي لإخراج PDF
استخدم هذا النمط عندما ينبغي أن يعود المستند المحفوظ إلى خطٍ محدد أثناء توليد الإخراج.
- افتح ملف PDF المصدر Document.
- أنشئ كائنًا من الفئة PdfSaveOptions وحدد اسم الخط الافتراضي.
- احفظ المستند باستخدام خيارات الحفظ المُكوَّنة.
public static void setDefaultFont(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
PdfSaveOptions saveOptions = new PdfSaveOptions();
saveOptions.setDefaultFontName("Arial");
document.save(outputFile.toString(), saveOptions);
}
}
احصل على جميع الخطوط المستخدمة في PDF
يعرض هذا المثال كل الخطوط المكتشفة في المستند حتى تتمكن من تدقيق استخدام الخطوط قبل تصدير الملف أو تحديثه.
- افتح ملف PDF المصدر Document.
- عدّ الخطوط التي تُرجعها أدوات خطوط المستند.
- اعرض اسم كل ما تم اكتشافه Font.
public static void getAllFonts(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
for (Font font : document.getFontUtilities().getAllFonts()) {
System.out.println(font.getFontName());
}
}
}
تحسين تضمين الخطوط عن طريق تقليص الخطوط
استخدم هذا النهج عندما تريد تقليل حجم الخط المضمن مع الحفاظ على توافق بيانات الخط المدمج مع استخدام المستند.
- افتح ملف PDF المصدر Document.
- شغّل تقليل الخط من خلال أدوات خطوط المستند المطلوبة FontSubsetStrategy القيم.
- احفظ المستند المُحسّن.
public static void improveFontsEmbedding(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
document.getFontUtilities().subsetFonts(FontSubsetStrategy.SubsetAllFonts);
document.getFontUtilities().subsetFonts(FontSubsetStrategy.SubsetEmbeddedFontsOnly);
document.save(outputFile.toString());
}
}
تعيين عامل تكبير فتح المستند
هذا المثال يضبط مستوى التكبير الأولي الذي يجب تطبيقه عند فتح ملف PDF.
- افتح ملف PDF المصدر Document.
- أنشئ كائنًا من الفئة GoToAction مع XYZExplicitDestination.
- عيّن الإجراء كإجراء فتح المستند واحفظ النتيجة.
public static void setZoomFactor(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
GoToAction action = new GoToAction(new XYZExplicitDestination(1, 0.0, 0.0, 0.5));
document.setOpenAction(action);
document.save(outputFile.toString());
}
}
احصل على معامل تكبير المستند عند الفتح
استخدم هذا المثال للتحقق مما إذا كان ملف PDF يحدد بالفعل مستوى تكبير صريح لإجراء الفتح الخاص به.
- افتح ملف PDF المصدر Document.
- تحقّق مما إذا كان إجراء الفتح هو GoToAction مع XYZExplicitDestination.
- أخرج قيمة التكبير المُكوَّنة أو أبلغ بأنه لا يوجد تكبير محدد.
public static void getZoomFactor(Path inputFile) {
try (Document document = new Document(inputFile.toString())) {
if (document.getOpenAction() instanceof GoToAction action
&& action.getDestination() instanceof XYZExplicitDestination destination) {
System.out.println("Zoom: " + destination.getZoom());
} else {
System.out.println("Zoom: not set");
}
}
}