2010-04-30 74 views

回答

1

下ASP.NET例如,在C#中說明了如何從一個網頁創建一個PDF和它傳輸到網絡瀏覽器...

<% @Page Language="C#" %> 
<% @Import Namespace="WebSupergoo.ABCpdf7" %> 
<% 
Doc theDoc = new Doc(); 
theDoc.AddImageUrl("http://www.example.com"); 
byte[] theData = theDoc.GetData(); 
Response.Clear(); 
Response.ContentType = "application/pdf"; 
Response.AddHeader("content-disposition", "inline; filename=MyPDF.PDF"); 
Response.AddHeader("content-length", theData.Length.ToString()); 
Response.BinaryWrite(theData); 
Response.End(); 
%> 

從「內嵌」到「改變內容處置依戀'會改變行爲。

有關Doc.GetData()函數的產品文檔中還有一些需要注意的更多信息,您可能還會發現'Paged HTML Example'有幫助。

0

這就是你如何使用ABCPdf來實現這一目標。

http://www.websupergoo.com/helppdf7net/source/4-examples/13-pagedhtml.htm

Doc theDoc = new Doc(); 
theDoc.Rect.Inset(72, 144); 

theDoc.Page = theDoc.AddPage(); 
int theID; 
theID = theDoc.AddImageUrl("http://www.yahoo.com/"); 

while (true) { 
    theDoc.FrameRect(); // add a black border 
    if (!theDoc.Chainable(theID)) 
    break; 
    theDoc.Page = theDoc.AddPage(); 
    theID = theDoc.AddImageToChain(theID); 
} 

for (int i = 1; i <= theDoc.PageCount; i++) { 
    theDoc.PageNumber = i; 
    theDoc.Flatten(); 
} 

theDoc.Save(Server.MapPath("pagedhtml.pdf")); 
theDoc.Clear(); 
1

這種方法適用於我們的項目

/// <summary> 
    /// Converts Html to pdf 
    /// </summary> 
    /// <param name="htmlOrUrl">Html markup of html page URL</param> 
    /// <param name="isUrl">previous parameter is URL</param> 
    /// <param name="highQuality">use high quality converter engine</param> 
    /// <param name="indent">indent from all sides of the page</param> 
    /// <returns>Memory stream with PDF-file</returns> 
    public static MemoryStream HtmlToPDF(this String htmlOrUrl, Boolean isUrl, Boolean highQuality = false, Int32 indent = 20) 
    { 
     using (var doc = new Doc()) 
     { 
      doc.Color.String = "0, 0, 0"; 
      doc.HtmlOptions.UseScript = true; 
      doc.HtmlOptions.AddLinks = true; 
      if (highQuality) 
      { 
       doc.HtmlOptions.Engine = EngineType.Gecko; 
      } 

      // 1. CONTENT BLOCK 
      doc.Rect.Left = 0 + indent; 
      doc.Rect.Top = 792 - indent; 
      doc.Rect.Right = 612 - indent; 
      doc.Rect.Bottom = 0 + indent; 

      doc.AppendChainable(htmlOrUrl, isUrl); 

      var ms = new MemoryStream(); 
      doc.Save(ms); 
      if (ms.CanSeek) 
      { 
       ms.Seek(0, SeekOrigin.Begin); 
      } 
      return ms; 
     } 
    } 

    /// <summary> 
    /// Appends document with multipage content 
    /// </summary> 
    private static void AppendChainable(this Doc doc, String htmlOrUrl, Boolean isUrl = false) 
    { 
     Int32 blockId = isUrl 
      ? doc.AddImageUrl(htmlOrUrl) 
      : doc.AddImageHtml(String.Format(HtmlWrapper, htmlOrUrl)); 

     while (doc.Chainable(blockId)) 
     { 
      //doc.FrameRect(); // add a black border 
      doc.Page = doc.AddPage(); 
      blockId = doc.AddImageToChain(blockId); 
     } 
    } 

//使用

var testMs1 = ABCPdfConverter.ABCConverter.HtmlToPDF("https://developers.google.com 
    /chart/interactive/docs/examples", true, false, 20); 
testMs1.StreamToFile(@"D:/3.pdf"); 

//和數據流以文件

/// <summary> 
/// Saves stream instance to file 
/// </summary> 
public static void StreamToFile(this MemoryStream input, String outputFileName) 
{ 
    var dirName = Path.GetDirectoryName(outputFileName); 
    var fileName = Path.GetFileName(outputFileName); 
    if (String.IsNullOrEmpty(dirName) || String.IsNullOrWhiteSpace(fileName)) 
    { 
     throw new IOException("outputFileName"); 
    } 

    using (FileStream outStream = File.Create(outputFileName)) 
    { 
     input.WriteTo(outStream); 
     outStream.Flush(); 
     outStream.Close(); 
    } 
}