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