Embed
Embutir é uma maneira simples de incluir o aplicativo em seu site. Adicione o seguinte código ao seu site:
<iframe id="butterfly" src="https://web.butterfly.linwood.dev/embed" width="100%" height="500px" allowtransparency="true"></iframe>| Alternativa | Tipo | Padrão | Descrição |
|---|---|---|---|
| save | Boolean (true, false) | true | Habilitar salvamento. Se desativado, somente um botão de saída será mostrado |
| editable | true | Habilitar edição. Se desativado, o documento será somente leitura | |
| language | String (…, sistema, usuário) | user | Idioma do documento. Se o sistema, o idioma será detectado do navegador. Se o usuário, o idioma será ajustado para as preferências de usuários |
Messaging
Seção intitulada “Messaging”The embed uses browser postMessage events. Send messages to the iframe with
iframe.contentWindow.postMessage({ type, message }, origin). Butterfly sends
messages back to the parent window with the same shape:
{ type: string, message?: unknown }.
See the embedding example for a live page that sends messages to the iframe and listens for messages from it.
<iframe id="butterfly" src="https://web.butterfly.linwood.dev/embed?save=true&editable=true" width="100%" height="500"></iframe>
<script> const butterflyOrigin = 'https://web.butterfly.linwood.dev'; const butterfly = document.querySelector('#butterfly');
function sendToButterfly(type, message) { butterfly.contentWindow.postMessage({ type, message }, butterflyOrigin); }
window.addEventListener('message', (event) => { if ( event.origin !== butterflyOrigin || event.source !== butterfly.contentWindow ) { return; }
const { type, message } = event.data ?? {};
if (type === 'save') { const documentBytes = Array.from(message); console.log('Save requested by the embed', documentBytes); }
if (type === 'change') { console.log('Document changed', message); }
if (type === 'getData') { console.log('Current document bytes', message); }
if (type === 'render') { const image = new Image(); image.src = `data:image/png;base64,${message}`; document.body.append(image); } });
butterfly.addEventListener('load', () => { sendToButterfly('getData');
sendToButterfly('render', { x: 0, y: 0, width: 600, height: 400, scale: 1, renderBackground: true, }); });</script>To load document bytes into the embed, send an array of byte values:
sendToButterfly('setData', documentBytes);Eventos
Seção intitulada “Eventos”Listen for events with window.addEventListener('message', ...).
O evento
saveé emitido quando o usuário clica no botão salvar.
Parâmetros:
message(TypeList<int>): The data of the document.
O evento
exité emitido quando o usuário clica no botão de sair.
Parâmetros:
message(TypeList<int>): The data of the document.
O evento
changeé emitido quando o usuário altera o documento.
Parâmetros:
message(TypeList<int>): The data of the document.
Métodos
Seção intitulada “Métodos”Call methods with iframe.contentWindow.postMessage(...). Methods that return
data send another message back with the same type.
getData
Seção intitulada “getData”O método
getDataretorna os dados do documento.
Nenhum parâmetro.
Retorna: List<int>
setData
Seção intitulada “setData”O método
setDatadefine os dados do documento.
Parâmetros:
dados(TipoList<int>): Os dados do documento.
O método
renderrenderiza o documento em uma imagem png.
Parâmetros:
x(TypeNumber): The x position of the exported area.y(TypeNumber): The y position of the exported area.width(TipoNumber): A largura da imagem.height(TipoNumber): A altura da imagem.scale(TipoNumber): A escala da imagem.renderBackground(TipoBoolean): Setrue, o fundo será renderizado.
Retorna: String (imagem codificada em Base64)
renderSVG
Seção intitulada “renderSVG”O método
renderSVGrenderiza o documento em uma imagem svg.
Parâmetros:
x(TypeNumber): The x position of the exported area.y(TypeNumber): The y position of the exported area.width(TipoNumber): A largura da imagem.height(TipoNumber): A altura da imagem.renderBackground(TipoBoolean): Setrue, o plano de fundo será renderizado.
Retorna: String (SVG)