美文网首页
使用C#创建pdf实例及开源库

使用C#创建pdf实例及开源库

作者: 价值投机168 | 来源:发表于2020-11-26 11:33 被阅读0次

使用的开源库名字叫PDFsharp
下载地址为:
PDFsharp

使用举例:
先下载好开源代码,拷贝例子代码,加引用,然后就能使用了。
就是简单的写字和画图(代码拷贝过去就能用):

class Program
{
    static void Main(string[] args)
    {
        PdfDocument document = new PdfDocument();
        document.Info.Title = "Created with PDFsharp";
        PdfPage page = document.AddPage();
        XGraphics gfx = XGraphics.FromPdfPage(page);

        System.Drawing.Text.PrivateFontCollection pfcFonts = new System.Drawing.Text.PrivateFontCollection();
        string strFontPath = @"C:/Windows/Fonts/msyh.ttf";//字体设置为微软雅黑
        pfcFonts.AddFontFile(strFontPath);


        XPdfFontOptions options = new XPdfFontOptions(PdfFontEncoding.Unicode, PdfFontEmbedding.Always);
        XFont font = new XFont(pfcFonts.Families[0], 15, XFontStyle.Regular, options);
       // gfx.DrawString("你好, 世界!", font, XBrushes.Black,new XRect(0, 0, page.Width, page.Height),XStringFormats.Center);

        List<int> cd = GetResult(100, 4);
       

        XPen pen = new XPen(XColors.Red,0.1);
        XBrush brush = new XSolidBrush(XColor.FromArgb(96, 182, 100));
        XBrush brush1 = new XSolidBrush(XColor.FromArgb(235, 74, 70));
        XBrush brush2 = new XSolidBrush(XColor.FromArgb(168, 0, 168));
        XBrush brush3 = new XSolidBrush(XColor.FromArgb(102, 153, 255));

        int y = 20;
        foreach (var item in cd)
        {
            gfx.DrawString(item.ToString(), font, XBrushes.Black, new XPoint(10, y));
            y = y + 20;
        }
        
       // gfx.DrawRoundedRectangle(brush, new XRect(20, 50, 100, 10), new XSize(1, 1));
        gfx.DrawRoundedRectangle(brush, new XRect(20, 150, 100, 5), new XSize(5, 5));
        gfx.DrawRoundedRectangle(brush1, new XRect(cd[0] + 20, 150, cd[1], 5), new XSize(0, 0));

        gfx.DrawRoundedRectangle(brush3, new XRect(cd[0] + 20 + cd[1], 150, cd[3] + cd[2], 5), new XSize(5, 5));
        gfx.DrawRoundedRectangle(brush2, new XRect(cd[0] + 20 + cd[1], 150, cd[2], 5), new XSize(0, 0));

        foreach (var item in cd)
        {
            Console.WriteLine(item);
        }
        
        byte[] arr = Convert.FromBase64String("iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAEgklEQVRIS7WXbYhUZRSAn3Pv/rClH0kUaSDOzp0pPyikXbMPiVQ0V1BYfxilOYuzSlL0gUUEpZmYZZFk1IabLllqQkrB7ihSCH1g+SvR2pl7Z1wVLCpBKgp23XvijHPtOjvrB+6+vy7ve+55zjnvOe97XuEKRz6fn+667lhVHQtMFpE71xU23AUcUeWYI5xW4bvOuR17rkSlXE4on8/PdF33YWCKyYrIaeCkqp5YV3j9VtAGhAZUGkCvAw4DOwbcuh3b57T/NpT+IcG+709xHOdhVZ2pqodUdfe5c+f8iRMn/lJLWWt3602o06LitIDOBoqOyHNb527ZW0u+JrhUKi0Lw/BxETniOM7uRCKx73KRia9ncm1NqvqeQKPAym3NHe9X/z8IHASBhXWVqn6YSqUG/XA1BizNZQ+IMgvllc55HWvi/14E9n1/gYi8BOz0PO+tq4EMJZvJZVejrEGZ3Tmv40AkdwHs+/5sEVkPfO553qvDAY10ZLra2hFdITowbdu8bd+XkzRa9H1/q4j86Xne08MJ/R+ezQHjB+rqHrBsL4ODIHgQ2BiG4ep0Ot01IuBcWxOqPwDPdDZ3bIrAG4Hk2bNnFzU2NvaPBNh0Zrrb9oOO7mzumCqlUumOMAwtzB3JZLI9Br0R+ASYU5m7H/i28v0oMN2sB+orcrZk82eABUAPkI870dq1bIWKtCMslCAInjBjVHVRKpUqxgRvA5qBt6siEBnUWwG3APZtYzxgNW9zW6ojZ4eM4p4E2sX3/fWO40xOJpPzqwQNfLtledW8eXUzcD3wZgUSB/9dy9sLSZbL/oxKj3m8DejzPG9FFeA+4JvK3AcV78YBy4B3gNYKOB7qbCVK24F/a+VKJpfNodxiHu+3vUulUmsvkVTmpY0G4KuKRysr4DjAjLUxAzB9i2P7X15Y2t22WdDF5rElzC7P8zZfAmwK08DdQDwyLwPRYWM30xLASsbK8yNgkHGZ7rZNoI8ZeJddc57nPV9jL23vzDDzOPo2MUuwaqWRt39Uwj0EOPsFwlgDvwGM8zzPLof4iJdT3LNa4MjbaG/tvLdQx0uwrDuTyx5F+cn2+FkRWdjf3z9/woQJVoMjNs6XU90JVdqlWCzOUtUNYRi+m06nO0eMamUQP0AMVCwWd4dh6PT19T0yadKkvpGCX3RkGiQIguXA8jAMX0un05+NBNi6kkGXRKFQaLAWR0TO1NfXLx4zZszvww1f2p09LDB6wK2798K1aBDf95eIyFMiciiZTNr5PWwjaoEckZao+buo9QmCwEqg2XXdVYlE4uBwkDNd2TUIq6ubvlrNnjV4TdYYeJ736bXAo5bnss1eBCkUCi2O47wIfAls9zzv6NUYUE6kUNciPFTd5EV6hmzoS6XS1DAMX7BTDTDwQdd19yUSiV9rGTGooVd6hIFM1NxV/3PJJ8zx48dvCMPQbpoZqjqt958Tpz4+tfMeRH4Ezas9aES9cgOg5SZg1DU/YaotLBaLTXtO733y2F89o86/lcpXpBneC9IL2ovw9ZU+2v4DnerYhytiiykAAAAASUVORK5CYII=");
       
        MemoryStream ms = new MemoryStream(arr);
        XImage im = XImage.FromStream(ms);

        gfx.DrawImage(im, 130, 155 - im.Height * 0.7 / 2, im.Width *0.7, im.Height*0.7);


        XPen pen2 = new XPen(XColors.LightGray, 2);
        gfx.DrawArc(pen2, 300, 200, 20, 20, 0, 360);
        pen2.Color = XColors.Red;
        gfx.DrawArc(pen2, 300, 200, 20, 20, -90, 180);

        XFont font2 = new XFont(pfcFonts.Families[0], 6, XFontStyle.Regular, options);
        gfx.DrawString("50%", font2, XBrushes.Black, new XRect(300, 200, 20, 20), XStringFormats.Center);

        document.Save("d:\\test.pdf");

        Console.WriteLine("over");

        Console.Read();
    }

    ///<summary>
    /// count个随机数之和为定值sum,并返回count个数据的数值的集合
    ///</summary>
    ///<param name="sum">随机数之和</param>
    ///<param name="count">count个随机数</param>
    ///<returns>count个随机数的数值集合</returns>
    static List<int> GetResult(int sum, int count)
    {
        int[] array = Enumerable.Range(0, sum).ToArray();
        List<int> result = new List<int>(count);
        int remain;
        while (true)
        {
            remain = sum;
            while (result.Count < count - 1)
            {
                int avg = (remain / (count - result.Count));
                //根据鸽笼原理,必须有一个值在范围
                //avg + Environment.TickCount % (remain - avg)之内
                int value = array[avg + Environment.TickCount % (remain - avg)] / 2;
                result.Add(value);
                remain -= value;
            }
            result.Add(sum - result.Sum());

            //如果都不相同,表明取值成功,否则重新取值
            if (result.Distinct().Count() == result.Count)
            {
                break;
            }
            else
            {
                result.Clear();
            }
        }
        return result;
    }
}

相关文章

网友评论

      本文标题:使用C#创建pdf实例及开源库

      本文链接:https://www.haomeiwen.com/subject/ojuaiktx.html