1

イントラネットWebサイトの印刷を自動化しようとしています。これは特定のユーザーのコンピューターに配置され、必要に応じて実行されるアプリケーションであるため、できるだけ中断しないようにします(つまり、ページごとにIEを起動しないようにします)。 )。問題は、Webサイトの最初のページを印刷してから、Webサイト全体をもう一度印刷する必要があることです。これにより、最初のページが2回生成されます。これを行うための最良の方法は何ですか?

印刷する必要のあるページをループするのに問題はありません。また、Webブラウザでページを開くのにも問題はありません。ただし、印刷範囲の指定に問題があります。

PrintDocumentも試しましたが、フォーム内で開く方法がわかりませんでした。

提供できる助けをありがとう。

4

1 に答える 1

0

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よりもよく知っています)

于 2013-01-25T20:43:18.023 に答える