עיצוב טקסט

בדף הזה מוסבר איך לעצב טקסט באמצעות 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:

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