ASP.NET MVC iTextSharp,是否有可能在代码隐藏中动态生成PDF文件?

时间:2018-06-02 10:44:55

标签: c# asp.net pdf model-view-controller itext

所以我目前正在使用iTextSharp生成PDF表单文档,到目前为止,我一直在这样做

  1. 创建Word文档并导出为PDF。然后使用Adobe Acrobat Reader等软件将Form Textbox添加到其中,并将属性或ID提供给文本框,例如"#StudentName"

  2. 之后,在代码隐藏中我会做这样的事情

    public void grabcutAlgo(Bitmap bit){
        Bitmap b = bit.copy(Bitmap.Config.ARGB_8888, true);
        Point tl=new Point();
        Point br=new Point();
        //GrabCut part
        Mat img = new Mat();
        Utils.bitmapToMat(b, img);
        Imgproc.cvtColor(img, img, Imgproc.COLOR_RGBA2RGB);
    
        int r = img.rows();
        int c = img.cols();
        Point p1 = new Point(c / 100, r / 100);
        Point p2 = new Point(c - c / 100, r - r / 100);
        Rect rect = new Rect(p1, p2);
        //Rect rect = new Rect(tl, br);
        Mat background = new Mat(img.size(), CvType.CV_8UC3,
                new Scalar(255, 255, 255));
        Mat firstMask = new Mat();
        Mat bgModel = new Mat();
        Mat fgModel = new Mat();
        Mat mask;
        Mat source = new Mat(1, 1, CvType.CV_8U, new Scalar(Imgproc.GC_PR_FGD));
        Mat dst = new Mat();
    
    
        Imgproc.grabCut(img, firstMask, rect, bgModel, fgModel, 5, Imgproc.GC_INIT_WITH_RECT);
        Core.compare(firstMask, source, firstMask, Core.CMP_EQ);
    
        Mat foreground = new Mat(img.size(), CvType.CV_8UC3, new Scalar(255, 255, 255));
    
        img.copyTo(foreground, firstMask);
    
        Scalar color = new Scalar(255, 0, 0, 255);
        Imgproc.rectangle(img, tl, br, color);
    
        Mat tmp = new Mat();
        Imgproc.resize(background, tmp, img.size());
        background = tmp;
        mask = new Mat(foreground.size(), CvType.CV_8UC1,
                new Scalar(255, 255, 255));
    
        Imgproc.cvtColor(foreground, mask, Imgproc.COLOR_BGR2GRAY);
        Imgproc.threshold(mask, mask, 254, 255, Imgproc.THRESH_BINARY_INV);
        System.out.println();
        Mat vals = new Mat(1, 1, CvType.CV_8UC3, new Scalar(0.0));
        background.copyTo(dst);
    
        background.setTo(vals, mask);
    
        Core.add(background, foreground, dst, mask);
        Bitmap grabCutImage = Bitmap.createBitmap(dst.cols(), dst.rows(), Bitmap.Config.ARGB_8888);
        Bitmap processedImage = Bitmap.createBitmap(dst.cols(), dst.rows(), Bitmap.Config.RGB_565);
        Utils.matToBitmap(dst, grabCutImage);
        dst.copyTo(sampleImage);
        imageView.setImageBitmap(grabCutImage);
        firstMask.release();
        source.release();
        bgModel.release();
        fgModel.release();
    }
    

    哪会加上" Dwight Schrute"生成PDF文档时,该值进入该文本框。

  3. 到目前为止,我的方法正在运行,因为模板是固定的,我的意思是我知道在表单/文档中有多少文本框,并且可以使用Adobe放置位置或设置属性。 但是,现在我必须将最初生成为Excel文件的文档转换为PDF。我现在面临的问题是,由于行数是动态的,可以说是100行,那么我以前的固定模板方法和逐个设置文本框将不再适用。

    是否有解决此问题的方法或方法?

    谢谢!

0 个答案:

没有答案