Popper.js is a library used to create poppers in web applications Demo
«تبدیل HTML به PDF با استفاده از کتابخانهی iTextSharp»
هرچند کلاس HTMLWorker دیگر توسعه نخواهد یافت (با کتابخانه XML Worker جایگزین شدهاست)، اما برای تبدیل یک سری از کارهای ابتدایی بسیار مناسب است. در این بین اگر تگ خاصی توسط کلاس HTMLWorker پشتیبانی نشود یا پیاده سازی آن ناقص باشد، امکان جایگزین کردن کامل آن با پیاده سازی اینترفیس IHTMLTagProcessor وجود دارد. در کدهای ذیل نحوه جایگزین کردن پردازش کننده تصاویر آنرا ملاحظه میکنید. در اینجا پشتیبانی از تصاویر base64 مدفون شده در صفحات html به آن اضافه شده است:
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using iTextSharp.text; using iTextSharp.text.html; using iTextSharp.text.html.simpleparser; using iTextSharp.text.pdf; namespace CustomHtmlWorkerTag { /// <summary> /// Our custom HTML Tag to add an IElement. /// </summary> public class CustomImageHTMLTagProcessor : IHTMLTagProcessor { /// <summary> /// Tells the HTMLWorker what to do when a close tag is encountered. /// </summary> public void EndElement(HTMLWorker worker, string tag) { } /// <summary> /// Tells the HTMLWorker what to do when an open tag is encountered. /// </summary> public void StartElement(HTMLWorker worker, string tag, IDictionary<string, string> attrs) { Image image; var src = attrs["src"]; if (src.StartsWith("data:image/")) { // data:[<MIME-type>][;charset=<encoding>][;base64],<data> var base64Data = src.Substring(src.IndexOf(",") + 1); var imagedata = Convert.FromBase64String(base64Data); image = Image.GetInstance(imagedata); } else { image = Image.GetInstance(src); } worker.UpdateChain(tag, attrs); worker.ProcessImage(image, attrs); worker.UpdateChain(tag); } } class Program { static void Main(string[] args) { using (var pdfDoc = new Document(PageSize.A4)) { PdfWriter.GetInstance(pdfDoc, new FileStream("Test.pdf", FileMode.Create)); pdfDoc.Open(); FontFactory.Register("c:\\windows\\fonts\\tahoma.ttf"); var tags = new HTMLTagProcessors(); // Replace the built-in image processor tags[HtmlTags.IMG] = new CustomImageHTMLTagProcessor(); var html = "<img alt='' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAodJREFUeNpsk0tME1EUhv87UwlCREhRFpi4cGMMRrTE4MaoxBhAsDyMssFHfCQu3BlXGuNKNy5NmqALoqEEMJWCgEUjYojllSpofIUNBNqmIKU6OnQennunUxvgJF86957z/+d27hkGigMlDJfOAmV7AcYsKGqIZljRSvhNE+CMTwEtXmBy2gQb7mCQJUBKkTIQYtfJYCNMAxO9hzq5CYmFiWFY6ISE9VFLRedc1SONeqwf+uJLuKreNPI9nltbLG0orhpqUCM90DRVoEbJ5MSLho1MMg1O0bHOuyoD9crCcxL+xa0HqwL+rEQHsb/CW89reO1aAyEuq+yp+zXvg66rgng8LrDXSmwYpUc8dZkmDsJNL+NCeVVXbWK+O32cpJ7E6OgkwuEwrl8phaHrVsfYD+x03XTPjN3nzZnD0HGxvPppTSLcLwo0I4lldRFK8jdCoZBlJquAbBnr0BD9GUTRvubahclW5qDukqkpIqlodGQ1At3UxZXaIUvauqsyjBV+jZJEJ3s83HO5j+UWI7E6C4mp2EQCTixyV2CvbbKzNmN2zNfHtbzPM3p4FOy/M5CXtwsOKZmmsOi2IHMvyyFhJhgY4BqutQ/aRRstocEngZzswnQnO+x1lqTjy8hIgNdyDc+x5nomxrKJhpcSp2lSrx48WlZhGArynG5hsLLoE7/jQ59f0aR7ZBkdbf7U6Ge+mKYaBvdx8wwZXjtWvfswfTrp3Over29J8NAXYO1t/v/7csZA5U5/Q35nH+aKt8OMR2POPSUFOyRmorvje3BiCt4b9zBANTmwGvP/aMoZRluJbURB8APmnPlQliNLzk8flxbeh9Du8eId5bYQ2SnxH36b/wQYABNFRsIaESsTAAAAAElFTkSuQmCC' />"; var styles = new StyleSheet(); styles.LoadTagStyle(HtmlTags.BODY, HtmlTags.FONTFAMILY, "tahoma"); styles.LoadTagStyle(HtmlTags.BODY, HtmlTags.ENCODING, "Identity-H"); PdfPCell pdfCell = new PdfPCell { Border = 0 }; pdfCell.RunDirection = PdfWriter.RUN_DIRECTION_LTR; using (var reader = new StringReader(html)) { var parsedHtmlElements = HTMLWorker.ParseToList(reader, styles, tags, null); foreach (var htmlElement in parsedHtmlElements) { pdfCell.AddElement(htmlElement); } } var table1 = new PdfPTable(1); table1.AddCell(pdfCell); pdfDoc.Add(table1); } Process.Start("Test.pdf"); } } }
var tags = new HTMLTagProcessors(); // Replace the built-in image processor tags[HtmlTags.IMG] = new CustomImageHTMLTagProcessor();
HTMLWorker.ParseToList(reader, styles, tags, null)
کتابخانه unitegallery
The Unite Gallery is multipurpose javascript gallery based on jquery library. It's built with a modular technique with a lot of accent of ease of use and customization. It's very easy to customize the gallery, changing it's skin via css, and even writing your own theme. Yet this gallery is very powerfull, fast and has the most of nowdays must have features like responsiveness, touch enabled and even zoom feature, it's unique effect. Demo
Features
- The gallery plays VIDEO from: Youtube, Vimeo, HTML5, Wistia and SoundCloud (not a video but still )
- Responsive - fits to every screen with automatic ratio preserve
- Touch Enabled - Every gallery parts can be controlled by the touch on touch enabled devices
- Responsive - The gallery can fit every screen size, and can respond to a screen size change.
- Skinnable - Allow to change skin with ease in different css file without touching main gallery css.
- Themable - The gallery has various of themes, each theme has it's own options and features, but it uses gallery core objects
- Zoom Effect - The gallery has unique zoom effect that could be applied within buttons, mouse wheel or pinch gesture on touch - enabled devices
- Gallery Buttons - The gallery has buttons on it, like full screen or play/pause that optimized for touch devidces access
- Keyboard controls - The gallery could be controlled by keyboard (left, right arrows)
- Tons of options. The gallery has huge amount of options for every gallery object that make the customization process easy and fun.
- Powerfull API - using the gallery API you can integrate the gallery into your website behaviour and use it with another items like lightboxes etc.
Intermediate & Advanced
Want to learn about the latest and greatest in the 64-bit Visual Studio 2022? Join Scott Hanselman and Visual Studio product team as they take Visual Studio 2022 for a spin.
20:27 Profiling .NET apps in Visual Studio 2022
23:19 Cross platform apps with WSL and CMake in Visual Studio 2022
26:07 Testing your .NET app on Linux
28:00 Easily create CI/CD pipelines using GitHub actions with Visual Studio 2022
30:40 Balloon drop!
تست جوئل برای برنامه نویسها
یادگیری AngularJs با codecademy
<div> <div> <select ></select> </div> </div>
$(document).ready(function () { $('.js-example-basic-single').select2({ data: [ { id: "al", text: "Albania" }, { id: "dz", text: "Algeria" }, { id: "as", text: "American Samoa" }, { id: "ad", text: "Andorra" }, { id: "ao", text: "Angola" }, { id: "ai", text: "Anguilla" }, { id: "ag", text: "Antigua" }, { id: "ar", text: "Argentina" }, { id: "am", text: "Armenia" }, { id: "aw", text: "Aruba" }, { id: "au", text: "Australia" }, { id: "at", text: "Austria" }, { id: "az", text: "Azerbaijan" }, { id: "bs", text: "Bahamas" }, { id: "bh", text: "Bahrain" }, { id: "bd", text: "Bangladesh" }, { id: "bb", text: "Barbados" }, { id: "by", text: "Belarus" }, { id: "be", text: "Belgium" }, { id: "bz", text: "Belize" }, { id: "bj", text: "Benin" }, { id: "bm", text: "Bermuda" }, { id: "bt", text: "Bhutan" }, { id: "bo", text: "Bolivia" }, { id: "ba", text: "Bosnia" }, { id: "bw", text: "Botswana" }, { id: "bv", text: "Bouvet Island" }, { id: "br", text: "Brazil" }, { id: "vg", text: "British Virgin Islands" }, { id: "bn", text: "Brunei" }, { id: "bg", text: "Bulgaria" }, { id: "bf", text: "Burkina Faso" }, { id: "mm", text: "Burma" }, { id: "bi", text: "Burundi" }, { id: "tc", text: "Caicos Islands" }, { id: "kh", text: "Cambodia" }, { id: "cm", text: "Cameroon" }, { id: "ca", text: "Canada" }, { id: "cv", text: "Cape Verde" }, { id: "ky", text: "Cayman Islands" }, { id: "cf", text: "Central African Republic" }, { id: "td", text: "Chad" }, { id: "cl", text: "Chile" }, { id: "cn", text: "China" }, { id: "cx", text: "Christmas Island" }, { id: "cc", text: "Cocos Islands" }, { id: "co", text: "Colombia" }, { id: "km", text: "Comoros" }, { id: "cg", text: "Congo Brazzaville" }, { id: "cd", text: "Congo" }, { id: "ck", text: "Cook Islands" }, { id: "cr", text: "Costa Rica" }, { id: "ci", text: "Cote Divoire" }, { id: "hr", text: "Croatia" }, { id: "cu", text: "Cuba" }, { id: "cy", text: "Cyprus" }, { id: "cz", text: "Czech Republic" }, { id: "dk", text: "Denmark" }, { id: "dj", text: "Djibouti" }, { id: "dm", text: "Dominica" }, { id: "do", text: "Dominican Republic" }, { id: "ec", text: "Ecuador" }, { id: "eg", text: "Egypt" }, { id: "sv", text: "El Salvador" }, { id: "gb", text: "England" }, { id: "gq", text: "Equatorial Guinea" }, { id: "er", text: "Eritrea" }, { id: "ee", text: "Estonia" }, { id: "et", text: "Ethiopia" }, { id: "eu", text: "European Union" }, { id: "fk", text: "Falkland Islands" }, { id: "fo", text: "Faroe Islands" }, { id: "fj", text: "Fiji" }, { id: "fi", text: "Finland" }, { id: "fr", text: "France" }, { id: "gf", text: "French Guiana" }, { id: "pf", text: "French Polynesia" }, { id: "tf", text: "French Territories" }, { id: "ga", text: "Gabon" }, { id: "gm", text: "Gambia" }, { id: "ge", text: "Georgia" }, { id: "de", text: "Germany" }, { id: "gh", text: "Ghana" }, { id: "gi", text: "Gibraltar" }, { id: "gr", text: "Greece" }, { id: "gl", text: "Greenland" }, { id: "gd", text: "Grenada" }, { id: "gp", text: "Guadeloupe" }, { id: "gu", text: "Guam" }, { id: "gt", text: "Guatemala" }, { id: "gw", text: "Guinea-Bissau" }, { id: "gn", text: "Guinea" }, { id: "gy", text: "Guyana" }, { id: "ht", text: "Haiti" }, { id: "hm", text: "Heard Island" }, { id: "hn", text: "Honduras" }, { id: "hk", text: "Hong Kong" }, { id: "hu", text: "Hungary" }, { id: "is", text: "Iceland" }, { id: "in", text: "India" }, { id: "io", text: "Indian Ocean Territory" }, { id: "id", text: "Indonesia" }, { id: "ir", text: "Iran" }, { id: "iq", text: "Iraq" }, { id: "ie", text: "Ireland" }, { id: "il", text: "Israel" }, { id: "it", text: "Italy" }, { id: "jm", text: "Jamaica" }, { id: "jp", text: "Japan" }, { id: "jo", text: "Jordan" }, { id: "kz", text: "Kazakhstan" }, { id: "ke", text: "Kenya" }, { id: "ki", text: "Kiribati" }, { id: "kw", text: "Kuwait" }, { id: "kg", text: "Kyrgyzstan" }, { id: "la", text: "Laos" }, { id: "lv", text: "Latvia" }, { id: "lb", text: "Lebanon" }, { id: "ls", text: "Lesotho" }, { id: "lr", text: "Liberia" }, { id: "ly", text: "Libya" }, { id: "li", text: "Liechtenstein" }, { id: "lt", text: "Lithuania" }, { id: "lu", text: "Luxembourg" }, { id: "mo", text: "Macau" }, { id: "mk", text: "Macedonia" }, { id: "mg", text: "Madagascar" }, { id: "mw", text: "Malawi" }, { id: "my", text: "Malaysia" }, { id: "mv", text: "Maldives" }, { id: "ml", text: "Mali" }, { id: "mt", text: "Malta" }, { id: "mh", text: "Marshall Islands" }, { id: "mq", text: "Martinique" }, { id: "mr", text: "Mauritania" }, { id: "mu", text: "Mauritius" }, { id: "yt", text: "Mayotte" }, { id: "mx", text: "Mexico" }, { id: "fm", text: "Micronesia" }, { id: "md", text: "Moldova" }, { id: "mc", text: "Monaco" }, { id: "mn", text: "Mongolia" }, { id: "me", text: "Montenegro" }, { id: "ms", text: "Montserrat" }, { id: "ma", text: "Morocco" }, { id: "mz", text: "Mozambique" }, { id: "na", text: "Namibia" }, { id: "nr", text: "Nauru" }, { id: "np", text: "Nepal" }, { id: "an", text: "Netherlands Antilles" }, { id: "nl", text: "Netherlands" }, { id: "nc", text: "New Caledonia" }, { id: "pg", text: "New Guinea" }, { id: "nz", text: "New Zealand" }, { id: "ni", text: "Nicaragua" }, { id: "ne", text: "Niger" }, { id: "ng", text: "Nigeria" }, { id: "nu", text: "Niue" }, { id: "nf", text: "Norfolk Island" }, { id: "kp", text: "North Korea" }, { id: "mp", text: "Northern Mariana Islands" }, { id: "no", text: "Norway" }, { id: "om", text: "Oman" }, { id: "pk", text: "Pakistan" }, { id: "pw", text: "Palau" }, { id: "ps", text: "Palestine" }, { id: "pa", text: "Panama" }, { id: "py", text: "Paraguay" }, { id: "pe", text: "Peru" }, { id: "ph", text: "Philippines" }, { id: "pn", text: "Pitcairn Islands" }, { id: "pl", text: "Poland" }, { id: "pt", text: "Portugal" }, { id: "pr", text: "Puerto Rico" }, { id: "qa", text: "Qatar" }, { id: "re", text: "Reunion" }, { id: "ro", text: "Romania" }, { id: "ru", text: "Russia" }, { id: "rw", text: "Rwanda" }, { id: "sh", text: "Saint Helena" }, { id: "kn", text: "Saint Kitts and Nevis" }, { id: "lc", text: "Saint Lucia" }, { id: "pm", text: "Saint Pierre" }, { id: "vc", text: "Saint Vincent" }, { id: "ws", text: "Samoa" }, { id: "sm", text: "San Marino" }, { id: "gs", text: "Sandwich Islands" }, { id: "st", text: "Sao Tome" }, { id: "sa", text: "Saudi Arabia" }, { id: "sn", text: "Senegal" }, { id: "cs", text: "Serbia" }, { id: "rs", text: "Serbia" }, { id: "sc", text: "Seychelles" }, { id: "sl", text: "Sierra Leone" }, { id: "sg", text: "Singapore" }, { id: "sk", text: "Slovakia" }, { id: "si", text: "Slovenia" }, { id: "sb", text: "Solomon Islands" }, { id: "so", text: "Somalia" }, { id: "za", text: "South Africa" }, { id: "kr", text: "South Korea" }, { id: "es", text: "Spain" }, { id: "lk", text: "Sri Lanka" }, { id: "sd", text: "Sudan" }, { id: "sr", text: "Suriname" }, { id: "sj", text: "Svalbard" }, { id: "sz", text: "Swaziland" }, { id: "se", text: "Sweden" }, { id: "ch", text: "Switzerland" }, { id: "sy", text: "Syria" }, { id: "tw", text: "Taiwan" }, { id: "tj", text: "Tajikistan" }, { id: "tz", text: "Tanzania" }, { id: "th", text: "Thailand" }, { id: "tl", text: "Timorleste" }, { id: "tg", text: "Togo" }, { id: "tk", text: "Tokelau" }, { id: "to", text: "Tonga" }, { id: "tt", text: "Trinidad" }, { id: "tn", text: "Tunisia" }, { id: "tr", text: "Turkey" }, { id: "tm", text: "Turkmenistan" }, { id: "tv", text: "Tuvalu" }, { id: "ug", text: "Uganda" }, { id: "ua", text: "Ukraine" }, { id: "ae", text: "United Arab Emirates" }, { id: "us", text: "United States" }, { id: "uy", text: "Uruguay" }, { id: "um", text: "Us Minor Islands" }, { id: "vi", text: "Us Virgin Islands" }, { id: "uz", text: "Uzbekistan" }, { id: "vu", text: "Vanuatu" }, { id: "va", text: "Vatican City" }, { id: "ve", text: "Venezuela" }, { id: "vn", text: "Vietnam" }, { id: "wf", text: "Wallis and Futuna" }, { id: "eh", text: "Western Sahara" }, { id: "ye", text: "Yemen" }, { id: "zm", text: "Zambia" }, { id: "zw", text: "Zimbabwe" } ], placeholder: "کشور مورد نظرتان را انتخاب نمایید", language: "fa", theme: "bootstrap", dir: "rtl", tokenSeparators: [',', ' '], multiple: false, templateResult:format, templateSelection: format, escapeMarkup: function (m) { return m; } }); }); </script>
function format(state) { var $state = $( '<span>' + state.text + ' <i class="' + state.id + ' flag"> ' + '</i></span>' ); return $state; };
<i class="ir flag"></i>