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

达尔斯基

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

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

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

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

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

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,928
地点
英国
编程经验
10+

达尔斯基

活跃成员
已加入
2020年6月3日
留言内容
40
编程经验
Beginner
感谢Sheepings,您完全正确;那里有很多结果。但我担心的是它是如何完成的;将pdf转换为图像,然后使用它?

理想情况下,我要使用单线像素进行测量。

好吧,我可能会看 图像魔术 now I think.
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,533
地点
弗吉尼亚州切萨皮克
编程经验
10+
如果将其用于测量,您是否知道要在其上显示图像的目标机器的像素间距是多少?您可以拥有只有15个的1600x1200屏幕"对角线与60显示的另一个1600x1200屏幕" projector.
 

达尔斯基

活跃成员
已加入
2020年6月3日
留言内容
40
编程经验
Beginner
很好,谢谢跳伞运动员。用户将不得不画几条线。一个用于垂直刻度,另一个用于水平刻度。将所有测量结果存储在阵列/数据库中,并相应地将其缩放为线性代数&我猜想矩阵数学。我必须参考变焦。或类似的东西&所有的测量将相应地缩放。

我正在基于1920 x1080px设计它。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,928
地点
英国
编程经验
10+
我正在基于1920 x1080px设计它
嗯,除非我在这里缺少明显的东西?为什么?

为什么不获取用户的屏幕分辨率并计算出来呢?

假设每个人都会使用这样的分辨率似乎是一个坏主意。笔记本电脑用户,平板电脑用户等又如何呢?

您针对的是什么操作系统?
 

达尔斯基

活跃成员
已加入
2020年6月3日
留言内容
40
编程经验
Beginner
谢谢Sheepings,是的,这样会更好。老实说,这对我来说只是一个工具,可以使我做得更好。它已发展成一种困扰。如您所知,我的知识非常有限&这将是我用C#编写的第一个应用程序。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,928
地点
英国
编程经验
10+
是的,我知道。好吧,如果有什么我们可以帮助您创建的。让我们知道。 :)
 

约翰·H

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
1,049
地点
挪威
编程经验
10+
我使用Ghostscript.Net已有一段时间,但似乎在2016年停产了,还存在其他问题。然后,为了寻找替代产品,我尝试了(Image)Magick.Net,但对处理速度非常不满意,我认为这更多地针对图像处理。然后我发现 Docnet.Core 2.1.2 这非常快,它是Chrome浏览器中使用的Google pdfium开源PDF生成和呈现库的包装。
 

达尔斯基

活跃成员
已加入
2020年6月3日
留言内容
40
编程经验
Beginner
约翰出色的意见,非常感谢。好吧,Docnet.Core 2.1.2先生,我在看!

最好将其保留为pdf,因为在我很幸运的地方,仍然有文本(未栅格化)的文档,那么我真的可以保留此文本,以免用户不得不重新输入此数据。

编辑-Docnet.Core上有任何用户手册吗?
 
Last edited:

约翰·H

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
1,049
地点
挪威
编程经验
10+
如果您认为这很困难,那么至少对于我来说我并不这么认为。这是该示例的简短版本:
C#:
using (var docReader = DocLib.Instance.GetDocReader(@"D:\test.pdf", new PageDimensions(1080, 1920)))
using (var pageReader = docReader.GetPageReader(0)) // 0 is first page
{
    var rawBytes = pageReader.GetImage();
    var bmp = new Bitmap(pageReader.GetPageWidth(), pageReader.GetPageHeight(), PixelFormat.Format32bppArgb);
    AddBytes(bmp, rawBytes);
    pictureBoxPageView.Image = bmp;
}
可以从其示例中复制AddBytes方法。
 

达尔斯基

活跃成员
已加入
2020年6月3日
留言内容
40
编程经验
Beginner
谢谢约翰,这是最有帮助的。理想情况下,如果我能"stitch"pdf在一起。我的意思是将另一个图像显示在屏幕上&将其添加到屏幕上已经存在的图像上,同时可以调整其大小。

原因是我们收到了房屋开发的蓝图,分布在几页上。
 

达尔斯基

活跃成员
已加入
2020年6月3日
留言内容
40
编程经验
Beginner
谢谢约翰,矢量pdf呢?当我测量时,我们真的可以注意到它是否为栅格化的pdf。我认为必须是相同的Graphics.DrawImage。就像您具体说的位图一样,您只需要担心一点,所以我太谨慎了。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,533
地点
弗吉尼亚州切萨皮克
编程经验
10+
原因是我们收到了房屋开发蓝图,分布在几页上
我希望这将作为地理测量师数据文件发送,而不是由原始测量师数据制成的PDF格式发送。奇怪的。
 

达尔斯基

活跃成员
已加入
2020年6月3日
留言内容
40
编程经验
Beginner
我希望这将作为地理测量师数据文件发送,而不是由原始测量师数据制成的PDF格式发送。奇怪的。

恰恰是跳伞运动员,我们面临的问题是绝大多数客户不会发送此数据。我与拒绝发送CAD drg的客户进行了交谈,因为他们尽管进行了任何更改都会影响他们的设计&破坏整个项目,哈哈哈哈。这就是我们要面对的!
他们也不愿发送原始数据,因为它们将对模型中的任何不正确之处负责。因此,他们宁愿客户通过从平面2D pdf多余地重新生成数据来承担全部风险。疯了吧!情况将不再如此,年轻的雄鹿将升任高级职位&事情会改变,但这是目前的规范。


With the libraries you get images (bitmaps) from pdf pages. 有位图时,您可以do regular graphics operations with them.
我过去使用过PDF格式的软件,能够缩放&改变它的大小,位置&旋转等,同时将文本放在不同的图层上&用drg改变它。不栅格化文本&将其保留为可以编辑的文本&容易选择。真是太棒了!如果将pdf转换为位图,那么文本是否不会转换为栅格?
我还使用了其他软件来显示带有单像素行的pdf。这是非常出色的。我很想利用过去使用过的各种软件的优点来创建自己的软件;没有负面影响。
 
最佳 底部