c#PDF操作

c#PDF操作,c#,pdf,itextsharp,C#,Pdf,Itextsharp,如果我有一个现有的PDF,上面有一个图形,我只想让用户能够点击PDF上的一个点,然后在点击点上放一封信,就像。。。B等等。我认为ITextSharp可以处理类似的事情,但坦率地说,我不确定如何完成它。您能提供一些指导吗?您可能不想加载PDF,将其转换为可以在应用程序中呈现的内容(即,一些可编辑的文档对象),进行更改,然后将其写回PDF吗 诚然,这可能是你想要完成的大量工作,但我所知道的大多数PDF工具实际上并不直接编辑.PDF iTextSharp可能有能力将.PDF文件加载到某种文档树中,然后

如果我有一个现有的PDF,上面有一个图形,我只想让用户能够点击PDF上的一个点,然后在点击点上放一封信,就像。。。B等等。我认为ITextSharp可以处理类似的事情,但坦率地说,我不确定如何完成它。您能提供一些指导吗?

您可能不想加载PDF,将其转换为可以在应用程序中呈现的内容(即,一些可编辑的文档对象),进行更改,然后将其写回PDF吗

诚然,这可能是你想要完成的大量工作,但我所知道的大多数PDF工具实际上并不直接编辑.PDF

iTextSharp可能有能力将.PDF文件加载到某种文档树中,然后您可以对其进行操作。我会先看看它是否做了这样的事情,然后尝试更改一些节点,或者添加与注释相对应的节点


可能无法实时查看所反映的更改,因此您可能希望通过将更改作为简单的标签对象分层到.PDF文件的渲染上来“伪造”更改。这可能是最简单的开始方式。

您是否希望加载PDF,将其转换为可以在应用程序中呈现的内容(即,一些可编辑的文档对象),进行更改,然后将其写回PDF

诚然,这可能是你想要完成的大量工作,但我所知道的大多数PDF工具实际上并不直接编辑.PDF

iTextSharp可能有能力将.PDF文件加载到某种文档树中,然后您可以对其进行操作。我会先看看它是否做了这样的事情,然后尝试更改一些节点,或者添加与注释相对应的节点


可能无法实时查看所反映的更改,因此您可能希望通过将更改作为简单的标签对象分层到.PDF文件的渲染上来“伪造”更改。这可能是最简单的开始方式。

不,itextsharp无法做到这一点,因为itextsharp可以处理pdf文件,但无法在itextsharp中呈现pdf

不,itextsharp不能这样做,因为itextsharp可以处理pdf文件,但是在itextsharp中无法呈现pdf

您当然可以使用ITextSharp向现有PDF添加内容。网上有一些示例可以向您展示如何使用。(我已经有一段时间没有这样做了,我的需求是在现有PDF中添加水印图像。)


ITextSharp无法很好地阅读PDF,因此您可能希望找到其他内容来显示PDF。您可能需要在显示PDF的任何内容上覆盖一个透明窗口,以便捕捉点击,但这一切都取决于您找到的查看器。

您当然可以使用ITextSharp向现有PDF添加内容。网上有一些示例可以向您展示如何使用。(我已经有一段时间没有这样做了,我的需求是在现有PDF中添加水印图像。)


ITextSharp无法很好地阅读PDF,因此您可能希望找到其他内容来显示PDF。您可能需要在显示PDF的任何内容上覆盖一个透明窗口,以便捕捉点击,但这一切都取决于您找到的查看器。

请记住,我只用于PDF操作任务,我相信您询问的所有内容都可以通过该库实现,尽管您可能需要处理从单击到文档中位置的坐标转换,以及构建矩阵以将文本定位到书写时需要的位置的复杂问题

它们确实提供了一个简单的WinForms示例PDF查看器应用程序,可以作为实验的良好起点


我自己不需要深入编辑。文档的起点在(如何向页面添加水印)和中。API文档也非常广泛,可在网站上公开获取。

请记住,我只用于PDF操作任务,我相信您所询问的一切都可以通过该库实现,尽管您可能需要处理从单击到文档中位置的坐标转换,以及构建矩阵以将文本定位到书写时需要的位置的复杂问题

它们确实提供了一个简单的WinForms示例PDF查看器应用程序,可以作为实验的良好起点

我自己不需要深入编辑。文档的起点在(如何向页面添加水印)和中。API文档也非常广泛,可以在网站上公开获取。

下面是一个使用商业软件的C#示例

下面是一个C#示例,使用了商业广告


我以前使用过I text sharp将文本放到现有的PDF中,在这个例子中,我们为客户创建了一个小册子,每个位置都会不同,因此Graphi设计师创建了小册子,然后我们将表单上的一些数据放到PDF中相应的位置,并保存了它。但在这种情况下,我需要用户单击pdf上的特定点。不同的是,我知道我之前放在x和y上,现在它还没出来……我以前用我的文本夏普把文本放在现有的PDF上,比如我们为一个客户制作了一本小册子,每个地方都会不同,所以Graphi的设计师创造了小册子,然后,我们将表单上的一些数据放到pdf的相应位置,并将其保存。但在这种情况下,我需要用户单击pdf上的特定点。不同的是,我知道我之前用过的x和y,现在它还没出现……我想也许用reader附带的adobe组件来显示pdf,然后让他们用c
using System;
using System.IO;
using System.Drawing;
using System.Windows.Forms;
using QuickPDFAX0714;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        private string LicenseKey = " your key here ";
        private string OriginalFileName = "D:\\QuickPDFLibrary\\hello1.pdf";
        private string NewFileName = "D:\\QuickPDFLibrary\\hello2.pdf";

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            ShowPDF(OriginalFileName);
        }

        private void ShowPDF(string fileName)
        {
            PDFLibrary qp = new PDFLibrary();
            qp.UnlockKey(LicenseKey);
            qp.LoadFromFile(fileName);

            // Fit width of PDF to width of picture box
            int dpi = Convert.ToInt32((pictureBox1.Width * 72) / qp.PageWidth());
            byte[] bmpData = (byte[])qp.RenderPageToVariant(dpi, 1, 0);

            MemoryStream ms = new MemoryStream(bmpData);
            Bitmap bmp = new Bitmap(ms);
            pictureBox1.Image = bmp;

            ms.Dispose();
        }

        private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
        {
            PDFLibrary qp = new PDFLibrary();
            qp.UnlockKey(LicenseKey);
            qp.LoadFromFile(OriginalFileName);

            // Calculate co-ordinates, width of PDF fitted to width of PictureBox
            double xpos = ((double)e.X / (double)pictureBox1.Width) * qp.PageWidth();
            double ypos = qp.PageHeight() - ((double)e.Y / (double)pictureBox1.Width) * qp.PageWidth();

            qp.SetTextSize(24);
            qp.SetTextColor(1, 0, 0);
            qp.DrawText(xpos, ypos, "A");

            qp.SaveToFile(NewFileName);
            ShowPDF(NewFileName);
        }

    }
}