Format Painter
This plugin is only available for paid TinyMCE subscriptions. |
The Format Painter plugin allows a user to copy and paste formatting from one location to another, such as font style and size. The format painter is capable of working with a wide variety of formats such as inline and block formats and styles such as table styles.
Interactive example
-
TinyMCE
-
HTML
-
JS
-
Edit on CodePen
<textarea id="format-painter">
<p><img style="display: block; margin-left: auto; margin-right: auto;" title="Tiny Logo" src="https://www.tiny.cloud/docs/images/logos/android-chrome-256x256.png" alt="TinyMCE Logo" width="128" height="128" /></p>
<h2 style="text-align: center;">Welcome to the TinyMCE editor demo!</h2>
<h2>Got questions or need help?</h2>
<ul>
<li>Our <a href="https://www.tiny.cloud/docs/">documentation</a> is a great resource for learning how to configure TinyMCE.</li>
<li>Have a specific question? Try the <a href="https://stackoverflow.com/questions/tagged/tinymce" target="_blank" rel="noopener"><code>tinymce</code> tag at Stack Overflow</a>.</li>
<li>We also offer enterprise grade support as part of <a href="https://www.tiny.cloud/pricing">TinyMCE premium plans</a>.</li>
</ul>
<h2>A simple table to play with</h2>
<table style="border-collapse: collapse; width: 100%;" border="1">
<thead>
<tr>
<th>Product</th>
<th>Cost</th>
<th>Really?</th>
</tr>
</thead>
<tbody>
<tr>
<td>TinyMCE</td>
<td>Free</td>
<td>YES!</td>
</tr>
<tr>
<td>Plupload</td>
<td>Free</td>
<td>YES!</td>
</tr>
</tbody>
</table>
<h2>Found a bug?</h2>
<p>
If you think you have found a bug please create an issue on the <a href="https://github.com/tinymce/tinymce/issues">GitHub repo</a> to report it to the developers.
</p>
<h2>Finally ...</h2>
<p>
Don't forget to check out our other product <a href="http://www.plupload.com" target="_blank">Plupload</a>, your ultimate upload solution featuring HTML5 upload support.
</p>
<p>
Thanks for supporting TinyMCE! We hope it helps you and your users create great content.<br>All the best from the TinyMCE team.
</p>
</textarea>
tinymce.init({
selector: 'textarea#format-painter',
plugins: 'formatpainter code',
toolbar: 'formatpainter code',
formats: {
borderstyle: { selector: 'td,th', styles: { borderTopStyle: 'solid', borderRightStyle: 'solid', borderBottomStyle: 'solid', borderLeftStyle: 'solid', }, remove_similar: true },
bordercolor: { selector: 'td,th', styles: { borderTopColor: '#32CD32', borderRightColor: '#32CD32', borderBottomColor: '#32CD32', borderLeftColor: '#32CD32' }, remove_similar: true },
backgroundcolor: { selector: 'td,th', styles: { backgroundColor: '#006400' }, remove_similar: true },
formatpainter_removeformat: [
{ selector: 'b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins',
remove: 'all',
split: true,
expand: false,
block_expand: true,
deep: true
},
{ selector: 'span',
attributes: ['style', 'class'],
remove: 'empty',
split: true,
expand: false,
deep: true
},
{ selector: '*:not(tr,td,th,table)',
attributes: ['style', 'class'],
split: false,
expand: false,
deep: true
}
]
},
height: 500,
content_style: 'body { font-family:Helvetica,Arial,sans-serif; font-size:14px }'
});
Basic setup
To add the Format Painter plugin to the editor, add formatpainter
to the plugins
option in the editor configuration.
For example:
tinymce.init({
selector: 'textarea', // change this value according to your HTML
plugins: 'formatpainter',
toolbar: 'formatpainter'
});
Using Format Painter
The format painter is accessed using either keyboard shortcuts or a toolbar button.
The format painter operates in two modes, one for retrieval and one for application of formatting. The usage of the keyboard is slightly different from the usage of the toolbar buttons.
Usage with toolbar button
-
Position the cursor at the source content to retrieve the formatting.
-
Enable the Format Painter button to copy the formatting. The Format Painter toolbar button background color changes to grey .
-
Select the goal content to apply the formatting.
Result: The formatting from the source content is applied to the goal content.
Usage with keyboard
-
Position the cursor at the source content to retrieve formatting.
-
Press the
Ctrl+Alt+C
keys to read the formatting. -
Select the goal content to apply the formatting.
-
Press the
Ctrl+Alt+V
keys to apply the formatting.
The format painter retains the formatting after application making it possible to apply the same formatting multiple times by using the Ctrl+Alt+V keyboard shortcut.
|
Options
The format painter acts upon all formats
registered in the editor. In addition to any standard formatting, it will treat lists as a block format whenever the lists plugin
is made available.
formats
The format painter plugin will register many formats upon initialization. To override these formats, use the formats
option.
The example below showcases the formats registered automatically by the plugin upon initialization. The formatpainter_removeformat
is used to clear any existing formats before applying the new ones. It is similar to the removeformat
format.
Type: Object
Example: Using formats
tinymce.init({
selector: 'textarea', // change this value according to your HTML
plugins: 'formatpainter',
formats: {
formatpainter_checklist: { selector: 'ul', classes: 'tox-checklist' },
formatpainter_liststyletype: { selector: 'ul,ol', styles: { listStyleType: '%value' } },
formatpainter_borderstyle: { selector: 'td,th', styles: { borderTopStyle: '%valueTop', borderRightStyle: '%valueRight', borderBottomStyle: '%valueBottom', borderLeftStyle: '%valueLeft', }, remove_similar: true },
formatpainter_bordercolor: { selector: 'td,th', styles: { borderTopColor: '%valueTop', borderRightColor: '%valueRight', borderBottomColor: '%valueBottom', borderLeftColor: '%valueLeft' }, remove_similar: true },
formatpainter_backgroundcolor: { selector: 'td,th', styles: { backgroundColor: '%value' }, remove_similar: true },
formatpainter_removeformat: [
{
selector: 'b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins',
remove: 'all', split: true, expand: false, block_expand: true, deep: true
},
{ selector: 'span', attributes: ['style', 'class'], remove: 'empty', split: true, expand: false, deep: true },
{ selector: '*:not(tr,td,th,table)', attributes: ['style', 'class'], split: false, expand: false, deep: true }
]
}
});