PDFファイルをダウンロードするには、iTextSharpを使用してこのソリューションを試してください:
ITextSharp HTML to PDF?
ファイルに直接保存する場合は、1つの置換を除きます
private MemoryStream createPDF(string html)
{
MemoryStream msOutput = new MemoryStream();
TextReader reader = new StringReader(html);
// step 1: creation of a document-object
Document document = new Document(PageSize.A4, 30, 30, 30, 30);
// step 2:
// we create a writer that listens to the document
// and directs a XML-stream to a file
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("c:\\my.pdf", FileMode.Create));
// step 3: we create a worker parse the document
HTMLWorker worker = new HTMLWorker(document);
// step 4: we open document and start the worker on the document
document.Open();
worker.StartDocument();
// step 5: parse the html into the document
worker.Parse(reader);
// step 6: close the document and the worker
worker.EndDocument();
worker.Close();
document.Close();
return msOutput;
}
PDFを設定したら、ghostscriptを試して1ページを印刷します。
既存のPDF(または他のファイル)をC#で印刷します。
プロセスのシェル実行を開始する場合は、コマンドライン引数を使用できます。
gsprint "filename.pdf" -from 1 - to 1
または、WebBrowserでページ全体を印刷することもできます:http://msdn.microsoft.com/en-us/library/b0wes9a3.aspx
WebBrowser自体が印刷ダイアログなしで「ページXからYへ」を印刷できることを参照しているものが見つかりません。
同様の問題に直面しているので、別の解決策を次に示します。
このオープンソースプロジェクトは、HTMLドキュメントをiTextSharp(http://code.google.com/p/wkhtmltopdf/)に似たPDFドキュメントに変換します。印刷したいサイトのレイアウトにいくつかのフォーマットの問題があったため、iTextSharpを使用しなくなりました。コマンドライン引数を送信して、Webクライアントを使用してダウンロードしたhtmlをpdfファイルに変換します。
WebClient wc = new WebClient();
wc.Credentials = CredentialCache.DefaultNetworkCredentials;
string htmlText = wc.DownloadString("http://websitehere.com);
次に、PDFに切り替えた後、ファイルを印刷するだけです。
Process p = new Process();
p.StartInfo.FileName = string.Format("{0}.pdf", fileLocation);
p.StartInfo.Verb = "Print";
p.Start();
p.WaitForExit();
(C#についてはお詫びします。単純な変換である必要がありますが、VB.NETよりもよく知っています)