1

私は基本的に PDFNet を試して、PDFNet のサンプルの 1 つを微調整しています。コードは次のとおりです。

 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へのリンクです。

.Net 4.0 に 64 ビット版を使用しています

4

1 に答える 1

2

eb.CreateTextBegin() および eb.CreateTextEnd() の呼び出しが欠落しているようです。次のようなことを試してみてください。

        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 サンプルに示すように「pdftron.PDF.Stamper」を使用することです。

于 2012-07-31T20:28:42.830 に答える