亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C#:使用PDFSharp創建PDF表單(AcroForm)

C#:使用PDFSharp創建PDF表單(AcroForm)

C#
小怪獸愛吃肉 2022-08-20 16:19:24
如何將PDF表單元素添加到PDF摘要對象?PdfPage我知道AcroForm是表單可填寫的PDF元素的最佳格式,但是PDFsharp庫似乎不允許您創建AcroForm對象的實例。我已經能夠使用PDFsharp來生成簡單的文檔,如下所示:static void Main(string[] args) {    PdfDocument document = new PdfDocument();    document.Info.Title = "Created with PDFsharp";    // Create an empty page    PdfPage page = document.AddPage();    // Draw Text    XGraphics gfx = XGraphics.FromPdfPage(page);    XFont font = new XFont("Verdana", 20, XFontStyle.BoldItalic);    gfx.DrawString("Hello, World!", font, XBrushes.Black,        new XRect(0, 0, page.Width, page.Height), XStringFormats.Center);    // Save document    const string filename = "HelloWorld.pdf";    document.Save(filename);}但是我無法弄清楚如何添加可填寫的表單元素。我收集它可能會使用這種方法,但是你如何制作AcroForm?(由于像這樣的類似乎沒有公共構造函數)page.Elements.Add(string key, PdfItem item)PdfItemPdfTextFieldPDFHarp論壇和文檔對此沒有幫助,我在Stack Overflow上找到的最接近的答案是這個,它用錯誤的庫回答。那么,簡而言之:如何將上面的文本轉換為文本字段?"Hello World"是否可以在PDFsharp中執行此操作,或者我應該使用其他C#PDF庫?(我非常想堅持使用免費的 - 最好是開源的 - 庫)
查看完整描述

1 回答

?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

PdfSharp中的大多數類構造函數都是密封的,這使得創建新的pdf對象變得有點困難。但是,您可以使用它的類創建對象以添加低級pdf元素。


下面是創建文本字段的示例。


請參閱pdf技術規范,從第432頁開始,關于關鍵元素的定義 https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf


        public static void AddTextBox()

        {


            using (PdfDocument pdf = new PdfDocument())

            {

                PdfPage page1 = pdf.AddPage();


                double left = 50;

                double right = 200;

                double bottom = 750;

                double top = 725;


                PdfArray rect = new PdfArray(pdf);

                rect.Elements.Add(new PdfReal(left));

                rect.Elements.Add(new PdfReal(bottom));

                rect.Elements.Add(new PdfReal(right));

                rect.Elements.Add(new PdfReal(top));

                pdf.Internals.AddObject(rect);


                PdfDictionary form = new PdfDictionary(pdf);

                form.Elements.Add("/Filter", new PdfName("/FlateDecode"));

                form.Elements.Add("/Length", new PdfInteger(20));

                form.Elements.Add("/Subtype", new PdfName("/Form"));

                form.Elements.Add("/Type", new PdfName("/XObject"));

                pdf.Internals.AddObject(form);


                PdfDictionary appearanceStream = new PdfDictionary(pdf);

                appearanceStream.Elements.Add("/N", form);

                pdf.Internals.AddObject(appearanceStream);


                PdfDictionary textfield = new PdfDictionary(pdf);

                textfield.Elements.Add("/FT", new PdfName("/Tx"));

                textfield.Elements.Add("/Subtype", new PdfName("/Widget"));

                textfield.Elements.Add("/T", new PdfString("fldHelloWorld"));

                textfield.Elements.Add("/V", new PdfString("Hello World!"));

                textfield.Elements.Add("/Type", new PdfName("/Annot"));

                textfield.Elements.Add("/AP", appearanceStream);

                textfield.Elements.Add("/Rect", rect);

                textfield.Elements.Add("/P", page1);

                pdf.Internals.AddObject(textfield);


                PdfArray annotsArray = new PdfArray(pdf);

                annotsArray.Elements.Add(textfield);

                pdf.Internals.AddObject(annotsArray);


                page1.Elements.Add("/Annots", annotsArray);


                // draw rectangle around text field

                //XGraphics gfx = XGraphics.FromPdfPage(page1);

                //gfx.DrawRectangle(new XPen(XColors.DarkOrange, 2), left, 40, right, bottom - top);


                // Save document

                const string filename = @"C:\Downloads\HelloWorld.pdf";

                pdf.Save(filename);

                pdf.Close();


                Process.Start(filename);

            }

        }


查看完整回答
反對 回復 2022-08-20
  • 1 回答
  • 0 關注
  • 460 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號