Advertisement
Guest User

Untitled

a guest
May 4th, 2016
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. public class PdfFormatter : MediaTypeFormatter
  2. {
  3. #region Constants and Fields
  4.  
  5. private const int ChunkSizeMax = 1024 * 10;
  6.  
  7. #endregion
  8.  
  9. #region Constructors and Destructors
  10.  
  11. public PdfFormatter()
  12. {
  13. SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("application/pdf"));
  14. }
  15.  
  16. #endregion
  17.  
  18. #region Public Methods
  19.  
  20. public override bool CanReadType(Type type)
  21. {
  22. return false; // can't read any types
  23. }
  24.  
  25. public override bool CanWriteType(Type type)
  26. {
  27. return type == typeof(byte[]);
  28. }
  29.  
  30. public override Task WriteToStreamAsync(Type type, object value, Stream writeStream, HttpContent content, TransportContext transportContext)
  31. {
  32. Task t = new Task(() => WritePdfBytes(value, writeStream));
  33. t.Start();
  34. return t;
  35. }
  36.  
  37. #endregion
  38.  
  39. #region Methods
  40.  
  41. private static void WritePdfBytes(object value, Stream writeStream)
  42. {
  43. byte[] buffer = value as byte[];
  44. int offset = 0;
  45.  
  46. while (offset < buffer.Length)
  47. {
  48. int chunkSize = Math.Min(buffer.Length - offset, ChunkSizeMax);
  49. writeStream.Write(buffer, offset, chunkSize);
  50. offset += chunkSize;
  51. }
  52. }
  53.  
  54. #endregion
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement