mirror of
https://github.com/pdf2htmlEX/pdf2htmlEX.git
synced 2024-12-22 13:00:08 +00:00
better cmake, better installation
This commit is contained in:
parent
fe6d699e44
commit
b406fb4e13
@ -9,16 +9,30 @@ find_package(Boost REQUIRED COMPONENTS program_options)
|
|||||||
include_directories(${Boost_INCLUDE_DIRS})
|
include_directories(${Boost_INCLUDE_DIRS})
|
||||||
link_directories ( ${Boost_LIBRARY_DIRS} )
|
link_directories ( ${Boost_LIBRARY_DIRS} )
|
||||||
|
|
||||||
set(PDFTOHTMLEX_VERSION "0.1")
|
set(PDF2HTMLEX_VERSION "0.1")
|
||||||
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
|
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wunused-function")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wunused-function")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
|
||||||
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
|
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb")
|
||||||
|
|
||||||
add_executable(pdftohtmlEX src/pdftohtmlEX.cc src/HTMLRenderer.cc src/HTMLRenderer.h src/BackgroundRenderer.cc src/BackgroundRenderer.h src/Consts.h src/Consts.cc src/util.h)
|
configure_file (bin/pdf2htmlEX.in bin/pdf2htmlEX)
|
||||||
target_link_libraries(pdftohtmlEX poppler boost_program_options)
|
configure_file (src/config.h.in src/config.h)
|
||||||
|
|
||||||
install (TARGETS pdftohtmlEX DESTINATION bin)
|
add_executable(pdf2htmlEX
|
||||||
|
src/pdf2htmlEX.cc
|
||||||
|
src/HTMLRenderer.h
|
||||||
|
src/HTMLRenderer.cc
|
||||||
|
src/BackgroundRenderer.h
|
||||||
|
src/BackgroundRenderer.cc
|
||||||
|
src/Consts.h
|
||||||
|
src/Consts.cc
|
||||||
|
src/util.h
|
||||||
|
src/config.h)
|
||||||
|
|
||||||
|
target_link_libraries(pdf2htmlEX poppler boost_program_options boost_filesystem)
|
||||||
|
|
||||||
|
install (TARGETS pdf2htmlEX DESTINATION lib/pdf2htmlEX)
|
||||||
install (PROGRAMS "bin/pdf2htmlEX" DESTINATION bin)
|
install (PROGRAMS "bin/pdf2htmlEX" DESTINATION bin)
|
||||||
|
file (GLOB libfiles lib/*)
|
||||||
|
install (FILES ${libfiles} DESTINATION lib/pdf2htmlEX)
|
||||||
|
@ -1,18 +1,14 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
LIBDIR=@CMAKE_INSTALL_PREFIX@/lib/pdf2htmlEX
|
||||||
TMPDIR=/tmp/pdf2htmlEX
|
TMPDIR=/tmp/pdf2htmlEX
|
||||||
|
|
||||||
# prepare the temporary directory
|
# prepare the temporary directory
|
||||||
test -d $TMPDIR || mkdir -p $TMPDIR
|
test -d $TMPDIR || mkdir -p $TMPDIR
|
||||||
rm -f $TMPDIR/* 2>/dev/null
|
rm -f $TMPDIR/* 2>/dev/null
|
||||||
|
|
||||||
# Get directory of the script
|
$LIBDIR/pdf2htmlEX $*
|
||||||
SOURCE="${BASH_SOURCE[0]}"
|
|
||||||
while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
|
|
||||||
SCRIPT_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"/
|
|
||||||
# Execute
|
|
||||||
${SCRIPT_DIR}/pdftohtmlEX $*
|
|
||||||
|
|
||||||
if [ -f $TMPDIR/convert.pe ]; then
|
if [ -f $TMPDIR/convert.pe ]; then
|
||||||
echo -n "Converting fonts: "
|
echo -n "Converting fonts: "
|
66
lib/head.html
Normal file
66
lib/head.html
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<!-- head.html -->
|
||||||
|
<!-- by WangLu -->
|
||||||
|
<!-- 2012.08.14 -->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<style type="text/css">
|
||||||
|
#pdf-main {
|
||||||
|
font-family: sans-serif;
|
||||||
|
position:absolute;
|
||||||
|
top:0;
|
||||||
|
left:0;
|
||||||
|
bottom:0;
|
||||||
|
right:0;
|
||||||
|
overflow:auto;
|
||||||
|
background-color:grey;
|
||||||
|
/* for Chrome & Safari */
|
||||||
|
-webkit-text-stroke-width:0.2px;
|
||||||
|
}
|
||||||
|
#pdf-main > .p {
|
||||||
|
position:relative;
|
||||||
|
margin:13px auto;
|
||||||
|
background-color:white;
|
||||||
|
overflow:hidden;
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
.p > .l {
|
||||||
|
position:absolute;
|
||||||
|
white-space:pre;
|
||||||
|
}
|
||||||
|
.l > .w {
|
||||||
|
display:inline-block;
|
||||||
|
font-family: monospace;
|
||||||
|
}
|
||||||
|
::selection{
|
||||||
|
background: rgba(168,209,255,0.5);
|
||||||
|
}
|
||||||
|
::-moz-selection{
|
||||||
|
background: rgba(168,209,255,0.5);
|
||||||
|
}
|
||||||
|
.p > .i {
|
||||||
|
position:absolute;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<link rel="stylesheet" type="text/css" href="all.css" />
|
||||||
|
<script type="text/javascript">
|
||||||
|
function show_pages()
|
||||||
|
{
|
||||||
|
var pages = document.getElementById('pdf-main').childNodes;
|
||||||
|
var idx = 0;
|
||||||
|
var f = function(){
|
||||||
|
if (idx < pages.length) {
|
||||||
|
try{
|
||||||
|
pages[idx].style.display='block';
|
||||||
|
}catch(e){}
|
||||||
|
++idx;
|
||||||
|
setTimeout(f,100);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
f();
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body onload="show_pages();">
|
||||||
|
<div id="pdf-main">
|
6
lib/tail.html
Normal file
6
lib/tail.html
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<!-- tail.html -->
|
||||||
|
<!-- by WangLu -->
|
||||||
|
<!-- 2012.08.14 -->
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -9,87 +9,24 @@
|
|||||||
|
|
||||||
const double EPS = 1e-6;
|
const double EPS = 1e-6;
|
||||||
|
|
||||||
// The style "-webkit-text-stroke-width:0.2px;" is used in #pdf-main to
|
const std::string TMP_DIR="/tmp/pdf2htmlEX";
|
||||||
// improve some font of small size, which looks really bad in Chrome & Safari
|
|
||||||
const std::string HTML_HEAD = "<!DOCTYPE html>\n\
|
|
||||||
<html><head>\
|
|
||||||
<meta charset=\"utf-8\">\
|
|
||||||
<style type=\"text/css\">\
|
|
||||||
#pdf-main {\
|
|
||||||
font-family: sans-serif;\
|
|
||||||
position:absolute;\
|
|
||||||
top:0;\
|
|
||||||
left:0;\
|
|
||||||
bottom:0;\
|
|
||||||
right:0;\
|
|
||||||
overflow:auto;\
|
|
||||||
background-color:grey;\
|
|
||||||
-webkit-text-stroke-width:0.2px; \
|
|
||||||
}\
|
|
||||||
#pdf-main > .p {\
|
|
||||||
position:relative;\
|
|
||||||
margin:13px auto;\
|
|
||||||
background-color:white;\
|
|
||||||
overflow:hidden;\
|
|
||||||
display:none;\
|
|
||||||
}\
|
|
||||||
.p > .l {\
|
|
||||||
position:absolute;\
|
|
||||||
white-space:pre;\
|
|
||||||
}\
|
|
||||||
.l > .w {\
|
|
||||||
display:inline-block;\
|
|
||||||
font-family: monospace;\
|
|
||||||
}\
|
|
||||||
::selection{\
|
|
||||||
background: rgba(168,209,255,0.5);\
|
|
||||||
}\
|
|
||||||
::-moz-selection{\
|
|
||||||
background: rgba(168,209,255,0.5);\
|
|
||||||
}\
|
|
||||||
.p > .i {\
|
|
||||||
position:absolute;\
|
|
||||||
}\
|
|
||||||
</style><link rel=\"stylesheet\" type=\"text/css\" href=\"all.css\" />\
|
|
||||||
<script type=\"text/javascript\">\
|
|
||||||
function show_pages()\
|
|
||||||
{\
|
|
||||||
var pages = document.getElementById('pdf-main').childNodes;\
|
|
||||||
var idx = 0;\
|
|
||||||
var f = function(){\
|
|
||||||
if (idx < pages.length) {\
|
|
||||||
try{\
|
|
||||||
pages[idx].style.display='block';\
|
|
||||||
}catch(e){}\
|
|
||||||
++idx;\
|
|
||||||
setTimeout(f,100);\
|
|
||||||
}\
|
|
||||||
};\
|
|
||||||
f();\
|
|
||||||
};\
|
|
||||||
</script>\
|
|
||||||
</head><body onload=\"show_pages();\"><div id=\"pdf-main\">";
|
|
||||||
|
|
||||||
const std::string HTML_TAIL = "</div></body></html>";
|
const std::map<std::string, std::string> BASE_14_FONT_CSS_FONT_MAP({
|
||||||
|
{ "Courier", "Courier,monospace" },
|
||||||
const std::string TMP_DIR = "/tmp/pdf2htmlEX";
|
{ "Helvetica", "Helvetica,Arial,\"Nimbus Sans L\",sans-serif" },
|
||||||
|
{ "Times", "Times,\"Time New Roman\",\"Nimbus Roman No9 L\",serif" },
|
||||||
const std::map<std::string, std::string> BASE_14_FONT_CSS_FONT_MAP({\
|
{ "Symbol", "Symbol,\"Standard Symbols L\"" },
|
||||||
{ "Courier", "Courier,monospace" },\
|
{ "ZapfDingbats", "ZapfDingbats,\"Dingbats\"" },
|
||||||
{ "Helvetica", "Helvetica,Arial,\"Nimbus Sans L\",sans-serif" },\
|
|
||||||
{ "Times", "Times,\"Time New Roman\",\"Nimbus Roman No9 L\",serif" },\
|
|
||||||
{ "Symbol", "Symbol,\"Standard Symbols L\"" },\
|
|
||||||
{ "ZapfDingbats", "ZapfDingbats,\"Dingbats\"" },\
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const double id_matrix[6] = {1.0, 0.0, 0.0, 1.0, 0.0, 0.0};
|
const double id_matrix[6] = {1.0, 0.0, 0.0, 1.0, 0.0, 0.0};
|
||||||
|
|
||||||
const std::map<std::string, std::string> GB_ENCODED_FONT_NAME_MAP({\
|
const std::map<std::string, std::string> GB_ENCODED_FONT_NAME_MAP({
|
||||||
{"\xCB\xCE\xCC\xE5", "SimSun"},\
|
{"\xCB\xCE\xCC\xE5", "SimSun"},
|
||||||
{"\xBA\xDA\xCC\xE5", "SimHei"},\
|
{"\xBA\xDA\xCC\xE5", "SimHei"},
|
||||||
{"\xBF\xAC\xCC\xE5_GB2312", "SimKai"},\
|
{"\xBF\xAC\xCC\xE5_GB2312", "SimKai"},
|
||||||
{"\xB7\xC2\xCB\xCE_GB2312", "SimFang"},\
|
{"\xB7\xC2\xCB\xCE_GB2312", "SimFang"},
|
||||||
{"\xC1\xA5\xCA\xE9", "SimLi"},\
|
{"\xC1\xA5\xCA\xE9", "SimLi"},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
#include <boost/format.hpp>
|
#include <boost/format.hpp>
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
|
#include <boost/filesystem/fstream.hpp>
|
||||||
// for gil bug
|
// for gil bug
|
||||||
const int *int_p_NULL = nullptr;
|
const int *int_p_NULL = nullptr;
|
||||||
#include <boost/gil/gil_all.hpp>
|
#include <boost/gil/gil_all.hpp>
|
||||||
@ -32,6 +33,7 @@ const int *int_p_NULL = nullptr;
|
|||||||
#include "BackgroundRenderer.h"
|
#include "BackgroundRenderer.h"
|
||||||
#include "Consts.h"
|
#include "Consts.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* CSS classes
|
* CSS classes
|
||||||
@ -120,12 +122,12 @@ void HTMLRenderer::process(PDFDoc *doc)
|
|||||||
|
|
||||||
void HTMLRenderer::write_html_head()
|
void HTMLRenderer::write_html_head()
|
||||||
{
|
{
|
||||||
html_fout << HTML_HEAD << endl;
|
html_fout << boost::filesystem::ifstream(PDF2HTMLEX_LIB_PATH / "head.html", ifstream::binary).rdbuf();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HTMLRenderer::write_html_tail()
|
void HTMLRenderer::write_html_tail()
|
||||||
{
|
{
|
||||||
html_fout << HTML_TAIL << endl;
|
html_fout << boost::filesystem::ifstream(PDF2HTMLEX_LIB_PATH / "tail.html", ifstream::binary).rdbuf();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HTMLRenderer::startPage(int pageNum, GfxState *state)
|
void HTMLRenderer::startPage(int pageNum, GfxState *state)
|
||||||
|
20
src/config.h.in
Normal file
20
src/config.h.in
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* config.h
|
||||||
|
* Compile time constants
|
||||||
|
*
|
||||||
|
* by WangLu
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef CONFIG_H__
|
||||||
|
#define CONFIG_H__
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <boost/filesystem.hpp>
|
||||||
|
|
||||||
|
static const std::string PDF2HTMLEX_VERSION = "@PDF2HTMLEX_VERSION@";
|
||||||
|
static const std::string PDF2HTMLEX_PREFIX = "@CMAKE_INSTALL_PREFIX@";
|
||||||
|
static const boost::filesystem::path PDF2HTMLEX_LIB_PATH = boost::filesystem::path(PDF2HTMLEX_PREFIX) / "lib" / "pdf2htmlEX";
|
||||||
|
|
||||||
|
|
||||||
|
#endif //CONFIG_H__
|
@ -27,8 +27,7 @@
|
|||||||
|
|
||||||
#include "HTMLRenderer.h"
|
#include "HTMLRenderer.h"
|
||||||
#include "Param.h"
|
#include "Param.h"
|
||||||
|
#include "config.h"
|
||||||
#define PDFTOHTMLEX_VERSION "0.1"
|
|
||||||
|
|
||||||
namespace po = boost::program_options;
|
namespace po = boost::program_options;
|
||||||
using namespace std;
|
using namespace std;
|
||||||
@ -102,7 +101,7 @@ static GooString* getInfoDate(Dict *infoDict, char *key) {
|
|||||||
|
|
||||||
void show_usage(void)
|
void show_usage(void)
|
||||||
{
|
{
|
||||||
cerr << "pdftohtmlEX version " << PDFTOHTMLEX_VERSION << endl;
|
cerr << "pdftohtmlEX version " << PDF2HTMLEX_VERSION << endl;
|
||||||
cerr << endl;
|
cerr << endl;
|
||||||
cerr << "Copyright 2011 Hongliang Tian (tatetian@gmail.com)" << endl;
|
cerr << "Copyright 2011 Hongliang Tian (tatetian@gmail.com)" << endl;
|
||||||
cerr << "Copyright 2012 Lu Wang (coolwanglu<at>gmail.com)" << endl;
|
cerr << "Copyright 2012 Lu Wang (coolwanglu<at>gmail.com)" << endl;
|
Loading…
Reference in New Issue
Block a user