使用Ghostscript查看时PDF的方向

本文关键字:PDF 方向 Ghostscript 使用 | 更新日期: 2023-09-27 18:13:51

我的应用程序使用Ghostscript在图片框中显示pdf文件。我使用的pdf文件是带有文本层的扫描图像。由acrobatpro的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;
    }

使用Ghostscript查看时PDF的方向

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

首先要做的是直接从命令行使用Ghostscript,而不是在应用程序中使用。主要原因是你可以提供一个GS命令行,其他人可以使用,实验和评论。

我不能从你的代码中看到Ghostscript是如何调用的。

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

但是没有样例文件和命令行,我不能给你任何建议。