עיצוב טקסט

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

מידע על עיצוב

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

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

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

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

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

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

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

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

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

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

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