I want to be able to save / archive HTML pages as one file (without those pesky external folders).
I want the resulting file to contain all styles, images, and links (vid
Viewing and creating MHTML files in current versions of Google Chrome is supported by toggling the "Save Page as MHTML" option on the chrome://flags page.
type chrome://flags in your url box
However, enabling this experimental option disables saving pages as HTML-only or HTML Complete files. From the chrome://flags page:
Extending upon zTrix's answer, I would suggest avoiding the Chrome extension (which did not work for me at all) and instead going with one of these options:
npm
@import
Usually, it's possible to create one HTML file that contains all his common children files (css, jpg, js, svg, ...)
You must rewrite the HTML file by replacing "src
" attributes' value, "url()
" functions and insert HTML tag like "<script></script>
" for JavaScript files, "<style></style>
" for CSS files and "<svg></svg>
" for SVG image.
For example a GIF image file in CSS called by the "url()
" function.
url('https://en.wikipedia.org/wiki/File:TPB_Magnet_Icon.gif')
" by "url('data:image/gif;base64,R0lGODlhDAAMALMPAOXl5ewvErW1tebm5oocDkVFRePj47a2ts0WAOTk5MwVAIkcDesuEs0VAEZGRv///yH5BAEAAA8ALAAAAAAMAAwAAARB8MnnqpuzroZYzQvSNMroUeFIjornbK1mVkRzUgQSyPfbFi/dBRdzCAyJoTFhcBQOiYHyAABUDsiCxAFNWj6UbwQAOw')
" with the Base64 encoded GIF image, prefixed by "data:image/gif;base64,
"You can do the same thing for the "src
" attribute's value.
This solution may be used for other binary files. You must adapt the right "data
" prefix to corresponding to the encoded object.
The SingleFile chrome extension is a good solution.
I have also written my own python tool to solve this problem which I would recommend giving a try: https://github.com/zTrix/webpage2html