使用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;
}
我不确定我是否应该回答我自己的问题,但是通过更新到1.1.8版本可以解决这个问题。感谢HABJAN。非常感谢。
首先要做的是直接从命令行使用Ghostscript,而不是在应用程序中使用。主要原因是你可以提供一个GS命令行,其他人可以使用,实验和评论。
我不能从你的代码中看到Ghostscript是如何调用的。
Ghostscript通常应该尊重页面的/MediaBox
(以及可选的/CropBox
等)和/Rotate
属性。
但是没有样例文件和命令行,我不能给你任何建议。