Blog | Phodal - A Growth Engineerhttp://www.phodal.com/blog/2015-06-18T07:23:04.130879+00:00Bloghtml 转 pdf,用wkhtmltopdf将html转pdf2014-04-24T13:58:38+00:002014-05-13T15:29:16.848038+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/convert-html-to-pdf-use-wkhtmltopdf/> 有的时候想把HTML转成PDF, 方便用户下载离线使用或阅读。但并不是每个人都会制作PDF文档,幸好,有太多的PDF相关工具。
这些话不是我写的,但是我想说的是我们需要这样一个工具,在那之前我还试着转tex转html,但是失败了。
##tex html
可以直接用这样一个命令来执行
$htlatex file.tex
但是遗憾的是会报错,还有
$tex4ht file.tex
但是依然不行,只好手动写Html,然后再转为pdf
htlatex filename # generate HTML
xhlatex filename # generate XHTML
如果装有``tex``的话会是一个很好的选择,问题是似乎。。
##html转pdf
###html2pdf
> wkhtmltopdf and wkhtmltoimage are open source (LGPL) command line tools to render HTML into PDF and various image formats using the QT Webkit rendering engine. These run entirely "headless" and do not require a display or display service.
wkhtmltopdf和wkhtmltoimage是用于渲染html成pdf和图片格式的开源的命令行工具,使用的是QT Webkit。
###html 转 pdf 网页
使用官方的示例
$wkhtmltopdf http://google.com google.pdf
便可以将谷歌的首页转为pdf
当然我们也可以用
$wkhtmltopdf index.html index.pdf
将index.html转为index.pdf。
###安装wkhtmltopdf
可以直接到
[http://wkhtmltopdf.org/downloads.html](http://wkhtmltopdf.org/downloads.html)下载
对于没有的Mac OS可以用
gem install wkhtmltopdf-binary
没有``brew install``也没有``port``
sudo port install wkhtmltopdf
Password:
Error: Port wkhtmltopdf not foundopenSUSE Ubuntu Linux下pandoc markdown转docx pdf2014-04-01T13:32:53+00:002014-05-13T20:59:54.477692+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/install-pandoc-on-linux-opensuse-ubuntu-convert-markdown-pdf/
#安装pandoc#
##Ubuntu pandoc安装##
sudo apt-get install pandoc
##openSUSE pandoc安装##
sudo zypper install pandoc
#markdown转docx#
这个过程很简单,仍然是
pandoc iot.md -o iot.docx
#markdown转pdf#
刚运行的时候遇到了个错误
! LaTex Error: File `tabu.sty` not found.
缺少了这个包,如果还没有安装tex的话,试试直接安装。于是,
sudo tlmgr install tabu
提示 So,please update the package manager first,via either
tlmgr update --self
也就是我们需要更新一下包的缓存
sudo tlmgr update --self
接着我们就可以安装缺失的包。
mac os 安装 pandoc markdown转docx,pdf,2014-03-30T11:59:06+00:002015-06-18T07:23:04.130879+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/mac-os-install-pandoc-markdown-convert-pdf-doc/因为写论文的关系,需要排版又苦于没有一个好的office,这里说的是正版,因为还要发给老师查看的缘故。
##安装pandoc##
这是一个痛苦而又复杂的过程,当然也可以直接下载[Pandoc][0]
[0]:http://code.google.com/p/pandoc/downloads/list
###安装ghc###
port安装ghc
sudo port install ghc
homebrew安装ghc
brew install ghc
###编译cabal###
Common Architecture for Building Applications and Libraries2
Cabal是Haskell用于构建应用程序和库的公共架构。
简单的来说它是haskell的包管理,和上面的port、brew 命令类似。
下载地址[http://haskell.org/cabal/][1]
[1]:http://haskell.org/cabal/
解压后
ghc --make Setup.hs
./Setup configure
./Setup build
sudo ./Setup install
###安装cabal###
安装之前我们需要更新
cabal update
安装pandoc
cabal install pandoc
添加到PATH
export PATH=/Users/fdhuang/.cabal/bin:$PATH
#markdown 转doc#
pandoc iot.md -o iot.docx
#markdown 转pdf#
这里只针对于安装了mactex
##安装mactex##
下载地址:
[http://mirror.ctan.org/systems/mac/mactex/mactex-basic.pkg][2]
[2]:http://mirror.ctan.org/systems/mac/mactex/mactex-basic.pkg
##markdown转pdf##
不含中文时
pandoc doc.pandoc doc.pdf
含有中文时的简单作法
pandoc --latex-engine=xelatex iot.md -o iot.pdf -V mainfont="SimSun"
#markdown转pdf 含中文#
pandoc --template=template.tex --latex-engine=xelatex iot.md -o iot.pdf
也就是我们需要一个template.tex的模板用于构建,下载地址
[https://raw.githubusercontent.com/tzengyuxio/pages/gh-pages/pandoc/pm-template.latex][4]
[4]:https://raw.githubusercontent.com/tzengyuxio/pages/gh-pages/pandoc/pm-template.latex
详细可见下文,主要是因为tex对中文支持的缘故
\documentclass[$if(fontsize)$$fontsize$,$endif$$if(lang)$$lang$,$endif$$if(papersize)$$papersize$,$endif$]{$documentclass$}
\usepackage{geometry} % 設定邊界
\geometry{
top=1in,
inner=1in,
outer=1in,
bottom=1in,
headheight=3ex,
headsep=2ex
}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{amssymb,amsmath}
\usepackage{ifxetex,ifluatex}
\usepackage{fixltx2e} % provides \textsubscript
% use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
\usepackage[utf8]{inputenc}
$if(euro)$
\usepackage{eurosym}
$endif$
\else % if luatex or xelatex
\usepackage{fontspec} % 允許設定字體
\usepackage{xeCJK} % 分開設置中英文字型
\setCJKmainfont{STSong} % 設定中文字型
\setmainfont{Georgia} % 設定英文字型
\setromanfont{Georgia} % 字型
\setmonofont{Courier New}
\linespread{1.2}\selectfont % 行距
\XeTeXlinebreaklocale "zh" % 針對中文自動換行
\XeTeXlinebreakskip = 0pt plus 1pt % 字與字之間加入0pt至1pt的間距,確保左右對整齊
\parindent 0em % 段落縮進
\setlength{\parskip}{20pt} % 段落之間的距離
\ifxetex
\usepackage{xltxtra,xunicode}
\fi
\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
\newcommand{\euro}{€}
$if(mainfont)$
\setmainfont{$mainfont$}
$endif$
$if(sansfont)$
\setsansfont{$sansfont$}
$endif$
$if(monofont)$
\setmonofont{$monofont$}
$endif$
$if(mathfont)$
\setmathfont{$mathfont$}
$endif$
\fi
% use microtype if available
\IfFileExists{microtype.sty}{\usepackage{microtype}}{}
$if(geometry)$
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
$endif$
$if(natbib)$
\usepackage{natbib}
\bibliographystyle{plainnat}
$endif$
$if(biblatex)$
\usepackage{biblatex}
$if(biblio-files)$
\bibliography{$biblio-files$}
$endif$
$endif$
$if(listings)$
\usepackage{listings}
$endif$
$if(lhs)$
\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
$endif$
$if(highlighting-macros)$
$highlighting-macros$
$endif$
$if(verbatim-in-note)$
\usepackage{fancyvrb}
$endif$
$if(tables)$
\usepackage{longtable}
$endif$
$if(graphics)$
\usepackage{graphicx}
% We will generate all images so they have a width \maxwidth. This means
% that they will get their normal width if they fit onto the page, but
% are scaled down if they would overflow the margins.
\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth
\else\Gin@nat@width\fi}
\makeatother
\let\Oldincludegraphics\includegraphics
\renewcommand{\includegraphics}[1]{\Oldincludegraphics[width=\maxwidth]{#1}}
$endif$
\ifxetex
\usepackage[setpagesize=false, % page size defined by xetex
unicode=false, % unicode breaks when used with xetex
xetex]{hyperref}
\else
\usepackage[unicode=true]{hyperref}
\fi
\hypersetup{breaklinks=true,
bookmarks=true,
pdfauthor={$author-meta$},
pdftitle={$title-meta$},
colorlinks=true,
urlcolor=$if(urlcolor)$$urlcolor$$else$blue$endif$,
linkcolor=$if(linkcolor)$$linkcolor$$else$magenta$endif$,
pdfborder={0 0 0}}
\urlstyle{same} % don't use monospace font for urls
$if(links-as-notes)$
% Make links footnotes instead of hotlinks:
\renewcommand{\href}[2]{#2\footnote{\url{#1}}}
$endif$
$if(strikeout)$
\usepackage[normalem]{ulem}
% avoid problems with \sout in headers with hyperref:
\pdfstringdefDisableCommands{\renewcommand{\sout}{}}
$endif$
\setlength{\parindent}{0pt}
%\setlength{\parskip}{6pt plus 2pt minus 1pt}
\setlength{\emergencystretch}{3em} % prevent overfull lines
\title{\huge 在OSX平台上的XeLaTeX中文測試} % 設置標題,使用巨大字體
\author{FoolEgg.com} % 設置作者
\date{February 2013} % 設置日期
\usepackage{titling}
\setlength{\droptitle}{-8em} % 將標題移動至頁面的上面
\usepackage{fancyhdr}
\usepackage{lastpage}
\pagestyle{fancyplain}
$if(numbersections)$
\setcounter{secnumdepth}{5}
$else$
\setcounter{secnumdepth}{0}
$endif$
$if(verbatim-in-note)$
\VerbatimFootnotes % allows verbatim text in footnotes
$endif$
$if(lang)$
\ifxetex
\usepackage{polyglossia}
\setmainlanguage{$mainlang$}
\else
\usepackage[$lang$]{babel}
\fi
$endif$
$for(header-includes)$
$header-includes$
$endfor$
$if(title)$
\title{$title$}
$endif$
\author{$for(author)$$author$$sep$ \and $endfor$}
\date{$date$}
\begin{document}
$if(title)$
\maketitle
$endif$
$for(include-before)$
$include-before$
$endfor$
$if(toc)$
{
\hypersetup{linkcolor=black}
\setcounter{tocdepth}{$toc-depth$}
\tableofcontents
}
$endif$
$body$
$if(natbib)$
$if(biblio-files)$
$if(biblio-title)$
$if(book-class)$
\renewcommand\bibname{$biblio-title$}
$else$
\renewcommand\refname{$biblio-title$}
$endif$
$endif$
\bibliography{$biblio-files$}
$endif$
$endif$
$if(biblatex)$
\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$
$endif$
$for(include-after)$
$include-after$
$endfor$
\end{document}