2015-04-07 44 views
1

我正在使用Google文档插件,我需要从Google文档文档获取InlineImage并将其转换为HTML图像。将Google文档中的InlineImage转换为HTML图像

我最初的策略是从InlineImage获取数据并将其转换为data URI,但我了解到应用程序脚本不支持此操作。任何人都知道我该怎么办?

+0

,让您在显示图像?在加载项或其他地方? – Kriggs

+0

它将显示在附加侧边栏内。 – stuck

回答

0

你是对的,Caja模板系统doesn't support data URIs,但你可以通过切换侧边栏使用IFRAME sandbox mode来解决这个问题。由于IFRAME模式不使用Caja,因此不受限制,但有一点需要注意:它与旧版浏览器不兼容。但是,如果您需要使用数据URI,则没有其他选择。

下面是一个示例脚本,它将采用选定图像并使用数据URI将其显示在附加侧边栏中。

Code.gs:

function getImage() { 
    var els = DocumentApp.getActiveDocument().getSelection().getRangeElements(); 
    var el; 

    for (var i = 0; i < els.length; i++) { 
    el = els[i].getElement(); 

    if (el.getType() === DocumentApp.ElementType.INLINE_IMAGE) { 
     return el; 
    } 
    } 

    return null; 
} 

function showSidebar() { 
    var mimetype = 'image/png'; 
    var blob = getImage().getAs(mimetype); 
    var uri = 'data:' + mimetype + ';base64,' + Utilities.base64Encode(blob.getBytes()); 

    var sidebar = HtmlService.createTemplateFromFile('Sidebar'); 
    sidebar.data = uri; 

    DocumentApp.getUi().showSidebar(
    sidebar 
     .evaluate() 
     .setSandboxMode(HtmlService.SandboxMode.IFRAME) 
); 
} 

Sidebar.html:

<img src="<?!= data ?>" />