3

C# を使用して自動的に入力したい PDF がいくつかあります。iTextSharp については知っていますが、ビジネスで使用するためのライセンスの問題については確信が持てず、別の解決策を見つけたいと考えています。

基本的に、私は PDF を開き、フィールドを指定 (またはテキスト ボックスの座標を指定) し、テキスト (およびおそらく小さな画像?) を挿入できるようにしたいと考えています。次に、pdfをマージして保存する必要があります。

ライセンスを購入したり心配したりする必要がない場合に、これを達成するための良い方法について何か提案はありますか?

4

3 に答える 3

4

iTextSharp の利点が何であるかはわかりませんが、PDFSharp を使用してこれまで完全に機能しているソリューションを見つけまし! ドキュメントはPDFSharpのライトサイドに少しあるように見えるので、このスレッドも非常に役立つことがわかりました...

これが誰かを助けるなら、ここに私のサンプルプログラムがあります:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using PdfSharp.Fonts;
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
using PdfSharp.Pdf.AcroForms;

namespace PDFSharpTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void goButton_Click(object sender, EventArgs e)
        {
            //TestPDF();  //uncomment this to find out whether acroform will work correctly         

            //open file
            PdfDocument pdf = PdfReader.Open(@"YOURFILEPATHandNAME", PdfDocumentOpenMode.Modify);

            //fix some odd setting where filled fields don't always show                   SetupPDF(pdf);

            //find and fill fields
            PdfTextField txtEmployerName = (PdfTextField)(pdf.AcroForm.Fields["txtEmployerName"]);
            txtEmployerName.Value = new PdfString("My Name");

            PdfTextField txtEmployeeTitle = (PdfTextField)(pdf.AcroForm.Fields["txtEmployeeTitle"]);
            txtEmployeeTitle.Value = new PdfString("Workin'");

            PdfCheckBoxField chxAttached = (PdfCheckBoxField)(pdf.AcroForm.Fields["chxAttached"]);
            chxAttached.Checked = true;

            //save file
            pdf.Save(@"NEWFILEPATHandNAMEHERE");
        }

        private void SetupPDF(PdfDocument pdf)
        {
            if (pdf.AcroForm.Elements.ContainsKey("/NeedAppearances") == false)
            {
                pdf.AcroForm.Elements.Add("/NeedAppearances", new PdfSharp.Pdf.PdfBoolean(true));
            }
            else
            {
                pdf.AcroForm.Elements["/NeedAppearances"] = new PdfSharp.Pdf.PdfBoolean(true);
            }
        }

        private void PDFTest()
        {
            OpenFileDialog ofd = new OpenFileDialog();
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                PdfDocument _document = null;
                try { _document = PdfReader.Open(ofd.FileName, PdfDocumentOpenMode.Modify); }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "FATAL");             //do any cleanup and return             
                    return;
                }
                if (_document != null)
                {
                    if (_document.AcroForm != null)
                    {
                        MessageBox.Show("Acroform is object", "SUCCEEDED");
                        //pass acroform to some function for processing          
                        _document.Save(@"C:\temp\newcopy.pdf");
                    }
                    else
                    {
                        MessageBox.Show("Acroform is null", "FAILED");
                    }
                }
                else
                {
                    MessageBox.Show("Unknown error opening document", "FAILED");
                }
            }
        }
    }
}
于 2012-10-19T21:03:26.017 に答える
1

これは無料のオープン ソース ソリューションです: SharpPDF

しかし、正直なところ、iTextSharp はおそらく最高のものです。

于 2012-10-19T17:55:23.303 に答える
0

あなたのタスクのためにDocotic.Pdfライブラリを試すかもしれません。ライブラリは無料ではありませんが、おそらく心配する必要はありません (ライセンスに関して)。

オンラインで入手できるサンプルを次に示します。

Forms and Annotations グループの他のサンプルも、あなたの場合に役立つことが証明される可能性があります。

免責事項: 私はライブラリのベンダーで働いています。

于 2012-10-19T20:16:53.963 に答える