# Recuperar os dados "brutos" reais que criaram uma postagem?

**URL:** https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183
**Category:** Development
**Created:** [Maio 4, 2021, 6:48pm UTC](https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183 "2021-05-04T18:48:10Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![JQ331](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@JQ331](https://meta.discourse.org/u/JQ331)
#### Post date: [Maio 4, 2021, 6:48pm UTC](https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183/1 "2021-05-04T18:48:10Z")

</div>

Se eu colar algum HTML em um tópico para criá-lo, o Discourse reformatará automaticamente o HTML (ele o “cozinha”), mantendo parte (mas não toda) a formatação subjacente e removendo as tags HTML da visualização.

Existe alguma maneira de recuperar posteriormente o HTML original que eu colei no tópico ao criá-lo? O mais próximo que consigo encontrar é fazer uma chamada à API com “raw=true” no endpoint e ver a resposta em response.data.post\_stream.posts[0].raw, como descrito [aqui](https://meta.discourse.org/t/raw-instead-of-cooked-for-topic-responses/59224/2).

No entanto, o texto “raw” retornado não é o HTML original. Não tenho certeza do que seja exatamente — parece ser o tópico cozido básico com todos os espaços removidos.

Existe alguma maneira de recuperar esse HTML original que eu colei?

---

<div class="post-metadata">

### Author: ![jomaxro](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jomaxro/32/126216_2.png) [@jomaxro](https://meta.discourse.org/u/jomaxro)
#### Post date: [Maio 4, 2021, 6:54pm UTC](https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183/2 "2021-05-04T18:54:58Z")

</div>

Claro, existe uma rota para visualizar o conteúdo bruto da postagem. Use sua postagem como exemplo. A URL é

```plaintext
https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183

```

Para ver o conteúdo bruto, substitua `/t/slug` por `/raw`.

```plaintext
https://meta.discourse.org/raw/189183

```

---

<div class="post-metadata">

### Author: ![JQ331](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@JQ331](https://meta.discourse.org/u/JQ331)
#### Post date: [Maio 4, 2021, 7:02pm UTC](https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183/3 "2021-05-04T19:02:49Z")

</div>

Obrigado, mas isso não parece estar funcionando para mim. Gostaria de receber dados que mantenham o HTML exato como quando o original foi colado — então, se o HTML original tinha uma tag div, por exemplo, quero que os dados retornados incluam essa tag div.

O que encontrei na resposta “raw”, por exemplo, contém formatação Markdown quando os dados originais não tinham nenhuma.

Vou tentar montar um exemplo agora para mostrar o que quero dizer.

---

<div class="post-metadata">

### Author: ![JQ331](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@JQ331](https://meta.discourse.org/u/JQ331)
#### Post date: [Maio 4, 2021, 7:20pm UTC](https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183/4 "2021-05-04T19:20:36Z")

</div>

Ok. Aqui está minha tentativa de um exemplo:

Escrevi algumas linhas com formatação diferente em um processador de texto, e o HTML gerado foi:

* * *

**HTML Original:**

```
<style>
     ...
     /* Style Definitions */
     table.MsoNormalTable
    	{mso-style-name:"Table Normal";
    	mso-tstyle-rowband-size:0;
    	mso-tstyle-colband-size:0;
    	mso-style-noshow:yes;
    	mso-style-priority:99;
    	mso-style-parent:"";
    	mso-padding-alt:0in 5.4pt 0in 5.4pt;
    	mso-para-margin:0in;
    	mso-pagination:widow-orphan;
    	font-size:12.0pt;
    	font-family:"Calibri",sans-serif;
    	mso-ascii-font-family:Calibri;
    	mso-ascii-theme-font:minor-latin;
    	mso-hansi-font-family:Calibri;
    	mso-hansi-theme-font:minor-latin;
    	mso-bidi-font-family:"Times New Roman";
    	mso-bidi-theme-font:minor-bidi;}
    </style>
    <![endif]-->
    </head>

    <body lang=EN-US style='tab-interval:.5in;word-wrap:break-word'>
    <!--StartFragment-->

    <p class=MsoNormal>Aqui está um texto. Família de fonte = Calibri, tamanho 12pt<o:p></o:p></p>

    <p class=MsoNormal><o:p>&nbsp;</o:p></p>

    <p class=MsoNormal><b>Este texto está em negrito</b>.<o:p></o:p></p>

    <p class=MsoNormal><o:p>&nbsp;</o:p></p>

    <p class=MsoNormal><i>Este texto está em itálico</i>.<o:p></o:p></p>

    <p class=MsoNormal><o:p>&nbsp;</o:p></p>

    <p class=MsoNormal><span style='font-size:18.0pt'>Este texto está em uma fonte maior
    = Calibri, tamanho 18</span>.<o:p></o:p></p>

    <p class=MsoNormal><o:p>&nbsp;</o:p></p>

    <p class=MsoNormal align=center style='text-align:center'><span
    style='font-size:11.0pt;font-family:"Garamond",serif'>E aqui está mais um texto aleatório
    centralizado = Garamond, tamanho 11. Lorem ipsum dolor sit amet,
    consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et
    dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
    laboris nisi ut aliquip ex ea commodo consequat.<o:p></o:p></span></p>

    <!--EndFragment-->
    </body>

    </html>

```

* * *

**Post do Discourse Processado:**

Se eu colar este HTML em um post do Discourse, ele fica assim (após passar pelo processo de “cook”):

Aqui está algum texto. Família de fontes = Calibri, tamanho 12pt

&nbsp;

**Este texto está em negrito**.

&nbsp;

_Este texto está em itálico_.

&nbsp;

Este texto está em uma fonte maior = Calibri, tamanho 18.

&nbsp;

E aqui está mais algum texto aleatório que está centralizado = Garamond, tamanho 11. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

* * *

**O que estou tentando recuperar**

Não há problema em que o Discourse processe a publicação e a exiba como faz. Mas o que quero agora é poder, posteriormente, pegar uma publicação e recuperar o HTML original subjacente. Portanto, os dados que eu recupero devem ter esta aparência:

```
<body lang=EN-US style='tab-interval:.5in;word-wrap:break-word'>
<!--StartFragment-->

<p class=MsoNormal>Aqui está algum texto. Família de fonte = Calibri, tamanho 12pt<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><b>Este texto está em negrito</b>.<o:p></o:p></p>

```

(etc.)

No momento, se eu usar o endpoint “raw” que você forneceu, ele não fornece esse HTML. Em vez disso, ele apenas fornece o texto com, aparentemente, a maioria da formatação e espaçamento removidos.

É possível recuperar o HTML original subjacente?

---

<div class="post-metadata">

### Author: ![jomaxro](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jomaxro/32/126216_2.png) [@jomaxro](https://meta.discourse.org/u/jomaxro)
#### Post date: [Maio 4, 2021, 7:39pm UTC](https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183/5 "2021-05-04T19:39:39Z")

</div>

Então, ainda não estou entendendo ou estou perdendo algum passo. Acabei de criar uma postagem em [try.discourse.org](http://try.discourse.org): [https://try.discourse.org/t/testing-html-cooking/1405](https://try.discourse.org/t/testing-html-cooking/1405). O conteúdo bruto está em [https://try.discourse.org/raw/1405](https://try.discourse.org/raw/1405). O conteúdo bruto realmente parece com o que você disse que deveria ser.

Você pode me fornecer instruções passo a passo de como reproduzir isso? Peguei o “HTML Original” que você compartilhou acima, adicionei as tags `<html>` e `<head>` no topo para que fosse um HTML válido e criei uma postagem com o HTML no corpo.

---

<div class="post-metadata">

### Author: ![JQ331](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@JQ331](https://meta.discourse.org/u/JQ331)
#### Post date: [Maio 4, 2021, 7:57pm UTC](https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183/6 "2021-05-04T19:57:59Z")

</div>

Você tem razão. O link bruto realmente parece o que eu quero. Não tenho certeza do motivo de isso não ter funcionado antes. Vou testar algumas coisas e responder.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [Maio 4, 2021, 8:06pm UTC](https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183/7 "2021-05-04T20:06:45Z")

</div>

Acho que o problema é que o HTML que você deseja é convertido ao colar no navegador, de modo que esse conteúdo nunca chega ao `raw`.

### Conteúdo do seu fragmento que você pode ver no raw

Veja [https://meta.discourse.org/raw/189183/7](https://meta.discourse.org/raw/189183/7)

Aqui está algum texto. Família da fonte = Calibri, tamanho 12pt

&nbsp;

**Este texto está em negrito**.

Mas se você copiar o conteúdo do Word e depois colar, todo o HTML será convertido em markdown no front-end.

---

<div class="post-metadata">

### Author: ![JQ331](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@JQ331](https://meta.discourse.org/u/JQ331)
#### Post date: [Maio 4, 2021, 8:42pm UTC](https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183/8 "2021-05-04T20:42:15Z")

</div>

Obrigado, pessoal. Sim, @pfaffman, isso é, pelo menos em parte, o que está causando parte da minha confusão aqui.

Digamos que o objetivo seja copiar do Word e depois colar em um tópico do Discourse; e, mais tarde, ser capaz de visualizar os dados “cruos” do tópico e recuperar a formatação original do Word.

Isso é possível?

* * *

EDIT: Aqui está talvez um exemplo mais claro (espero). Aqui está algum HTML:

```plaintext
<html>
<body>

<h1>Título</h1>

<p style="font-size: 35pt">Este texto deve ser muito grande</p>

</body>
</html>

```

Se eu imprimir a saída (por exemplo, no editor “try it” do W3Schools [aqui](https://www.w3schools.com/html/tryit.asp?filename=tryhtml_basic_document)), ele produz duas linhas de texto, com as palavras “Este texto deve ser muito grande” aparecendo maiores que a primeira linha — consistente com o estilo “font-size: 35pt”.

Se eu copiar essa saída (não o código HTML, mas a saída) e depois colar na maioria dos lugares, a formatação é mantida. Por exemplo, se eu colar no Gmail, a formatação é mantida, e se eu colar no Microsoft Word, a formatação também é mantida — em ambos os casos, a segunda linha está, corretamente, maior que a primeira.

No Discourse, no entanto, a formatação é perdida mesmo na janela do editor bruto: toda a formatação é removida, exceto que um “#” de markdown é adicionado ao h1.

Então, se eu copiar o código HTML real e colá-lo no editor, de fato o código HTML é preservado e posso recuperá-lo em sua forma bruta. Mas, se eu colar o resultado do código HTML, a formatação é perdida, mesmo na forma bruta.

Quando colo a saída no Gmail ou no Word e eles mantêm a formatação, devem estar preservando o HTML. O Discourse, no entanto, parece remover o HTML quando colo a saída do HTML.

É possível não removê-lo?

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [Maio 4, 2021, 8:54pm UTC](https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183/9 "2021-05-04T20:54:12Z")

</div>

Não. Você pode verificar no editor e ver o texto bruto que é gerado ao colar do Word. É só isso, pois a mágica de converter o conteúdo da área de transferência para Markdown acontece no navegador entre o momento em que você cola e o momento em que o vê na janela do editor.

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [Maio 4, 2021, 8:57pm UTC](https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183/10 "2021-05-04T20:57:32Z")

</div>

> [@JQ331](#):
>
> É possível recuperar o HTML original subjacente?

Aqui está o mal-entendido crucial: o raw é Markdown, não HTML.

> [@pfaffman](#):
>
> Acho que o problema é que o HTML que você deseja é convertido quando você cola no navegador, de modo que esse conteúdo nunca chega ao `raw`.

Temos _magia_ ✨ que converte HTML em Markdown quando você cola no compositor.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [Maio 4, 2021, 8:58pm UTC](https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183/11 "2021-05-04T20:58:45Z")

</div>

> [@supermathie](#):
>
> Aqui está o mal-entendido crucial: o raw é Markdown, não HTML.

E o que torna tudo mais confuso é que o Markdown pode conter HTML. 🤷‍♂️

---

<div class="post-metadata">

### Author: ![JQ331](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@JQ331](https://meta.discourse.org/u/JQ331)
#### Post date: [Maio 4, 2021, 9:01pm UTC](https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183/12 "2021-05-04T21:01:24Z")

</div>

> [@supermathie](#):
>
> Temos uma _mágica_ ✨ que converte HTML em Markdown quando você cola no editor.

Mas essa conversão não ocorre (no editor) se você colar o código HTML real. É isso que acho que perdi anteriormente.

Ou talvez, como @pfaffman disse, a conversão realmente ocorra independentemente do que for colado, mas o Markdown pode manter o HTML se colado como código puro, mas não se for colado a saída do código.

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [Maio 4, 2021, 9:02pm UTC](https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183/13 "2021-05-04T21:02:55Z")

</div>

Certo, o conteúdo na sua área de transferência precisa ter o tipo `text/html` para funcionar.

---

<div class="post-metadata">

### Author: ![JQ331](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@JQ331](https://meta.discourse.org/u/JQ331)
#### Post date: [Maio 4, 2021, 9:06pm UTC](https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183/14 "2021-05-04T21:06:13Z")

</div>

Outros formatos, como RTF (Rich Text Format), também podem ser preservados no Markdown como o HTML?

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [Maio 4, 2021, 9:21pm UTC](https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183/15 "2021-05-04T21:21:28Z")

</div>

O HTML não é _preservado_ em si no markdown; apenas algumas das tags importantes são suportadas (por exemplo, `<em>` ênfase `</em>`), pois tentamos seguir a Lei de Postel sempre que isso não causa problemas.

Que problema você está tentando resolver?

---

<div class="post-metadata">

### Author: ![JQ331](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@JQ331](https://meta.discourse.org/u/JQ331)
#### Post date: [Maio 4, 2021, 9:29pm UTC](https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183/16 "2021-05-04T21:29:46Z")

</div>

O objetivo é entender como o processo funciona (relevante para alguns projetos). Essa conversa já ajudou nisso. Ainda estou me perguntando se é possível acessar o texto originalmente formatado ao copiar do Microsoft Word.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [Maio 4, 2021, 10:06pm UTC](https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183/17 "2021-05-04T22:06:30Z")

</div>

> [@JQ331](#):
>
> Ainda estou me perguntando se é possível acessar o texto originalmente formatado ao copiar do Microsoft Word.

Não. Você precisaria examinar o código JavaScript que processa isso ao colar.

---

<div class="post-metadata">

### Author: ![riking](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/riking/32/170938_2.png) [@riking](https://meta.discourse.org/u/riking)
#### Post date: [Maio 4, 2021, 11:05pm UTC](https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183/18 "2021-05-04T23:05:15Z")

</div>

Isso ocorre devido ao tratamento de “HTML para Markdown”, que acontece ao colar.

Aqui está o arquivo de origem relevante. Você notará várias partes de tratamento específico do Microsoft Word (por exemplo, `MsoListParagraphCxSpFirst`).

[https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/app/lib/to-markdown.js](https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/app/lib/to-markdown.js)

Para garantir que você obtenha texto puro, passe sua colagem pelo Bloco de Notas ou similar primeiro.

---

<div class="post-metadata">

### Author: ![JQ331](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@JQ331](https://meta.discourse.org/u/JQ331)
#### Post date: [Maio 5, 2021, 1:20am UTC](https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183/19 "2021-05-05T01:20:42Z")

</div>

> [@riking](#):
>
> discourse/discourse/blob/master/app/assets/javascripts/discourse/app/lib/to-markdown.js

Isso é muito útil. Só para esclarecer: por que passar pelo Bloco de Notas faria diferença?

---

<div class="post-metadata">

### Author: ![riking](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/riking/32/170938_2.png) [@riking](https://meta.discourse.org/u/riking)
#### Post date: [Maio 5, 2021, 4:21am UTC](https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183/20 "2021-05-05T04:21:06Z")

</div>

Fazer isso removeria toda a formatação do Word e deixaria apenas texto simples.

Isso está acontecendo porque, quando você “copia” algo, o aplicativo na verdade apresenta várias visualizações diferentes dos dados para os aplicativos nos quais você cola. O Discourse optou pela versão “rica”, com toda a formatação do Word, enquanto o Bloco de Notas optará pela versão “simples”. Ao passar pelo Bloco de Notas, você deixa apenas a versão “simples” para que o Discourse a veja.

[Próxima página](https://meta.discourse.org/t/get-back-the-real-raw-data-that-created-a-post/189183.md?page=2)
