使用C#WinForm在PDF上绘制形状
我已经在这方面寻求帮助很久了。如果这里已经有答案,我就找不到了。我在Windows窗体上使用C# 我正在尝试创建一个简单的程序,允许我打开PDF,展平其中的任何层,然后,每次单击鼠标,画一个圆 以每个圆圈为中心,我需要一个数字,从“1”开始,按时间顺序递增到无穷大(可能是1,可能是15000) 最后,我需要能够保存并打印最终结果 我还需要补充其他一些东西,但如果有人能让我开始做这件事,我应该能够自己解决其余的问题 我已经可以导入.pdf了。然而,我发现的任何用于创建透明图层的图坦卡蒙都不允许我看到后面的pdf。我甚至需要这个透明层,还是可以直接在pdf上绘制?我要解决的第二大问题是如何创建圆圈,无论我选择在哪里单击鼠标,圆圈的数量都会按时间顺序递增 提前感谢您的帮助 请参见下图了解其外观使用C#WinForm在PDF上绘制形状,c#,pdf,shapes,C#,Pdf,Shapes,我已经在这方面寻求帮助很久了。如果这里已经有答案,我就找不到了。我在Windows窗体上使用C# 我正在尝试创建一个简单的程序,允许我打开PDF,展平其中的任何层,然后,每次单击鼠标,画一个圆 以每个圆圈为中心,我需要一个数字,从“1”开始,按时间顺序递增到无穷大(可能是1,可能是15000) 最后,我需要能够保存并打印最终结果 我还需要补充其他一些东西,但如果有人能让我开始做这件事,我应该能够自己解决其余的问题 我已经可以导入.pdf了。然而,我发现的任何用于创建透明图层的图坦卡蒙都不允许我看
您可以使用Atalasoft的DotImage/DotPdf/DotAnnotation软件包(免责声明:直到3年前我一直在开发这些产品)。有很多方法可以做到这一点。如果您不关心标记是否是注释,则可以创建具有自定义外观的注释,并将每个注释添加到文档中。 如果您希望将数字添加到文档中,则可以直接使用DotPdf将内容附加到任何页面的内容流中 如何做到这一点,你自己。祝你好运(说真的,这不是一个容易解决的问题)。 要将新内容放入现有页面,您首先(至少)要做到以下几点: 首先,让我们谈谈PDF渲染模型: PDF使用一点非图灵完整RPN语言将内容放置在页面上。给定页面具有一个或多个代码流,这些代码流被执行以呈现页面。如果你想在上面添加内容,你需要最后渲染(还有其他更复杂的方法,但这已经足够了)。这意味着您要么附加到现有的内容流(不推荐),要么利用PDF页面上可以有任意数量的内容流这一事实。创建一个新流并添加代码以呈现所需的内容。 我会提前警告您,呈现文本是非常重要的,尤其是当您必须嵌入字体或使用unicode编码时。我还要警告您,PDF中没有“圆”原语。你必须用贝塞尔曲线来近似它。 我对自己的懒惰很好学,所以我创建了抽象,以便更容易正确地创建内容流。例如,我创建了一个名为“绘图曲面”的类,我可以告诉它“将绘图样式设置为此”、“在此处放置“形状”、“在此处绘制文本”等等。当被告知渲染时,它将生成匹配的PDF渲染程序。除此之外,我还有另一个抽象,它由一个更高级别对象的绘图列表和绘图列表组成,当渲染时,该列表将写入绘图表面,而绘图表面将反过来写入PDF