使用 ghostscript 将 Postscript 转换为文本文件

Posted

技术标签:

【中文标题】使用 ghostscript 将 Postscript 转换为文本文件【英文标题】:Convert Postscript to Text file using ghostscript 【发布时间】:2016-01-02 09:19:33 【问题描述】:

我的客户希望我完成一项任务。每当我从浏览器打印ctrl+P 时,它都会自动将该内容转到sql数据库。

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

我真正的问题是我可以将这个帖子脚本文件转换为文本或阅读它们并将文本保存到数据库中吗? 或者有没有更好的方法来完成这项任务?

Ghostscript 是将后记转换为文本或 pdf 的替代和 ow-some 功能。但是,我对文档以及如何执行他们的命令一无所知。

_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 文件中。

【问题讨论】:

【参考方案1】:

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

string inputFile = @"E:\gss_test\test_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_test\output\test_piped_output.pdf", rawDocumentData);
            //
        
        catch (Exception ex)
        
            Console.WriteLine(ex.Message);
        
        finally
        
            gsPipedOutput.Dispose();
            gsPipedOutput = null;
        
  

这很容易读取后记文件:)

【讨论】:

@Sivajith 请检查此***.com/questions/25424816/…

以上是关于使用 ghostscript 将 Postscript 转换为文本文件的主要内容,如果未能解决你的问题,请参考以下文章

将 ImageMagick 和 GhostScript 与 nuget 一起使用

ImageMagick 中 GhostScript 的文件路径

使用 Ghostscript 将 TIFF 转换为 PDF

使用 ghostscript 将 .ps 转换为 .pcx

使用 PHP(ghostscript) 将 PDF 转换为图像耗时太长

使用 ghostscript 将 PDF 转换为 TIFF 但不将文件写入磁盘