트레이닝 센터

리포트 생성과 문서 변환

C1PDF컨트롤로 응용프로그램에서AcroForm의PDF파일 만들기와 지원

본문에서는 어떻게 C1PDF컨트롤을 사용하는지 소개합니다. 응용 프로그램에서 AcroForm의 PDF파일을 만들고 지원합니다.

C1PDF컨트롤의 경우, 문서파일에서 사용되는 모든 명령이 .NET Graphics유형의 명령과 유사합니다. 동시에 PDF for .NET컨트롤은 안전성, 압축, 요약, 하이퍼링크 및 첨부파일 등의 기능을 제공합니다.


C1PdfDocument 만들기

먼저, 도구상자에서 드래그하거나 코드를 사용하여 C1PdfDocument를 생성합니다. 생성코드는 다음과 같습니다. :

private C1.C1Pdf.C1PdfDocument _c1pdf = new C1.C1Pdf.C1PdfDocument();

그 다음, 내용을 PDF문서파일에 추가합니다. 이 때 사용하는 모든 명령은 WinForms의Graphics유형에서의 명령과 서로 유사합니다. 텍스트, 이미지, 선, 사각형, 타원, 부채꼴, 원호, 둥근 사각형, 다각형, Bezier 곡선 및 더 많은 것들을 추가할 수 있습니다. C1PdfDocument의DrawString, DrawImage, DrawLine등의 방법을 참고할 수 있습니다.


C1PDF의 AcroForms지원

AddField방법을 사용하여 Acrobat리스트 필드를 PDF파일에 추가할 수 있습니다. PDF for .NET컨트롤은 다음과 같은 필드유형을 지원합니다. : 텍스트박스, 체크박스, 라디오버튼, 푸시 버튼, 콤보박스, 리스트박스 및 서명필드

본문의Demo파일 중에 모든 유형에 대해 지원하는 코드가 있습니다.

예를 들어 텍스트 상자를 사용하여 PDF 파일에 텍스트 상자를 추가하는 경우 다음을 수행해야합니다.

먼저, 테스트 박스 필드를 만듭니다. 코드는 다음과 같습니다. :

	// text box field
            rc = new RectangleF(rc.X, rc.Y + rc.Height / 10, rc.Width / 3, rc.Height / 30);
            PdfTextBox textBox1 = RenderTextBox("TextBox Sample", fieldFont, rc);
            textBox1.BorderWidth = FieldBorderWidth.Thick;
            textBox1.BorderStyle = FieldBorderStyle.Inset;
            textBox1.BorderColor = Color.Green;

C1Report의 지정리포트 읽기

C1Report의 Load 방법을 통해 사용자는 읽을 보고서를 지정할 수 있습니다. 코드는 다음과 같습니다. :

// load C1Report with selected report
c1Report1.Load(doc, reportName);
c1Report1.Sections.Header.Visible = false;

그리고 텍스트 박스 필드를AddField방법을 사용하여 PDF문서파일에 추가합니다. 구체적인 코드는 다음과 같습니다. :


// add text box field for fields of the PDF document
        // with common parameters and default names.
        // 
        internal PdfTextBox RenderTextBox(string text, Font font, RectangleF rc, Color back, string toolTip)
        {
            // create
            string name = string.Format("ACFTB{0}", _textBoxCount + 1);
            PdfTextBox textBox = new PdfTextBox();

            // default border
            //textBox.BorderWidth = 3f / 4;
            textBox.BorderStyle = FieldBorderStyle.Solid;
            textBox.BorderColor = SystemColors.ControlDarkDark;

            // parameters
            textBox.Font = font;
            textBox.Name = name;
            textBox.DefaultText = text;
            textBox.Text = text;
            textBox.ToolTip = string.IsNullOrEmpty(toolTip) ? string.Format("{0} ({1})", text, name) : toolTip;
            if (back != Color.Transparent && !back.IsEmpty)
            {
                textBox.BackColor = back;
            }

            // add
            _c1pdf.AddField(textBox, rc);
            _textBoxCount++;

            // done
            return textBox;
        }
        internal PdfTextBox RenderTextBox(string text, Font font, RectangleF rc, Color back)
        {
            return RenderTextBox(text, font, rc, back, null);
        }
        internal PdfTextBox RenderTextBox(string text, Font font, RectangleF rc)
        {
            return RenderTextBox(text, font, rc, Color.Transparent, null);
        }

PDF문서파일 저장

마지막으로 응용프로그램에서 생성된 PDF파일을 저장할 수 있습니다. C1PdfDocument의 Save방법을 사용하여 IO.Stream에 저장하거나 파일 속에 저장합니다. 해당 방법은 다음과 같습니다. :


	//
        // 적요:
        //     Saves the Pdf document to a System.IO.Stream.
        public void Save(Stream stream);
        //
        // 적요:
        //     Saves the Pdf document to a file.     
        public void Save(string fileName);

본문에 첨부된Demo를 실행하려면, Form의 버튼을 클릭하여 다음과 같은PDF문서파일을 생성합니다. :

// add text box field for fields of the PDF document
        // with common parameters and default names.
        // 
        internal PdfTextBox RenderTextBox(string text, Font font, RectangleF rc, Color back, string toolTip)
        {
            // create
            string name = string.Format("ACFTB{0}", _textBoxCount + 1);
            PdfTextBox textBox = new PdfTextBox();

            // default border
            //textBox.BorderWidth = 3f / 4;
            textBox.BorderStyle = FieldBorderStyle.Solid;
            textBox.BorderColor = SystemColors.ControlDarkDark;

            // parameters
            textBox.Font = font;
            textBox.Name = name;
            textBox.DefaultText = text;
            textBox.Text = text;
            textBox.ToolTip = string.IsNullOrEmpty(toolTip) ? string.Format("{0} ({1})", text, name) : toolTip;
            if (back != Color.Transparent && !back.IsEmpty)
            {
                textBox.BackColor = back;
            }

            // add
            _c1pdf.AddField(textBox, rc);
            _textBoxCount++;

            // done
            return textBox;
        }
        internal PdfTextBox RenderTextBox(string text, Font font, RectangleF rc, Color back)
        {
            return RenderTextBox(text, font, rc, back, null);
        }
        internal PdfTextBox RenderTextBox(string text, Font font, RectangleF rc)
        {
            return RenderTextBox(text, font, rc, Color.Transparent, null);
        }


본문 Demo의 소스코드는 다음과 같습니다. :


샘플 다운로드



한국 그레이프시티 공식카페에서 기술지원을 받으실 수 있습니다.
이메일을 통해서도 기술지원을 받으실 수 있습니다.