首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PDFNet尝试添加不起作用的文本

PDFNet尝试添加不起作用的文本
EN

Stack Overflow用户
提问于 2012-07-31 14:26:55
回答 1查看 1.3K关注 0票数 0

我基本上是在试用PDFNet并调整PDFNet的一个示例。代码如下:

代码语言:javascript
复制
 PDFNet.Initialize();

            // Relative path to the folder containing test files.
            string input_path = "../../../../TestFiles/";
            string output_path = "../../../../TestFiles/Output/";

            PDFDoc doc = new PDFDoc(input_path + "form1.pdf");
            for (int index = 1; index <= doc.GetPageCount(); index++)
            {
                Page page = doc.GetPage(index);
                ElementBuilder eb = new ElementBuilder();       // ElementBuilder is used to build new Element objects
                eb.Reset();         // Reset GState to default
                ElementWriter writer = new ElementWriter(); // ElementWriter is used to write Elements to the page  
                writer.Begin(page);

                // Begin writing a block of text
                string data = "Page " + index;
                Element element = eb.CreateTextRun(data, Font.Create(doc, Font.StandardType1Font.e_times_roman, true), 100.0);
                element.SetTextMatrix(10, 0, 0, 10, 100, 100);
                GState gstate = element.GetGState();
                gstate.SetTextRenderMode(GState.TextRenderingMode.e_stroke_text);
                gstate.SetStrokeColorSpace(pdftron.PDF.ColorSpace.CreateDeviceRGB());
                gstate.SetStrokeColor(new pdftron.PDF.ColorPt(1, 0, 0));

                writer.WriteElement(element);
                writer.End();
                writer.Dispose();  // save changes to the current page
            }

            doc.Save(output_path + "element_builder.pdf", SDFDoc.SaveOptions.e_linearized);
            doc.Close();

但问题是,element_builder.pdf中没有添加任何文本。它只是按原样复制,看起来与form1.pdf相同。有人能帮我吗?

这是指向PDFNet http://www.pdftron.com/pdfnet/downloads.html的链接

我使用的是64位版本的.Net 4.0

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-01 04:28:43

您似乎缺少对eb.CreateTextBegin()和eb.CreateTextEnd()的调用。你应该试试这样的东西:

代码语言:javascript
复制
        PDFNet.Initialize();

        // Relative path to the folder containing test files.
        string input_path = "../../../../TestFiles/";
        string output_path = "../../../../TestFiles/Output/";

        PDFDoc doc = new PDFDoc(input_path + "form1.pdf");
        ElementWriter writer = new ElementWriter();
        ElementBuilder eb = new ElementBuilder();
        for (int index = 1; index <= doc.GetPageCount(); index++)
        {
            Page page = doc.GetPage(index); 
            writer.Begin(page);
            eb.Reset();

            // Begin writing a block of text
            string data = "Page " + index;
            Element element = eb.CreateTextBegin(Font.Create(doc, Font.StandardType1Font.e_times_roman, true), 10.0);
            writer.WriteElement(element);
            eb.CreateTextRun(data);
            element.SetTextMatrix(10, 0, 0, 10, 100, 100);
            GState gstate = element.GetGState();
            gstate.SetTextRenderMode(GState.TextRenderingMode.e_fill_text);
            gstate.SetStrokeColorSpace(pdftron.PDF.ColorSpace.CreateDeviceRGB());
            gstate.SetStrokeColor(new pdftron.PDF.ColorPt(1, 0, 0));

            writer.WriteElement(element);
            writer.WriteElement(eb.CreateTextEnd());  
            writer.End();

        }
        writer.Dispose();
        eb.Dispose();
        doc.Save(output_path + "element_builder.pdf", SDFDoc.SaveOptions.e_linearized);
        doc.Close();

顺便说一句。向现有页面添加文本的一种可能更简单的方法是使用Stamper sample中所示的'pdftron.PDF.Stamper‘。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11734341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档