使用重影脚本将Postscript转换为Text文件



我的客户希望我完成一项任务。也就是说,每当我从浏览器打印CCD_ 1时,它都会自动将内容转移到sql数据库中。

现在,让我来解释一下我为实现这一目标所做的努力。通常是打印机PlusPlus,它是第三方工具。它添加了虚拟打印机并将文件PS打印到临时目录中,这样我就可以读取该postscript文件的内容并将其保存到数据库中。

我真正的问题是,有什么东西可以让我将这个后脚本文件转换为文本,或者读取它们并将文本保存到数据库中吗?或者有更好的方法来完成这项任务吗?

Ghostscript是将postscript转换为文本或pdf的替代功能。但是,我对文档以及如何执行它们的命令一无所知。

_viewer.Interpreter.RunFile("C:\PrinterPlusPlus\Temp\ankit_SONY-VAIO_sony_20151227_185020_3.ps");
            GhostscriptPngDevice dev = new GhostscriptPngDevice(GhostscriptPngDeviceType.Png16m);
            dev.GraphicsAlphaBits = GhostscriptImageDeviceAlphaBits.V_4;
            dev.TextAlphaBits = GhostscriptImageDeviceAlphaBits.V_4;
            dev.ResolutionXY = new GhostscriptImageDeviceResolution(96, 96);
            dev.InputFiles.Add(@"C:\PrinterPlusPlus\Temp\ankit_SONY-VAIO_sony_20151227_185020_3.ps");
            dev.OutputPath = @"C:\PrinterPlusPlus\Temp\ankit_SONY-VAIO_sony_20151227_185020_3.txt";
            dev.Process();
            _preview.Activate();

我试过了,但似乎不起作用,并将ASCII文本添加到txt文件中。

我发现ghostscript有点令人困惑。但是,我从这里找到了解决方案

string inputFile = @"E:gss_testtest_postscript.ps";
    GhostscriptPipedOutput gsPipedOutput = new GhostscriptPipedOutput();
    // pipe handle format: %handle%hexvalue
    string outputPipeHandle = "%handle%" + int.Parse(gsPipedOutput.ClientHandle).ToString("X2");
    using (GhostscriptProcessor processor = new GhostscriptProcessor())
    {
        List<string> switches = new List<string>();
        switches.Add("-empty");
        switches.Add("-dQUIET");
        switches.Add("-dSAFER");
        switches.Add("-dBATCH");
        switches.Add("-dNOPAUSE");
        switches.Add("-dNOPROMPT");
        switches.Add("-sDEVICE=pdfwrite");
        switches.Add("-o" + outputPipeHandle);
        switches.Add("-q");
        switches.Add("-f");
        switches.Add(inputFile);
        try
        {
            processor.StartProcessing(switches.ToArray(), null);
            byte[] rawDocumentData = gsPipedOutput.Data;
            //if (writeToDatabase)
            //{
            //    Database.ExecSP("add_document", rawDocumentData);
            //}
            //else if (writeToDisk)
            //{
            //    File.WriteAllBytes(@"E:gss_testoutputtest_piped_output.pdf", rawDocumentData);
            //}
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        finally
        {
            gsPipedOutput.Dispose();
            gsPipedOutput = null;
        }
  }

这可以很容易地读取postscript文件:)

最新更新