Skip to content

Instantly share code, notes, and snippets.

@sitefinitysteve
Last active August 24, 2020 16:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sitefinitysteve/4e0449b49302b46f4b3e to your computer and use it in GitHub Desktop.
Save sitefinitysteve/4e0449b49302b46f4b3e to your computer and use it in GitHub Desktop.
Sitefinity RadDocument PDF Export Sample
protected void OnDownloadPDF_Click(object sender, EventArgs e) {
string output = "";
byte[] buffer = new byte[0];
string filename = "file"
string html = Util.GetHtmlToExport(); //However you want...this is a fake stub
var thread = new Thread(() =>
{
Telerik.Windows.Documents.FormatProviders.Pdf.PdfFormatProvider provider = new Telerik.Windows.Documents.FormatProviders.Pdf.PdfFormatProvider();
HtmlFormatProvider htmlProvider = new HtmlFormatProvider();
//Settings
HtmlImportSettings importSettings = new HtmlImportSettings();
importSettings.LoadImageFromUrl += importSettings_LoadImageFromUrl;
importSettings.UseHtmlHeadingStyles = true;
htmlProvider.ImportSettings = importSettings;
RadDocument document = htmlProvider.Import(html);
document.LayoutMode = DocumentLayoutMode.Paged;
document.EnsureDocumentMeasuredAndArranged();
buffer = provider.Export(document);
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
Response.Clear();
MemoryStream ms = new MemoryStream(buffer);
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename={0}.pdf".Arrange(filename));
Response.Buffer = true;
ms.WriteTo(Response.OutputStream);
Response.End();
}
public static void importSettings_LoadImageFromUrl(object sender, LoadImageEventArgs e)
{
try
{
WebClient webClient = new WebClient();
var uri = new Uri(e.Url);
var bytes = webClient.DownloadData(uri);
var extension = webClient.ResponseHeaders["Content-Type"].ToString();
extension = extension.Replace("image/","");
if(String.IsNullOrEmpty(extension)){
extension = "png";
}
Stream stream = new MemoryStream(bytes);
e.Handled = true;
e.ImageElement.Init(stream, extension.ToLower());
}catch(Exception ex){
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment