zoukankan      html  css  js  c++  java
  • covert pdf to png by .net core in linux environment

    在使用.net core进行跨平台编程的时候,经常要遇到一些平台兼容的问题。比如在开发环境,我们一般是在windows下面编程,单元测试,当开发测试通过之后,发布到linux上之后,就会发现有问题。比如最近同事在开发一个功能,其中涉及到要将pdf转换成图片的一个步骤。这个在.net里面有着非常多的成熟的工具可以转换,在java里面也同样有,但一旦用.net core然后发布至linux就不行。那么应该如何解决呢?

    1. 首先要改变一个开发的观点:即在做.net开发时,一定要找到对号入座的nuget包。比如上述的功能,一根筋想要找到这个nuget包,往往会让开发者失望。以往能找到对号入座的nuget包,只能说开发者的需求是普遍性的,如是不是普遍性的只能说自己的运气不错;

    2. 要有包容的心态:不再局限于.net的生态环境,linux环境下肯定有着非常丰富的可以满足某些功能的工具,比如这个pdf转图片,一搜索果然很多

       ImageMagick  convert简单的命令即可解决问题,还有ImageMagick工具使用的原生脚本语言,ghostscript。

    有了以上的准备,我们首先在linux环境下尝试执行ghostscrip进行转换,在网上搜索一个命令: gs -dBATCH -dNOPAUSE -r400 -sDEVICE=pngalpha  -sOutputFile="test.png" test.pdf, PDF转成PNG,nice work!

    我们最终还是要在.net core程序去实行, convert pdf to png。非常简单,用.net core 程序去执行linux 命令即可。

        var sdkVersion = string.Empty;
        var psi = new System.Diagnostics.ProcessStartInfo("dotnet", " -v");
        psi.RedirectStandardOutput = true;
        using (var process = System.Diagnostics.Process.Start(psi))
        {
            var output = process.StandardOutput.ReadToEnd();
            sdkVersion = output.Split('
    ')
                .Where(line => line.StartsWith(".NET Command Line Tools"))
                .FirstOrDefault();
        }
        return Content(sdkVersion);
    

      上面是简单地执行了,查看dotnet版本的命令

    换一下:

    var psi = new System.Diagnostics.ProcessStartInfo("ghostscript", "gs -dBATCH -dNOPAUSE -r400 -sDEVICE=pngalpha  -sOutputFile='test.png' test.pdf");


  • 相关阅读:
    9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路(转)
    Path Sum(参考别人,二叉树DFS)
    tcp/ip
    常见Unix指令
    Pascal's Triangle II
    Implement strStr()
    LeetCode总结
    从LLVM源码学C++(一)
    面试题:1到N中,1出现的次数
    面试题:数组划分成两个子数组,和的差值的绝对值最小
  • 原文地址:https://www.cnblogs.com/wikiz/p/11338939.html
Copyright © 2011-2022 走看看