解决 在屏幕上显示Pdf的最佳方法?

达尔斯基

活跃的成员
已加入
2020年6月3日
留言内容
40
编程经验
Beginner
令人震惊的是,有关此方面的信息远没有您想像的那么多。我需要在屏幕上将pdf显示为图像。希望大多数时候它们将是干净的矢量,但是有时它们将被栅格化。

PDFSharp似乎是开源解决方案。为了我的目的,我会将它们视为图像。我不想要带有工具的Adobe 上一页iew窗口。我只想真正显示为图像;单像素粗线。

PDF Sharp没有提供足够多的信息 主页-PDFsharp和MigraDoc Wiki.

另一个十年的解决方案 在WPF应用中使用Adobe Reader 但是我想我宁愿使用PDF Sharp。

有人知道我最好的路线是什么吗?我不敢相信在这个基本主题上没有不错的youTube教程/文章。也许因为如此重要,开发人员还没有写出像样的文章?
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
因此,基本上,您希望矢量图形用于绘制线条,而文本块用于文本。您将如何确定文本块是恰好接近图形实体的文本还是实际上是与图形实体相关联的标注的文本?自从我阅读PDF规范至今已有几十年了-在Adobe公开之前。我不记得那时有什么区别的方法。也许现在可以买到吗?

无论如何,第一个问题是PDF是否包含位图或矢量图形。如果是位图,则需要进行一些图像处理(也许使用OpenCV?)以将矢量线从位图中取出。显然,如果PDF已经包含矢量,则需要使用它们。然后,您还需要提取文本。一些OCR(也许使用Tesseract?)用于位图,或者仅获取矢量的文本块。

如您所说,一旦有了这些,就可以进行缩放,旋转和其他变换,只是线性代数。线条将按照您希望的渲染方式进行渲染:1像素宽度的线条,或者根据需要制作精美的滚动作品。

RE:单像素线。您可能知道这一点,但是大多数现代渲染器都不绘制真正的单像素线。为了使线条在显示器上看起来更好,特别是当线条是对角线或弯曲时,它们使用了抗锯齿功能,可以使用2-5像素的不同阴影来绘制从一个光栅行/列到下一个光栅行的单边。 。
 

达尔斯基

活跃的成员
已加入
2020年6月3日
留言内容
40
编程经验
Beginner
因此,基本上,您希望矢量图形用于绘制线条,而文本块用于文本。您将如何确定文本块是恰好接近图形实体的文本还是实际上是与图形实体相关联的标注的文本?自从我阅读PDF规范至今已有几十年了-在Adobe公开之前。我不记得那时有什么区别的方法。也许现在可以买到吗?

我以前从未显示过pdf,但您说的文字是不同的实体/元素。我只浏览了Adobe规范手册,但是文本绝对可以与图形元素区分开。不确定您所说的是什么?也许您指的是评论。但是,我对此不太担心,因为该文本将用于批处理,我可以轻松地对此程序/标志/通知丢失重要文本。

John唯一需要做的就是缩放和转换,他们会认为其中大多数都是内置的。我很确定pdfSharp会这样做。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
不确定您所说的是什么?也许您指的是评论。
是。但是通常情况下,它会是一个文本框,并且该文本框中有一条线指向或附加到图形元素。
 

达尔斯基

活跃的成员
已加入
2020年6月3日
留言内容
40
编程经验
Beginner
花了大部分的时间做进一步的研究,我在开始的帖子中还不太清楚 &对此表示歉意。主要原因是我正在学习; 在WPF应用中使用Adobe Reader 是一篇很棒的文章&因为我想显示pdf而不丢失文字,&可以访问各个层,这将是很棒的。

本文规定Windows控件窗体必须在WPF中显示,因为它需要Active-X控件才能使用WindowsHostForm元素。 我的问题是-由于该文章已有8年历史了-仍然需要插入Windows Control Form。无法安装WPF用户控件或一种更现代的方法来完全消除Windows窗体&该应用程序完全是WPF的吗?
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
是的,它仍然是必需的。 WPF不具有本机ActiveX支持,但WinForms具有。由于WPF可以承载WinForms控件,因此可以在WPF中获得ActiveX控件。

如果您不想这样做,则必须提供支持WPF中的ActiveX控件所需的所有基础结构。如果ActiveX控件不必与外部窗口进行交互,这确实很容易(如果我没记错的话,只有3个或4个接口可以实现),但是当需要剪贴板和菜单交互时,它会变得越来越困难。
 
Last edited:
最佳 底部