יום ראשון, 21 ביולי 2013

הפיכת מסמכי PDF לתמונה

פוסט זה נכתב לאחר שיטוט מסיבי באינטרנט למציאת פתרון, קודם אני אסביר את הבעיה:
ספריות רבות יוצרות מסמכי PDF, הבעייה שכדי שמסמך PDF יהיה תמונה הוא צריך להתרנדר כולו - וזה דבר שאין ספרייה שמטפלת בו. ספריות מפורסמות כמו iText או PDFsharp אינן יכולות לעשות זאת.
למרות ש PDFsharp מציעה את האפשרות הנחמדה לייצא מתוך הקובץ PDF תמונות.

ישנן ספריות חינמיות שטוענות שהן יכולות, אבל אני לא הצלחתי לעשות איתן כלום, כדו' 
 PDFClown, PdfRenderer. בנוסף התיעוד שלהם איננו מפותח מדי, וצריך לחפש פרוייקטים שמפורסמים באינטרנט כדי להבין כיצד לעבוד איתן.

ישנן ספריות שעולות מאות דולרים שמציעות פתרון, כמו soliddocuments
כמובן שלא בדקתי אותם.

וישנו פתרון נוסף, ברמת השרת. הספרייה GHOSTSCRIPT עושה זאת בצורה יפה.
נייבא לפרוייקט את הספרייה, מופיע בNuGet , ונעשה בקוד עצמו הפניה לספרייה עצמה gsdll32.dll
גם בספרייה זו ישנם מספר מוטציות של אותו קוד,שכולם מסמתמכות על אותו כותב.
הקוד שלי הצליח נמצא כאן או דוגמא נוספת כאן

 

יום שלישי, 9 ביולי 2013

קבלת קורדינאטות של מיקום בGoogle Map

לאחר שפתחנו חשבון מפתחים ב"גוגל מפתחים", ניכנס לAPI CONSOLE
נרשמנו, לאחר כמה זמן נקבל אישור ונקבל מספר מפתח, ובקטגוריהAPI ACCESS
נבחר את המחרוזת הארוכה שיש ב API key.
עכשיו ניתן להוסיף באתר שלנו תיבת חיפוש של מפות (במידה ונעבור את 25,000 חיפושים ביום או חצי מיליון בכלל, נצרך לשלם ולקבל חשבון עיסקי. די לצרה בשעתה...)
 
נוסיף את הסקריפט הזה באתר שלנו (החליפו את ה$$$$ ב api key)

 
<script src="https://maps.googleapis.com/maps/api/js?key=$$$$&sensor=false"></script>


וכל פעם תקבלו משתנה  google.maps שהוא מנהל את כל ההתנהלות שלכם מול הAPI של המפות.
(תוכלו לראות שנוספו לכם המון קבצי JS, הידד!)
נ.ב. אלו המשתנים והפונקציות שאנחנו מקבלים בעת קבלת האובייקט אצלנו 
google.maps

לצורך העניין בנינו תיבה שבה המחפש רושם את המקום שלו, ואנחנו רוצים להמיר אותה לקורדינטות - כדי שבפעם הבאה נוכל להציג למשתמש מפה, מבלי לחפש. ככה נוכל לחסוך את החיבור לגוגל והרבה תעבורת רשת. אם רוצים לקבל מפה קבועה.
 
var adress_map = $.trim($("#sMap").val());
var point = new Array("jb", "kb");

point = getCodeAddress(adress_map);
 
function getCodeAddress(address) {
var geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': address }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
  var point = new Array(results[0].geometry.location.jb, results[0].geometry.location.kb);
  return (point);
} else {
alert("אין אפשרות לקבל את הקודינאטות של המפה, תקלה: " + status)
}
});
}