使用Ghostscript查看时PDF的方向

时间:2014-07-20 20:34:39

标签: c# orientation ghostscript ghostscript.net

我的应用程序使用Ghostscript在图片框中显示PDF。我使用的PDF是带有文本图层的扫描图像。由Acrobat Pro的OCR功能创建。此OCR功能根据文本方向自动设置方向。当页面显示在图片框中时,此信息将丢失。它只是以纵向模式显示每个页面。

Ghostscript是否有办法访问PDF的这个属性并在图片框中以正确的方向显示它?

public Form1()
    {
        InitializeComponent();
        _viewer = new GhostscriptViewer();
        _viewer.DisplaySize += new GhostscriptViewerViewEventHandler(_viewer_DisplaySize);
        _viewer.DisplayPage += new GhostscriptViewerViewEventHandler(_viewer_DisplayPage);
        NumberOfPagesToExtract = 1;
        _viewer.Open("NoFile.pdf", _gsVersion, true);
    }

    void _viewer_DisplaySize(object sender, GhostscriptViewerViewEventArgs e)
    {
        pictureBox1.Image = e.Image;
    }

    void _viewer_DisplayPage(object sender, GhostscriptViewerViewEventArgs e)
    {
        pictureBox1.Invalidate();
        pictureBox1.Update();
        currentPageNumber = _viewer.CurrentPageNumber;
        LastPageNumber = _viewer.LastPageNumber;
        lblTotalNmbPages.Text = " / " + LastPageNumber.ToString();
        txtCurrentPgNmbr.Text = currentPageNumber.ToString();

    }

打开文件的代码:

 private void btnOpenPdfGhostScript_Click(object sender, EventArgs e)
    {
        OpenFileDialog ofd = new OpenFileDialog();
        ofd.Title = "Open PDF file";
        ofd.Filter = "PDF, PS, EPS files|*.pdf;*.ps;*.eps";

        if (ofd.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
        {
            btnCLose_Click(this, null);
            _viewer.Open(ofd.FileName, _gsVersion, true);
            currentFilePath = ofd.FileName;
            currentPageNumber = _viewer.CurrentPageNumber;
            LastPageNumber = _viewer.LastPageNumber;
            lblCurrentFIle.Text = ofd.FileName;   //System.IO.Path.GetFileName(ofd.FileName);
            if (backgroundWorker1.IsBusy != true) backgroundWorker1.RunWorkerAsync();
        }
        currentPageNumber = 1;
        progressBar1.Value = 0;
    }

2 个答案:

答案 0 :(得分:2)

我不确定是否应该回答我自己的问题,但问题是通过更新到1.1.8版来解决的。感谢HABJAN。非常感谢。

答案 1 :(得分:1)

要做的第一件事是直接从命令行使用Ghostscript,而不是在应用程序中。主要原因是您可以提供其他人可以使用,试验和评论的GS命令行。

我无法从您的代码中看到如何调用Ghostscript。

Ghostscript通常应该尊重/MediaBox(以及可选的/CropBox等)以及页面的/Rotate属性。

但是如果没有示例文件和命令行,我无法给您任何建议。