recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment créer un lien hypertexte vers des images dans un fichier DOC à l'aide de l'API Google ?

J'ai créé un nouveau fichier de document sur Google Docs, inséré une image et (il n'y a pas d'option pour insérer une image liée, n'est-ce pas ?) j'ai dû lui attribuer une URL pour que l'on puisse cliquer sur l'image.

$docs_service = new Google_Service_Docs($client);
$drive_service = new Google_Service_Drive($client); 

$document = new Google_Service_Docs_Document(array(
    'title' => $file_name
));
$document = $docs_service->documents->create($document);   

$requests[] =
    new Google_Service_Docs_Request(array(
        'insertText' => array(
            'location' => array(
                'index' => 1,
            ),
            'text' => "n".$text
        )
    ));

$requests[] = new Google_Service_Docs_Request(array(
    'insertInlineImage' => array(
        'uri' => 'https://example.com/img.jpg',
        'location' => array(
            'index' => 1,
        ),
        'objectSize' => array(
            'height' => array(
                'magnitude' => 675,
                'unit' => 'PT',
            ),
            'width' => array(
                'magnitude' => 360,
                'unit' => 'PT',
            ),
        )
    )
));

$batchUpdateRequest = new Google_Service_Docs_BatchUpdateDocumentRequest(array(
    'requests' => $requests
));
$response = $docs_service->documents->batchUpdate($document->getDocumentId(), $batchUpdateRequest);

$doc = $docs_service->documents->get($document->getDocumentId(), ['fields' => 'body']);

Mais je ne trouve pas la bonne fonction API. Il existe une méthode setLinkUrl de la classe InlineImage, mais comment obtenir une instance d'InlineImage ?

Une autre façon consiste à parcourir le document

$doc = $docs_service->documents->get($document->getDocumentId(), ['fields' => 'body']);

foreach ($doc->body->content as $content) {
  print_r($content);
}

Mais le contenu imprimé ne contient aucune information utile.

P粉449281068P粉449281068482 Il y a quelques jours621

répondre à tous(1)je répondrai

  • P粉083785014

    P粉0837850142023-07-22 12:15:36

    Dans le script que vous avez montré, un nouveau document est créé à l'aide de l'API Docs et l'image est placée dans le nouveau document créé. Dans ce cas, vous pouvez modifier le corps de la requête comme suit, à l'aide de UpdateTextStyleRequest.

    Exemple :

    $requests[] = new Google_Service_Docs_Request(array(
        'insertInlineImage' => array(
            'uri' => 'https://example.com/img.jpg',
            'location' => array(
                'index' => 1,
            ),
            'objectSize' => array(
                'height' => array(
                    'magnitude' => 675,
                    'unit' => 'PT',
                ),
                'width' => array(
                    'magnitude' => 360,
                    'unit' => 'PT',
                ),
            )
        )
    ));

    Exemple :

    $requests = [
        new Google_Service_Docs_Request(array(
            'insertInlineImage' => array(
                'uri' => 'https://example.com/img.jpg',
                'location' => array(
                    'index' => 1,
                ),
                'objectSize' => array(
                    'height' => array(
                        'magnitude' => 675,
                        'unit' => 'PT',
                    ),
                    'width' => array(
                        'magnitude' => 360,
                        'unit' => 'PT',
                    ),
                )
            ),
        )),
        new Google_Service_Docs_Request(array(
            'updateTextStyle' => array(
                'range' => array(
                    'startIndex' => 1,
                    'endIndex' => 2,
                ),
                'textStyle' => array(
                    'link' => array(
                        'url' => 'https://www.google.com', // Please set your URL.
                    ),
                ),
                'fields' => 'link',
            ),
        )),
    ];
    • Lors de l'utilisation de ce corps de requête modifié, le lien hypertexte https://www.google.com sera défini vers l'image insérée dans Google Docs.

    • Par exemple, si vous souhaitez récupérer startIndex et endIndex à partir d'une image insérée dans le document, vous pouvez utiliser l'exemple de script suivant :

      $doc = $docs_service->documents->get($document->getDocumentId(), ['fields' => 'body']);
        foreach ($doc->body->content as $content) {
            if (array_key_exists('paragraph', $content)) {
                foreach ($content->paragraph->elements as $element) {
                    if (array_key_exists('inlineObjectElement', $element)) {
                        $startIndex = $element->startIndex;
                        $endIndex = $element->endIndex;
                        print_r(array($startIndex, $endIndex));
                    }
                }
            }
        }
      • Dans votre script, les valeurs de $startIndex et $endIndex sont respectivement 1 et 2. Veuillez utiliser ces valeurs avec la portée de updateTextStyle comme indiqué dans la modification ci-dessus.

    répondre
    0
  • Annulerrépondre