Wie verknüpfe ich Bilder in einer DOC-Datei mithilfe der Google API per Hotlink?
P粉449281068
P粉449281068 2023-07-21 13:47:02
0
1
667

Ich habe eine neue Dokumentdatei in Google Docs erstellt, ein Bild eingefügt und (es gibt keine Möglichkeit, ein verlinktes Bild einzufügen, oder?) musste ihm eine URL zuweisen, damit auf das Bild geklickt werden konnte.

$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']);

Aber ich kann die richtige API-Funktion nicht finden. Es gibt eine setLinkUrl-Methode der Klasse InlineImage, aber wie erhält man eine Instanz von InlineImage?

Eine andere Möglichkeit besteht darin, das Dokument zu durchlaufen

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

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

Der gedruckte Inhalt enthält jedoch keine nützlichen Informationen.

P粉449281068
P粉449281068

Antworte allen(1)
P粉083785014

在您展示的脚本中,使用Docs API创建了一个新的文档,并将图片放入了创建的新文档中。在这种情况下,您可以将请求正文修改如下,使用UpdateTextStyleRequest。

示例:

$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',
            ),
        )
    )
));

示例:

$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',
        ),
    )),
];
  • 使用这个修改后的请求正文时, https://www.google.com 的超链接将被设置到在Google文档中插入的图片上。

  • 例如,如果您想从文档中插入的图片中检索startIndex和endIndex,可以使用以下示例脚本:

    $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));
                  }
              }
          }
      }
    • 在您的脚本中,$startIndex和$endIndex的值分别为1和2。请将这些值与updateTextStyle的范围一起使用,如上述修改所示。
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage