2016-07-12 3 views
2

현재 Office.js에 대한 추가 작업 중이며 주어진 URL에서 이미지를 삽입하려고합니다.URL에서 이미지를 Word에 삽입하는 방법

InlinePicture object (JavaScript API for Word)

나는 그들이이 "getBase64ImageSrc()"하여 IMG의 URL에서 base64로 표현을 가져 오는 기능이 내장되어 있습니다 것을 볼 : 나는에있는 Office.js 문서를 검토했다. dev office 웹 사이트의 설명서가 잘못되었거나 잘못되었습니다.

누군가가 "getBase64ImageSrc()"을 사용하여 URL의 이미지를 삽입하는 단어 추가 기능을 구축했는지 확인하고 싶습니다. 아니면 잘못된 방향으로보고 있습니다.

답변

2

혼란을 피하기 위해 마이크의 대답에 대해 자세히 설명 할 필요가 있습니다.

Staffer901 :이 게시물에는 2 가지 주제가 있습니다.

  1. 이미지를 문서에 삽입하십시오. 당신의 결론은 이미지 URL을 가진 이미지를 삽입하는 방법입니다. 기본적으로 이미지 용 클래식 HTML을 삽입하는 Michael이 언급 한 옵션은 작동하지만 아무 것도 사용하지 않는 것이 좋습니다. 그 이유는 인터넷 종속성에 연결되어있는 이미지에 대한 참조를 저장하고 있기 때문입니다. 즉, 해당 문서를 사용하는 모든 사용자가 이미지를 보려면 연결되어 있어야합니다.

이미지 삽입 (영구 삽입 :)을 수행하는 것이 좋습니다. range.insertInlinePictureFromBase64 메서드를 사용하는 것입니다. URL의 이미지를 base64 문자열로 인코딩하려면 추가 단계가 필요합니다.이 방법은 입력 매개 변수로 허용되는 메서드이며 here은이를 수행하는 방법에 대한 좋은 토론입니다. 아래 예제에서 인라인 사진 삽입을 보여주는 샘플을 확인하십시오. 이 문서의 첫 번째 단락에서 base64를 가지고 있다고 가정합니다. 필요한 경우 현재 삽입 점을 가져 와서 거기에 그림을 삽입 할 수 있습니다. insertInlinePictureFromBase64은 본문, 단락, 내용 컨트롤 등과 같이 범위에서 상속 한 모든 개체의 메서드입니다.

// Run a batch operation against the Word object model. 
 
Word.run(function (context) { 
 

 
    // Create a proxy object for the paragraphs collection. 
 
    var paragraphs = context.document.body.paragraphs; 
 

 
    // Queue a commmand to load the style property for all of the paragraphs. 
 
    context.load(paragraphs); 
 

 
    // Synchronize the document state by executing the queued commands, 
 
    // and return a promise to indicate task completion. 
 
    return context.sync().then(function() { 
 

 
     // Queue a command to get the first paragraph. 
 
     var paragraph = paragraphs.items[0]; 
 

 
     var b64encodedImg = "iVBORw0KGgoAAAANSUhEUgAAAB4AAAANCAIAAAAxEEnAAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACFSURBVDhPtY1BEoQwDMP6/0+XgIMTBAeYoTqso9Rkx1zG+tNj1H94jgGzeNSjteO5vtQQuG2seO0av8LzGbe3anzRoJ4ybm/VeKEerAEbAUpW4aWQCmrGFWykRzGBCnYy2ha3oAIq2MloW9yCCqhgJ6NtcQsqoIKdjLbFLaiACnYyf2fODbrjZcXfr2F4AAAAAElFTkSuQmCC"; 
 

 
     // Queue a command to insert a base64 encoded image at the beginning of the first paragraph. 
 
     paragraph.insertInlinePictureFromBase64(b64encodedImg, Word.InsertLocation.start); 
 

 
     // Synchronize the document state by executing the queued commands, 
 
     // and return a promise to indicate task completion. 
 
     return context.sync().then(function() { 
 
      console.log('Added an image to the first paragraph.'); 
 
     }); 
 
    }); 
 
}) 
 
.catch(function (error) { 
 
    console.log('Error: ' + JSON.stringify(error)); 
 
    if (error instanceof OfficeExtension.Error) { 
 
     console.log('Debug info: ' + JSON.stringify(error.debugInfo)); 
 
    } 
 
});

마지막 마이클스이 언급 한 setSelectedDataAsync 방법 최근 이미지 삽입을 지원하도록 업데이트되었습니다, 당신은 또한 이미지의 64 기수를 제공 할 필요가 있습니다 : 여기

은 샘플입니다 하지만 이점은 이전 버전과의 호환성 (2013 클라이언트에서도 작동 함)입니다.

// assumes a valid base64 is provided as the first parameter. 
 
Office.context.document.setSelectedDataAsync(mybase64, { coercionType: 'image' }, function (result) { 
 
      if (result.status == 'succeeded') 
 
       app.showNotification("Image inserted"); 
 
      else 
 
       app.showNotification("Error:" + result.error.message + " : " + error.name) 
 

 

 
     })
,739,

<올 = "2"로 시작> 문서로부터
  • 소모 이미지. 이것은 문서의 기존 이미지에서 base64를 가져 오는 것입니다. 우리에게는 시체가 있습니다. inlinePictures 컬렉션을 사용하여 문서의 모든 이미지를 가져올 수 있으며 getBase64 메서드를 사용하여 이진의 base64 인코딩 된 표현을 가져올 수 있습니다. 왜 이것이 문서에서 혼란스러워하는지 알고 싶습니다. 그것에 대해 자세히 설명해 주시겠습니까?
  • 이 정보가 유용하길 바랍니다. 감사와 행복한 코딩! -Juan.

    +0

    후안 감사합니다 당신의 대답은 깨끗하고 이해할 수있다. 나는 dev 비디오에서 당신을 지켜 봤습니다. 나는 궁금하다. IMG url을 취하여 기지 64로 변환 할 수있는 Api가 존재할 것인가? 저는 office.js로 3 년 넘게 일해 왔으며 그것이 단어, 엑셀, 파워 포인트 등을위한 매우 유용한 도구라고 말할 수 있습니다 ... –

    -1

    Word에서 이미지를 삽입하려면 특정 시나리오와 목표에 따라 Range.insertHtml 메서드 또는 Document.setSelectedDataAsync 메서드를 사용하십시오.

    내가 링크 된 다른 방법에 대한 문서에 오류가있는 것처럼 보입니다. 문제가 해결되었는지 확인 하겠지만 찾고있는 API가 아닌 것 같습니다.

    +0

    이 답변은 어쨌든 정확하지만 아래에보다 완벽한 답변을 게시했습니다. :) –

    관련 문제