Download html pdf file with abcpdf

How to upload HTML file in PDF using abcpdf in ASP.Net, C #?

+3
source share
3 answers

The following ASP.NET example in C # shows how you can create a PDF file from a web page and transfer it to a web browser ...

<% @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();
%>

Changing the content-layout from 'inline' to 'attachment' will change the behavior.

The product documentation contains additional information about the Doc.GetData () function that you need to know about, and you can also find the Paged HTML Example .

+1
source

This method works well in our project.

    /// <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();
    }
}
+1

Here's how you use ABCPdf to achieve this.

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();
0
source

Source: https://habr.com/ru/post/1743446/


All Articles