0

我的应用程序使用 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;
    }
4

2 回答 2

2

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

于 2014-07-21T22:00:07.013 回答
1

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

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

一般来说,Ghostscript 应该尊重/MediaBox(和可选/CropBox等)以及/Rotate页面的属性。

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

于 2014-07-21T07:09:30.880 回答