עיצוב טקסט

בדף הזה מוסבר איך לעצב טקסט באמצעות ממשק ה-API של Google Docs.

מידע על הפורמט

יש שני סוגי עיצוב שניתן להחיל על הטקסט תוכן המסמך:

  • אפשר לשנות את עיצוב התווים, כמו הגופן, הצבע או הקו התחתון.
  • אפשר לשנות את העיצוב של פסקאות, כגון כניסת פסקה או רווח בין שורות.

שינוי פורמט התווים

פורמט התווים קובע את הרינדור של תווי טקסט מהמסמך.

כל עיצוב שמחילים מבטל את פורמט ברירת המחדל שעבר בירושה ה-TextStyle של הפסקה הבסיסית. לעומת זאת, תווים שלא הגדרתם את העיצוב שלהם ימשיכו לקבל בירושה מהסגנונות של הפסקה.

כדי לשנות את עיצוב התווים של הטקסט, צריך להשתמש ב-batchUpdate עם UpdateTextStyleRequest. צריך לציין טווח שכולל את המידע הבא:

  • segmentId שמזהה איזו כותרת עליונה, כותרת תחתונה או הערת שוליים, או אם לא צוין, הגוף — מכיל את הטקסט.
  • startIndex ו-endIndex שמגדירים את טווח הטקסט בתוך את הפלח שיוצג בפורמט.
  • tabId שמציין איזו כרטיסייה מכילה את הטקסט.

בדוגמה הבאה מתבצעות מספר פעולות של עיצוב טקסט בטקסט שכלולה בכותרת:

  • הגדרת הגופן של התווים 1-5 לגופן נטוי.
  • מגדיר את הצבע של התווים 6-10 כגופן blue 14-pt Times New {2/} .
  • מתבצעת היפר-קישורים מתווים 11-15 אל www.example.com.

דרך פשוטה לעשות זאת היא ליצור רשימה של בקשות, ולאחר מכן באמצעות קובץ batchUpdate אחד call:

Java

List<Request> 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.

הדוגמה הבאה מציינת את הפורמט הבא של פסקה:

  • כותרת כסגנון בעל השם
  • ריווח מותאם אישית למעלה
  • ריווח מותאם אישית בהמשך
  • גבול שמאלי מותאם אישית

כל שאר תכונות העיצוב של הפסקה ממשיכות בירושה את הסגנון הבסיסי בעל השם.

Java

List<Request> 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()