تنسيق النص

توضّح هذه الصفحة كيفية تنسيق النص باستخدام Google Docs API.

لمحة عن التنسيق

هناك نوعان مختلفان من التنسيق يمكنك تطبيقهما على محتوى النص في مستندك:

  • يمكنك تغيير تنسيق الأحرف، مثل الخط أو اللون أو التسطير.
  • يمكنك تغيير تنسيق الفقرة، مثل المسافة البادئة أو تباعد الأسطر.

تغيير تنسيق الأحرف

يحدّد تنسيق الأحرف طريقة عرض أحرف النص في مستندك.

أي تنسيق تطبّقه يحلّ محل التنسيق التلقائي الموروث من TextStyle للفقرة الأساسية. في المقابل، تواصل أي أحرف لا تحدّد تنسيقها اكتساب التنسيق من أنماط الفقرة.

لتغيير تنسيق الأحرف في النص، استخدِم batchUpdate مع الـ UpdateTextStyleRequest. عليك تقديم عنصر Range يتضمّن المعلومات التالية:

  • segmentId الذي يحدّد الرأس أو التذييل أو الحاشية السفلية التي تحتوي على النص، أو النص الأساسي إذا لم يتم تحديد أي منها.
  • startIndex وendIndex اللذان يحدّدان نطاق النص الذي سيتم تنسيقه ضمن المقطع.
  • tabId الذي يحدّد علامة التبويب التي تحتوي على النص.

يُجري المثال التالي عدة عمليات لتنسيق النص في النص الموجود في الرأس:

  • يضبط الخط للأحرف من 1 إلى 5 على خط مائل غامق.
  • يضبط لون الأحرف من 6 إلى 10 على blue خط Times New Roman وحجم 14 نقطة.
  • يضيف رابطًا تشعّبيًا للأحرف من 11 إلى 15 يؤدي إلى www.example.com.

هناك طريقة بسيطة لإجراء ذلك وهي إنشاء قائمة بالطلبات ثم استخدام طلب batchUpdate واحد:

جافا

List requests = new ArrayList<>();
requests.add(new Request().setUpdateTextStyle(new UpdateTextStyleRequest()
        .setTextStyle(new TextStyle()
                .setBold(true)
                .setItalic(true))
        .setRange(new Range()
                .setStartIndex(1)
                .setEndIndex(5)
                .setTabId(TAB_ID))
        .setFields("bold")));

requests.add(new Request()
        .setUpdateTextStyle(new UpdateTextStyleRequest()
                .setRange(new Range()
                        .setStartIndex(6)
                        .setEndIndex(10)
                        .setTabId(TAB_ID))
                .setTextStyle(new TextStyle()
                        .setWeightedFontFamily(new WeightedFontFamily()
                                .setFontFamily("Times New Roman"))
                        .setFontSize(new Dimension()
                                .setMagnitude(14.0)
                                .setUnit("PT"))
                        .setForegroundColor(new OptionalColor()
                                .setColor(new Color().setRgbColor(new RgbColor()
                                        .setBlue(1.0F)
                                        .setGreen(0.0F)
                                        .setRed(0.0F)))))
                .setFields("foregroundColor,weightedFontFamily,fontSize")));

requests.add(new Request()
        .setUpdateTextStyle(new UpdateTextStyleRequest()
                .setRange(new Range()
                        .setStartIndex(11)
                        .setEndIndex(15)
                        .setTabId(TAB_ID))
                .setTextStyle(new TextStyle()
                        .setLink(new Link()
                                .setUrl("www.example.com")))
                .setFields("link")));


BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);
BatchUpdateDocumentResponse response = docsService.documents()
        .batchUpdate("DOCUMENT_ID", body).execute();

Python

requests = [
    {
        'updateTextStyle': {
            'range': {
                'startIndex': 1,
                'endIndex': 5,
                'tabId': 'TAB_ID'
            },
            'textStyle': {
                'bold': True,
                'italic': True
            },
            'fields': 'bold,italic'
        }
    },
    {
        'updateTextStyle': {
            'range': {
                'startIndex': 6,
                'endIndex': 10,
                'tabId': 'TAB_ID'
            },
            'textStyle': {
                'weightedFontFamily': {
                    'fontFamily': 'Times New Roman'
                },
                'fontSize': {
                    'magnitude': 14,
                    'unit': 'PT'
                },
                'foregroundColor': {
                    'color': {
                        'rgbColor': {
                            'blue': 1.0,
                            'green': 0.0,
                            'red': 0.0
                        }
                    }
                }
            },
            'fields': 'foregroundColor,weightedFontFamily,fontSize'
        }
    },
    {
        'updateTextStyle': {
            'range': {
                'startIndex': 11,
                'endIndex': 15,
                'tabId': 'TAB_ID'
            },
            'textStyle': {
                'link': {
                    'url': 'www.example.com'
                }
            },
            'fields': 'link'
        }
    }
]

