我正在生成HTML文件,我想從最終文件創建PDF。我使用下面的生成HTML文件:如何使用WkHTMLToSharp/wkhtmltopdf與C中的圖像將HTML文件轉換爲PDF#
public static void WriteHTML(string cFile, List<Movie> mList)
{
int lineID = 0;
string strHeader, strMovie, strGenre, tmpGenre = null;
string strPDF = null;
// initiates streamwriter for catalog output file
FileStream fs = new FileStream(cFile, FileMode.Create);
StreamWriter catalog = new StreamWriter(fs);
strHeader = "<style type=\"text/css\">\r\n" + "<!--\r\n" + "tr#odd {\r\n" + " background-color:#e2e2e2;\r\n" + " vertical-align:top;\r\n" + "}\r\n" + "\r\n" + "tr#even {\r\n" + " vertical-align:top;\r\n" + "}\r\n" + "div#title {\r\n" + " font-size:16px;\r\n" + " font-weight:bold;\r\n" + "}\r\n" + "\r\n" + "div#mpaa {\r\n" + " font-size:10px;\r\n" + "}\r\n" + "\r\n" + "div#genre {\r\n" + " font-size:12px;\r\n" + " font-style:italic;\r\n" + "}\r\n" + "\r\n" + "div#plot {\r\n" + " height: 63px;\r\n" + " font-size:12px;\r\n" + " overflow:hidden;\r\n" + "}\r\n" + "-->\r\n" + "</style>\r\n" + "\r\n" + "<html>\r\n" + " <body>\r\n" + " <table>\r\n";
catalog.WriteLine(strHeader);
strPDF = strHeader;
foreach (Movie m in mList)
{
tmpGenre = null;
strMovie = lineID == 0 ? " <tr id=\"odd\" style=\"page-break-inside:avoid\">\r\n" : " <tr id=\"even\" style=\"page-break-inside:avoid\">\r\n";
catalog.WriteLine(strMovie);
strPDF += strMovie;
foreach (string genre in m.Genres)
tmpGenre += ", <a href=\"" + genre + ".html\" target=\"_blank\">" + genre + "</a>";
strGenre = tmpGenre != null ? tmpGenre.Substring(2) : null;
strMovie = " <td>\r\n" + " <img src=\".\\images\\" + m.ImageFile + "\" width=\"75\" height=\"110\">\r\n" + " </td>\r\n" + " <td>\r\n" + " <div id=\"title\">" + m.Title + "</div>\r\n" + " <div id=\"mpaa\">" + m.Certification + " " + m.MPAA + "</div>\r\n" + " <div id=\"genre\">" + strGenre + "</div>\r\n" + " <div id=\"plot\">" + m.Plot + "</div>\r\n" + " </td>\r\n" + " </tr>\r\n";
catalog.WriteLine(strMovie);
strPDF += strMovie;
lineID = lineID == 0 ? 1 : 0;
}
string closingHTML = " </table>\r\n" + " </body>\r\n" + "</html>";
catalog.WriteLine(closingHTML);
strPDF += closingHTML;
WritePDF(strPDF, cFile + ".PDF");
catalog.Close();
}
一旦完成,我想調用下面的函數生成的PDF文件:
public static void WritePDF(string cFile, string pdfFile)
{
WkHtmlToPdfConverter w = new WkHtmlToPdfConverter();
byte[] strHTML = w.Convert(cFile);
File.WriteAllBytes(pdfFile, strHTML);
w.Dispose();
}
我發現.Convert功能將HTML代碼轉換爲PDF,而不是文件。其次,當我直接傳入HTML代碼時,圖像不會出現在PDF中。我知道.GIF文件存在問題,但這些都是.JPG文件。
我已經讀了很多關於wkhtmltopdf是多麼的好的,寫過WkHTMLToSharp的人都發布了他的項目,但是我一直對缺乏文檔感到失望。
我想要能夠通過文件轉換,更改邊距(我知道這是可能的,我只需要弄清楚正確的設置),讓它正確地轉換圖像,最重要的是,不要在多個頁面中分解我的項目(支持「頁面中斷:避免」或類似的內容)。
我很想看看別人如何使用它!
你試圖使用絕對路徑到你的圖片?即:而不是/images/myimage.jpg,使用http://www.myserver.com/images/myimage.jpg? –
使用絕對路徑確實有效,但這意味着我不能把剛剛生成的代碼拿來用在我的網站上,或者把它放在我的本地機器上查看:(嗯,很煩人,雖然現在進展了,但現在如果可以的話只是讓它不會在我的頁面之間吐出行,我想我可以使用它並完成它。 – Dizzy49