mirror of
https://github.com/pdf2htmlEX/pdf2htmlEX.git
synced 2024-12-22 13:00:08 +00:00
clean tmp files
This commit is contained in:
parent
5c2fa8ead1
commit
27d99ebcf5
@ -1,7 +1,6 @@
|
|||||||
|
<!-- Created by pdf2htmlEX (http://github.com/coolwanglu/pdf2htmlEX) -->
|
||||||
|
<!-- head.html by WangLu 2012.08.14 -->
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<!-- head.html -->
|
|
||||||
<!-- by WangLu -->
|
|
||||||
<!-- 2012.08.14 -->
|
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
<!-- neck.html by WangLu 2012.08.15 -->
|
||||||
|
<title></title>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function show_pages()
|
function show_pages()
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
<!-- tail.html -->
|
<!-- tail.hml by WangLu 2012.08.15 -->
|
||||||
<!-- by WangLu -->
|
|
||||||
<!-- 2012.08.14 -->
|
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <set>
|
||||||
|
|
||||||
#include <boost/format.hpp>
|
#include <boost/format.hpp>
|
||||||
#include <boost/filesystem/fstream.hpp>
|
#include <boost/filesystem/fstream.hpp>
|
||||||
@ -81,8 +82,6 @@ class HTMLRenderer : public OutputDev
|
|||||||
virtual void post_process();
|
virtual void post_process();
|
||||||
virtual void process_single_html();
|
virtual void process_single_html();
|
||||||
|
|
||||||
virtual boost::filesystem::path working_dir() const { return (param->single_html ? tmp_dir : dest_dir); }
|
|
||||||
|
|
||||||
// Start a page.
|
// Start a page.
|
||||||
virtual void startPage(int pageNum, GfxState *state);
|
virtual void startPage(int pageNum, GfxState *state);
|
||||||
|
|
||||||
@ -106,6 +105,11 @@ class HTMLRenderer : public OutputDev
|
|||||||
virtual void drawImage(GfxState * state, Object * ref, Stream * str, int width, int height, GfxImageColorMap * colorMap, GBool interpolate, int *maskColors, GBool inlineImg);
|
virtual void drawImage(GfxState * state, Object * ref, Stream * str, int width, int height, GfxImageColorMap * colorMap, GBool interpolate, int *maskColors, GBool inlineImg);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
////////////////////////////////////////////////////
|
||||||
|
// misc
|
||||||
|
////////////////////////////////////////////////////
|
||||||
|
void add_tmp_file (const std::string & fn);
|
||||||
|
void clean_tmp_files ();
|
||||||
std::string dump_embedded_font (GfxFont * font, long long fn_id);
|
std::string dump_embedded_font (GfxFont * font, long long fn_id);
|
||||||
|
|
||||||
////////////////////////////////////////////////////
|
////////////////////////////////////////////////////
|
||||||
@ -213,6 +217,7 @@ class HTMLRenderer : public OutputDev
|
|||||||
const Param * param;
|
const Param * param;
|
||||||
boost::filesystem::path dest_dir, tmp_dir;
|
boost::filesystem::path dest_dir, tmp_dir;
|
||||||
boost::filesystem::ofstream html_fout, allcss_fout;
|
boost::filesystem::ofstream html_fout, allcss_fout;
|
||||||
|
std::set<std::string> tmp_files;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* HTMLRENDERER_H_ */
|
#endif /* HTMLRENDERER_H_ */
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
* 2012.08.14
|
* 2012.08.14
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <iomanip>
|
|
||||||
|
|
||||||
#include <splash/SplashBitmap.h>
|
#include <splash/SplashBitmap.h>
|
||||||
|
|
||||||
#include "HTMLRenderer.h"
|
#include "HTMLRenderer.h"
|
||||||
@ -17,6 +15,8 @@
|
|||||||
#include "namespace.h"
|
#include "namespace.h"
|
||||||
|
|
||||||
using std::flush;
|
using std::flush;
|
||||||
|
using boost::filesystem::remove;
|
||||||
|
using boost::filesystem::filesystem_error;
|
||||||
|
|
||||||
HTMLRenderer::HTMLRenderer(const Param * param)
|
HTMLRenderer::HTMLRenderer(const Param * param)
|
||||||
:line_opened(false)
|
:line_opened(false)
|
||||||
@ -37,7 +37,9 @@ HTMLRenderer::HTMLRenderer(const Param * param)
|
|||||||
}
|
}
|
||||||
|
|
||||||
HTMLRenderer::~HTMLRenderer()
|
HTMLRenderer::~HTMLRenderer()
|
||||||
{ }
|
{
|
||||||
|
clean_tmp_files();
|
||||||
|
}
|
||||||
|
|
||||||
void HTMLRenderer::process(PDFDoc *doc)
|
void HTMLRenderer::process(PDFDoc *doc)
|
||||||
{
|
{
|
||||||
@ -66,7 +68,11 @@ void HTMLRenderer::process(PDFDoc *doc)
|
|||||||
doc->displayPage(bg_renderer, i, param->h_dpi2, param->v_dpi2,
|
doc->displayPage(bg_renderer, i, param->h_dpi2, param->v_dpi2,
|
||||||
0, true, false, false,
|
0, true, false, false,
|
||||||
nullptr, nullptr, nullptr, nullptr);
|
nullptr, nullptr, nullptr, nullptr);
|
||||||
bg_renderer->getBitmap()->writeImgFile(splashFormatPng, (char*)(working_dir() / (format("p%|1$x|.png")%i).str()).c_str(), param->h_dpi2, param->v_dpi2);
|
|
||||||
|
string fn = (format("p%|1$x|.png")%i).str();
|
||||||
|
bg_renderer->getBitmap()->writeImgFile(splashFormatPng, (char*)((param->single_html ? tmp_dir : dest_dir) / fn) .c_str(), param->h_dpi2, param->v_dpi2);
|
||||||
|
if(param->single_html)
|
||||||
|
add_tmp_file(fn);
|
||||||
}
|
}
|
||||||
|
|
||||||
doc->displayPage(this, i, param->h_dpi, param->v_dpi,
|
doc->displayPage(this, i, param->h_dpi, param->v_dpi,
|
||||||
@ -86,11 +92,19 @@ void HTMLRenderer::process(PDFDoc *doc)
|
|||||||
void HTMLRenderer::pre_process()
|
void HTMLRenderer::pre_process()
|
||||||
{
|
{
|
||||||
// we may output utf8 characters, so use binary
|
// we may output utf8 characters, so use binary
|
||||||
html_fout.open(working_dir() / param->output_filename, ofstream::binary);
|
if(param->single_html)
|
||||||
allcss_fout.open(working_dir() / "all.css", ofstream::binary);
|
|
||||||
|
|
||||||
if(!param->single_html)
|
|
||||||
{
|
{
|
||||||
|
html_fout.open(tmp_dir / param->output_filename, ofstream::binary);
|
||||||
|
allcss_fout.open(tmp_dir / "all.css", ofstream::binary);
|
||||||
|
|
||||||
|
add_tmp_file(param->output_filename);
|
||||||
|
add_tmp_file("all.css");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
html_fout.open(dest_dir / param->output_filename, ofstream::binary);
|
||||||
|
allcss_fout.open(dest_dir / "all.css", ofstream::binary);
|
||||||
|
|
||||||
html_fout << ifstream(PDF2HTMLEX_LIB_PATH / "head.html", ifstream::binary).rdbuf();
|
html_fout << ifstream(PDF2HTMLEX_LIB_PATH / "head.html", ifstream::binary).rdbuf();
|
||||||
html_fout << "<link rel=\"stylesheet\" type=\"text/css\" href=\"all.css\"/>" << endl;
|
html_fout << "<link rel=\"stylesheet\" type=\"text/css\" href=\"all.css\"/>" << endl;
|
||||||
html_fout << ifstream(PDF2HTMLEX_LIB_PATH / "neck.html", ifstream::binary).rdbuf();
|
html_fout << ifstream(PDF2HTMLEX_LIB_PATH / "neck.html", ifstream::binary).rdbuf();
|
||||||
@ -178,8 +192,31 @@ void HTMLRenderer::process_single_html()
|
|||||||
out << ifstream(PDF2HTMLEX_LIB_PATH / "tail.html", ifstream::binary).rdbuf();
|
out << ifstream(PDF2HTMLEX_LIB_PATH / "tail.html", ifstream::binary).rdbuf();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HTMLRenderer::add_tmp_file(const string & fn)
|
||||||
|
{
|
||||||
|
if(tmp_files.insert(fn).second && param->debug)
|
||||||
|
cerr << "Add new temporary file: " << fn << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HTMLRenderer::clean_tmp_files()
|
||||||
|
{
|
||||||
|
for(const auto & fn : tmp_files)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
remove(tmp_dir / fn);
|
||||||
|
if(param->debug)
|
||||||
|
cerr << "Remove temporary file: " << fn << endl;
|
||||||
|
}
|
||||||
|
catch(const filesystem_error &)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
remove(tmp_dir);
|
||||||
|
if(param->debug)
|
||||||
|
cerr << "Remove temporary directory: " << tmp_dir << endl;
|
||||||
|
}
|
||||||
|
catch(const filesystem_error &)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
@ -121,6 +121,7 @@ void HTMLRenderer::install_embedded_font(GfxFont * font, const string & suffix,
|
|||||||
|
|
||||||
path script_path = tmp_dir / "pdf2htmlEX.pe";
|
path script_path = tmp_dir / "pdf2htmlEX.pe";
|
||||||
ofstream script_fout(script_path, ofstream::binary);
|
ofstream script_fout(script_path, ofstream::binary);
|
||||||
|
add_tmp_file("pdf2htmlEX.pe");
|
||||||
|
|
||||||
script_fout << format("Open(%1%, 1)") % (tmp_dir / (fn + suffix)) << endl;
|
script_fout << format("Open(%1%, 1)") % (tmp_dir / (fn + suffix)) << endl;
|
||||||
|
|
||||||
@ -154,6 +155,8 @@ void HTMLRenderer::install_embedded_font(GfxFont * font, const string & suffix,
|
|||||||
if(maxcode > 0)
|
if(maxcode > 0)
|
||||||
{
|
{
|
||||||
ofstream map_fout(tmp_dir / (fn + ".encoding"));
|
ofstream map_fout(tmp_dir / (fn + ".encoding"));
|
||||||
|
add_tmp_file(fn+".encoding");
|
||||||
|
|
||||||
int cnt = 0;
|
int cnt = 0;
|
||||||
for(int i = 0; i <= maxcode; ++i)
|
for(int i = 0; i <= maxcode; ++i)
|
||||||
{
|
{
|
||||||
@ -180,9 +183,13 @@ void HTMLRenderer::install_embedded_font(GfxFont * font, const string & suffix,
|
|||||||
ctu->decRefCnt();
|
ctu->decRefCnt();
|
||||||
}
|
}
|
||||||
|
|
||||||
script_fout << format("Generate(%1%)") % (working_dir() / (fn+".ttf")) << endl;
|
script_fout << format("Generate(%1%)") % ((param->single_html ? tmp_dir : dest_dir) / (fn+".ttf")) << endl;
|
||||||
|
if(param->single_html)
|
||||||
|
add_tmp_file(fn+".ttf");
|
||||||
|
|
||||||
system((boost::format("fontforge -script %1% 2>%2%") % script_path % (tmp_dir / "log.txt")).str().c_str());
|
// for cross-platform purpose, use a file instead of /dev/null
|
||||||
|
system((boost::format("fontforge -script %1% 2>%2%") % script_path % (tmp_dir / "null")).str().c_str());
|
||||||
|
add_tmp_file("null");
|
||||||
|
|
||||||
export_remote_font(fn_id, ".ttf", "truetype", font);
|
export_remote_font(fn_id, ".ttf", "truetype", font);
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,7 @@ string HTMLRenderer::dump_embedded_font (GfxFont * font, long long fn_id)
|
|||||||
char buf[1024];
|
char buf[1024];
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
|
string fn;
|
||||||
ofstream outf;
|
ofstream outf;
|
||||||
|
|
||||||
auto * id = font->getID();
|
auto * id = font->getID();
|
||||||
@ -113,7 +114,10 @@ string HTMLRenderer::dump_embedded_font (GfxFont * font, long long fn_id)
|
|||||||
}
|
}
|
||||||
|
|
||||||
obj.streamReset();
|
obj.streamReset();
|
||||||
outf.open(tmp_dir / (format("f%|1$x|%2%")%fn_id%suffix).str(), ofstream::binary);
|
|
||||||
|
fn = (format("f%|1$x|%2%")%fn_id%suffix).str();
|
||||||
|
outf.open(tmp_dir / fn , ofstream::binary);
|
||||||
|
add_tmp_file(fn);
|
||||||
while((len = obj.streamGetChars(1024, (Guchar*)buf)) > 0)
|
while((len = obj.streamGetChars(1024, (Guchar*)buf)) > 0)
|
||||||
{
|
{
|
||||||
outf.write(buf, len);
|
outf.write(buf, len);
|
||||||
|
@ -13,7 +13,6 @@
|
|||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <istream>
|
#include <istream>
|
||||||
#include <ostream>
|
#include <ostream>
|
||||||
#include <iomanip>
|
|
||||||
|
|
||||||
#include <GfxState.h>
|
#include <GfxState.h>
|
||||||
#include <CharTypes.h>
|
#include <CharTypes.h>
|
||||||
@ -23,8 +22,9 @@
|
|||||||
|
|
||||||
using std::istream;
|
using std::istream;
|
||||||
using std::ostream;
|
using std::ostream;
|
||||||
using std::endl;
|
|
||||||
using std::noskipws;
|
using std::noskipws;
|
||||||
|
using std::endl;
|
||||||
|
using std::flush;
|
||||||
|
|
||||||
// mute gcc warning of unused function
|
// mute gcc warning of unused function
|
||||||
namespace
|
namespace
|
||||||
|
Loading…
Reference in New Issue
Block a user