3

ユーザーが登録フォームと同じように値を入力できる Web ページを開発しました。データを保存しながら、ページを PDF 形式でダウンロードするオプションを提供する必要があります。

私は次のことを試しました:

  1. itextsharp dll を使ってみました。問題は、PDF ファイルのすべてのコンテンツを取得できないことです。例の画像とスタイルが正しく変換されません。
  2. (SautinSoftのPdfVision、ConvertApi、pdfcrowd)アセンブリなどのサードパーティツールをいくつか試しました。すべての dll は URL をパラメーターとして取得し、PDF に変換しています。そのようにして、サーバー側の HTML コードが PDF に変換されます。入力した値は PDF にありません。

(sautinsoft) のサンプル コードをネットから入手しました。

 SautinSoft.PdfVision v = new SautinSoft.PdfVision();
        v.PageStyle.PageSize.Letter();
        byte[] pdf = v.ConvertHtmlFileToPDFStream(@"http://en.wikipedia.org/wiki/Main_Page");
        if (pdf != null)
        {
            Response.Buffer = true;
            Response.Clear();
            Response.ContentType = "application/PDF";
            Response.AddHeader("Content-Disposition:", "attachment; filename=Result.pdf");
            Response.BinaryWrite(pdf);
            Response.Flush();
            Response.End();
        }

for (itextsharp)

protected override void Render(HtmlTextWriter writer)
{
MemoryStream mem = new MemoryStream();
StreamWriter twr = new StreamWriter(mem);
HtmlTextWriter myWriter = new HtmlTextWriter(twr);
base.Render(myWriter);
myWriter.Flush();
myWriter.Dispose();
StreamReader strmRdr = new StreamReader(mem);
strmRdr.BaseStream.Position = 0;
string pageContent = strmRdr.ReadToEnd();
strmRdr.Dispose();
mem.Dispose();
writer.Write(pageContent);
CreatePDFDocument(pageContent);


}

public void CreatePDFDocument(string strHtml)
{

string strFileName = HttpContext.Current.Server.MapPath("test.pdf");
// step 1: creation of a document-object
Document document = new Document();
// step 2:
// we create a writer that listens to the document
PdfWriter.GetInstance(document, new FileStream(strFileName, FileMode.Create));
StringReader se = new StringReader(strHtml);
HTMLWorker obj = new HTMLWorker(document);
document.Open();
obj.Parse(se);
document.Close();
ShowPdf(strFileName);


}

public void ShowPdf(string strFileName)
{
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-Disposition", "inline;filename=" + strFileName);
Response.ContentType = "application/pdf";
Response.WriteFile(strFileName);
Response.Flush();
Response.Clear();
}

より良い解決策があれば教えてください。

4

2 に答える 2

0

以前の仕事では、Persits Software AspPDF.NET (および「従来の」AspPDF) のライセンスを支払っていましたが、これは非常にうまく機能していました。CSS が適用されなかったり、画像が PDF から除外されたりする問題はありませんでした。ただし、「高度な」CSS と見なされるものは一切使用していません。登録キーを購入して適用するまで、作成したPDFに透かしを入れる無料のデモを試すことができると思います.

于 2012-10-31T14:40:30.963 に答える
0

あなたが達成しようとしているもののためにこのライブラリを試すことができます

http://code.google.com/p/wkhtmltopdf/

ここにそれを使用する方法のチュートリアルがあります

https://gist.github.com/2341776

于 2012-10-31T14:32:16.903 に答える