Bagaimana untuk memautkan imej dalam fail DOC menggunakan API Google?
P粉449281068
P粉449281068 2023-07-21 13:47:02
0
1
638

Saya mencipta fail dokumen baharu pada Dokumen Google, memasukkan imej dan (tiada pilihan untuk memasukkan imej terpaut, bukan?) perlu memberikannya URL supaya imej itu boleh diklik.

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

Tetapi saya tidak dapat mencari fungsi API yang betul. Terdapat kaedah setLinkUrl kelas InlineImage, tetapi bagaimana untuk mendapatkan contoh InlineImage?

Cara lain ialah mengulangi dokumen

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

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

Tetapi kandungan yang dicetak tidak mengandungi sebarang maklumat yang berguna.

P粉449281068
P粉449281068

membalas semua(1)
P粉083785014

Dalam skrip yang anda tunjukkan, dokumen baharu dibuat menggunakan API Dokumen dan imej diletakkan ke dalam dokumen baharu yang dibuat. Dalam kes ini, anda boleh mengubah suai badan permintaan seperti berikut, menggunakan UpdateTextStyleRequest.

Contoh:

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

Contoh:

$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',
        ),
    )),
];
  • Apabila menggunakan isi permintaan yang diubah suai ini, hiperpautan https://www.google.com akan ditetapkan kepada imej yang dimasukkan dalam Dokumen Google.

  • Sebagai contoh, jika anda ingin mendapatkan semula startIndex dan endIndex daripada gambar yang dimasukkan dalam dokumen, anda boleh menggunakan skrip contoh berikut:

    $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));
                  }
              }
          }
      }
    • Dalam skrip anda, nilai $startIndex dan $endIndex masing-masing adalah 1 dan 2. Sila gunakan nilai ini dengan skop updateTextStyle seperti yang ditunjukkan dalam pengubahsuaian di atas.
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan