Alhamdulillah Bersyukur Kepada Allah yang telah memberi kita semuanya

imam's posts with tag: microsoft

What are tags? You can give your posts a "tag", which is like a keyword. Tags help you find content which has something in common. You can assign as many tags as you wish to each post.
View posts by people in your network with tag microsoft
Blog EntryC# project, Membuat Mail Merge dan PDF Online Oct 25, '07 5:44 AM
for everyone
Berikut merupakan sambungan dari postingan sebelumnya mengenai belajar C#, aku tuliskan tentang project Membuat mail merger online dan PDF converter dengan pilihan datasource XML ataupun EXCEL.

Ini merupakan project freelance yang saya kerjakan untuk scriptlancer.com
Membuat mail merge yang saya lakukan tidak dengan cara otomatisasi seperti biasa
sebab hal ini tidak memungkinkan untuk dokument template dalam bentuk HTML
maka saya menggunakan cara string replacement dan juga API text replacement
di di MSWORD dengan pemanggilan COM prosedure.

Membuat PDF dengan PDFCreator hasilnya lebih bagus karena bisa membuat PDF dari
berbagai macam dokument dengan mengeprintnya dengan PRogram asli misal MSWOrd
excel Image creator dan lain-lainnya, lagi pula tersedia conversi printer
ke format Image dan texts dan hebatnya lagi komponent ini opensource dan gratis.
Bila menggunakan PDF creator yang lain seperti itexts PDF tidak bisa untuk mengkonversi
 sembarang dokument yang sudah ada
(menkonversinya) PDf creator seperti ini hanya cocok untuk pembuatan PDF dinamis yang baru
(belum ada) , misalnya online PDF creator.

Pada waktu awal, saya gagal dalam step printer, 1x print selalu membuat hang dan
harus restart server dan kill PDF Printer serta MSWord yang ada di background
sebab itu membuat Hang dikarenakan karena Thread yang dibuat untuk mendeteksi agar
prosess wait sampai selesai sebelum mencetak berikutnya gagal dan terus menerus looping.
PRoses wait ini diperlukan sebab jika tanpa wait dan menunggu status printer ready
maka akan terjadi overload buffer memory dan pencetakan PDF gagal.

Kesulitan ini saya jumpai dengan pada waktu melakukan wait sampai prosedur handle
printer ready siap yang saya pisahkan kelasnya ternyata prosedur tersebut tidak dipanggil
oleh parent kelas pemanggil.


Oh iya script ini dilengkapi untuk melakukan compresing output beberapa file ke dalam
zip menggunakan library [ICSharpCode.SharpZipLib.Zip] dalam folderacak
ke dalam 1 zip file yang siap untuk didownload, dan juga dilengkapi dengan option file
downloader file zip tersebut.


Setelah melakukan beberapa kali percobaan:
1. menunggu status wait dengan  while(wordapp.BackgroundPrintingStatus!=0){ Thread.sleep(100); }
   --> hasilnya masih tidak berhasil karena ternyata status tersebut hanya untuk proses pencetakan
  msword yang dikirimkan ke PDFPrinter.

  Sedang status PDFPrinter untuk mengeprint sampai dengan selesai ternyata harus menggunakan
  contoh seperti pada COM object yang disertakan dalam contoh penggunaan PDF printer
  yaitu event On_printer ready , maka status kita set menjadi ready.


2. berasumsi dengan modal tersebut kemudian saya berhasil mencetak dokument PDF dengan tanpa menimbulkan
   overload lagi pada PDF printer maupun pada prosess background dari Server dan MSWord.


/***
.......berikut potongan coding saya ..............
......................
***/
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.IO.Compression;
using System.Xml;
using System.Xml.XPath;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Reflection;
using Microsoft.Office;
using Microsoft.Office.Core;
using System.Runtime.InteropServices;
using System.Data.Odbc;
using System.Data.OleDb;
using System.Diagnostics;
using ICSharpCode.SharpZipLib.Zip;
class RunProg{
  public RunProg()
  {
  }
  public void RunExecutable(string executable, string arguments)
  {
   ProcessStartInfo starter = new ProcessStartInfo(executable, arguments);
   starter.CreateNoWindow = true;
   starter.RedirectStandardOutput = true;
   starter.UseShellExecute = false;
   Process process = new Process();
   process.StartInfo = starter;
   process.Start();
   StringBuilder buffer = new StringBuilder();
   using (StreamReader reader = process.StandardOutput)
   {
    string line = reader.ReadLine();
    while (line != null)
    {
     buffer.Append(line);
     buffer.Append(Environment.NewLine);
     line = reader.ReadLine();
     Thread.Sleep(100);
    }
   }
   if (process.ExitCode != 0)
   {
    throw new Exception(string.Format(@"""{0}"" exited with ExitCode {1}. Output: {2}", executable, process.ExitCode, buffer.ToString())); 
   }
  }
}



/// Upload handler for uploading files.
public class Upload : IHttpHandler
{
    public Upload()
    {
    }

    #region IHttpHandler Members
    private HttpPostedFile htmltemplate;
    private string uploadpath;
    private string datasourcefile;
    private string datasourcetype;
    private string basepath;
    private DataSet sdataconf;
    private DataSet sdataset;
    private string outputtype;
    private string savein;
    private string loopingtags,starttag, closetag,  docinput;
    private bool debug;

    public bool IsReusable
    {
        get { return true; }
    }
   
}   
/***
.....................................sorry cut in here................
..........................................................................
***/



Untuk coding lengkap akan di publish dan dimuat di Ilmukomputer.com setelah artikel saya selesai diedit, mohon tunggu ya temen-temen, terutama yang mau segera belajar C#


Referensi:
0. GNU PDFCreator, pdf printer (download)
1. code project, reading excel datasheet.
2. code project, reading excel dengan datasource.
3. code project, reading xml dengan dataset.
4. code project, simple treading.
5. code project, run background process asp.
6. Programmtically Convert Documents to PDFs the Easy Way
7. perancis, pdf creator http://www.vbfrance.com/infomsg_PDFCREATOR-WORD-MSGBOX_911817.aspx#5
8. itext PDF creator
9. icharp ziplib

Berikut Kesan pertama mempelajari C#,
Waktu awal mau install geleng-geleng dengan ukuran MSDN dan Visual Studio yang mencapai 3GB untuk MS visual studio 2008 beta, ahirnya aku pake aja yang versi yang sedikit lebih kecil, sekitar 2GB +MSDN. pas udah install gileee bener.... ternyata programming C# begitu mudahnya dengan panduan yang keren abis dan Environtment Editor yang bener-bener gampang dan userfriendlu banget...ditambah code completion yang keren seperti pada delphi serta syntak coloring. berbeda banget dengan biasanya aku coding programming PHP dan HTML cuman bermodalkan notepad, ga begitu suka pake dreamweaver sebab lebih asik codingnya..lebih njlimet lebih asik dan bikin kerjaan bertambah...lho kok.
Kembali lagi ke MSDN dan Visual Studio 2005, Setelah memeriksa bidding di freelancer.com aku mencoba mencari freelance yang berkaitan dengan NET, alhamdulilah dapet 1 project membuat PDF coverter dan mail merger online, nah aku bidding aja dapet 200$ lumayan banget untuk yang baru belajar C#. dan huhuiii ahirnya setelah 1 minggu udah lancar nih coding C#nya udah bisa membuat page ASPX dan pake object DCOM serta Threading segala loooh, SQLDataset, create zip dan ada fitur upload file dll pada program buatanku ini ...waaah C# memang keren dan segitu mudahnya untuk dipelajari, mirip banget sama pemrograman java (dulu pernah blajar bwat applet-aplet java waktu java masih versi 1)...keliatannya Microsoft emang bener-bener serius dengan C# nya atau mungkin bisa dibilang juga serius menjiplak java. Tapi yang lebih keren dari C# ini, runningnya lebih cepet dan tidak lambat seperti ketika menggunakan JVM/JDK... hidup C# keren dan semoga segera di Opensourcekan dan Hidup juga Java... semoga java menjadi secepat kilat seperti C# ayooo semuanya majuu.... tar gw pelajarin semuanya yah, mana nih yang lebih prospek C# atau Java??? kita tunggu aja tanggal mainnya..... Berikutnya adalah postingan mengenai project Belajar C# punyaku

© 2008 Multiply, Inc.    About · Blog · Terms · Privacy · Corp Info · Contact Us · Help