result = service.documents().batchUpdate(
    documentId='DOCUMENT_ID', body={'requests': requests}).execute()

تغيير تنسيق الفقرة

يتيح لك Google Docs API تعديل تنسيق الفقرة، الذي يحدّد طريقة عرض فقرات النص في مستندك، بما في ذلك ميزات مثل المحاذاة والمسافة البادئة.

أي تنسيق تطبّقه يحلّ محل التنسيق التلقائي الموروث من نمط الفقرة الأساسي. في المقابل، تواصل أي ميزات تنسيق لا تحدّدها اكتساب التنسيق من نمط الفقرة. لمزيد من المعلومات عن أنماط الفقرات والتنسيق الموروث، يُرجى الاطّلاع على ParagraphStyle.

يحدّد المثال أدناه التنسيق التالي لفقرة:

  • عنوان كنمط مُسمّى
  • تباعد مخصّص أعلاه
  • تباعد مخصّص أدناه
  • حدّ أيسر مخصّص

تواصل جميع ميزات تنسيق الفقرة الأخرى اكتساب التنسيق من النمط المُسمّى الأساسي.

جافا

List requests = new ArrayList<>();
requests.add(new Request().setUpdateParagraphStyle(new UpdateParagraphStyleRequest()
        .setRange(new Range()
                .setStartIndex(1)
                .setEndIndex(10)
                .setTabId(TAB_ID))
        .setParagraphStyle(new ParagraphStyle()
                .setNamedStyleType("HEADING_1")
                .setSpaceAbove(new Dimension()
                        .setMagnitude(10.0)
                        .setUnit("PT"))
                .setSpaceBelow(new Dimension()
                        .setMagnitude(10.0)
                        .setUnit("PT")))
        .setFields("namedStyleType,spaceAbove,spaceBelow")
));

requests.add(new Request().setUpdateParagraphStyle(new UpdateParagraphStyleRequest()
        .setRange(new Range()
                .setStartIndex(10)
                .setEndIndex(20)
                .setTabId(TAB_ID))
        .setParagraphStyle(new ParagraphStyle()
                .setBorderLeft(new ParagraphBorder()
                        .setColor(new OptionalColor()
                                .setColor(new Color()
                                        .setRgbColor(new RgbColor()
                                                .setBlue(1.0F)
                                                .setGreen(0.0F)
                                                .setRed(0.0F)
                                        )
                                )
                        )
                        .setDashStyle("DASH")
                        .setPadding(new Dimension()
                                .setMagnitude(20.0)
                                .setUnit("PT"))
                        .setWidth(new Dimension()
                                .setMagnitude(15.0)
                                .setUnit("PT")
                        )
                )
        )
        .setFields("borderLeft")
));

BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);
BatchUpdateDocumentResponse response = docsService.documents()
        .batchUpdate(DOCUMENT_ID, body).execute();

Python

requests = [
    {
        'updateParagraphStyle': {
            'range': {
                'startIndex': 1,
                'endIndex':  10,
                'tabId': TAB_ID
            },
            'paragraphStyle': {
                'namedStyleType': 'HEADING_1',
                'spaceAbove': {
                    'magnitude': 10.0,
                    'unit': 'PT'
                },
                'spaceBelow': {
                    'magnitude': 10.0,
                    'unit': 'PT'
                }
            },
            'fields': 'namedStyleType,spaceAbove,spaceBelow'
        }
    },
    {
        'updateParagraphStyle': {
            'range': {
                'startIndex': 10,
                'endIndex':  20,
                'tabId': TAB_ID
            },
            'paragraphStyle': {
                'borderLeft': {
                    'color': {
                        'color': {
                            'rgbColor': {
                                'blue': 1.0,
                                'green': 0.0,
                                'red': 0.0
                            }
                        }
                    },
                    'dashStyle': 'DASH',
                    'padding': {
                        'magnitude': 20.0,
                        'unit': 'PT'
                    },
                    'width': {
                        'magnitude': 15.0,
                        'unit': 'PT'
                    },
                }
            },
            'fields': 'borderLeft'
        }
    }
]

result = service.documents().batchUpdate(
    documentId=DOCUMENT_ID, body={'requests': requests}).execute()