Advertisement
Guest User

Untitled

a guest
Jul 20th, 2019
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. using (var chartimage = new MemoryStream())
  2. {
  3.  
  4. chartCentersByYear.SaveImage(chartimage, ChartImageFormat.Png);
  5. using (var imageSys = System.Drawing.Image.FromStream(chartimage))
  6. {
  7.  
  8. var image = iTextSharp.text.Image.GetInstance(imageSys, System.Drawing.Imaging.ImageFormat.Wmf);
  9. image.ScalePercent(50f);
  10.  
  11. image.SetAbsolutePosition(document.LeftMargin + 40, document.BottomMargin + 95);
  12.  
  13. document.Add(image);
  14. }
  15.  
  16. }
  17.  
  18. var image = iTextSharp.text.Image.GetInstance(imageSys, System.Drawing.Imaging.ImageFormat.Wmf);
  19.  
  20. static void Main(string[] args) {
  21.  
  22. // Create a chart.
  23. Chart chart1 = new Chart();
  24. chart1.ChartAreas.Add(new ChartArea());
  25. Series series1 = new Series();
  26. series1.Points.Add(new DataPoint(1, 2));
  27. series1.Points.Add(new DataPoint(2, 4));
  28. series1.Points.Add(new DataPoint(3, 1));
  29. chart1.Series.Add(series1);
  30.  
  31. // Save the chart to an in-memory (emf) metafile.
  32. Metafile metafile;
  33. using (MemoryStream str1 = new MemoryStream()) {
  34. chart1.SaveImage(str1, ChartImageFormat.Emf);
  35.  
  36. byte[] emfBytes = str1.ToArray();
  37. IntPtr hemf = SetEnhMetaFileBits((uint) emfBytes.Length, emfBytes);
  38. metafile = new Metafile(hemf, true);
  39. }
  40.  
  41. // Convert the metafile to a WMF and write to a file.
  42. byte[] wmfBytes = GetWmfByteArray(metafile);
  43. File.WriteAllBytes(@"c:temptest.wmf", wmfBytes);
  44.  
  45. // Initialize the document.
  46. PdfWriter writer = new PdfWriter(@"c:temptest.pdf");
  47. PdfDocument pdf = new PdfDocument(writer);
  48. Document document = new Document(pdf);
  49.  
  50. // Add the image.
  51. PdfFormXObject xObject1 = new PdfFormXObject(new WmfImageData(@"c:temptest.wmf"), pdf);
  52. Image img1 = new Image(xObject1);
  53. document.Add(img1);
  54.  
  55. document.Close();
  56. }
  57.  
  58. [DllImport("gdiplus.dll", SetLastError = true)]
  59. static extern int GdipEmfToWmfBits(int hEmf, int uBufferSize, byte[] bBuffer, int iMappingMode, EmfToWmfBitsFlags flags);
  60. [DllImport("gdi32.dll")]
  61. public static extern IntPtr SetEnhMetaFileBits(uint cbBuffer, byte[] lpBuffer);
  62.  
  63. [Flags]
  64. private enum EmfToWmfBitsFlags
  65. {
  66. EmfToWmfBitsFlagsDefault = 0x00000000,
  67. EmfToWmfBitsFlagsEmbedEmf = 0x00000001,
  68. EmfToWmfBitsFlagsIncludePlaceable = 0x00000002,
  69. EmfToWmfBitsFlagsNoXORClip = 0x00000004
  70. }
  71.  
  72. private static byte[] GetWmfByteArray(Metafile mf) {
  73. const int MM_ANISOTROPIC = 8;
  74. int handle = mf.GetHenhmetafile().ToInt32();
  75. int bufferSize = GdipEmfToWmfBits(handle, 0, null, MM_ANISOTROPIC, EmfToWmfBitsFlags.EmfToWmfBitsFlagsIncludePlaceable);
  76. byte[] buf = new byte[bufferSize];
  77. GdipEmfToWmfBits(handle, bufferSize, buf, MM_ANISOTROPIC, EmfToWmfBitsFlags.EmfToWmfBitsFlagsIncludePlaceable);
  78. return buf;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement