Itextsharp:导入页面时有没有办法复制链接?

2024-04-01

我正在开发一个项目,需要在显示 pdf 之前对其进行编辑

I need

  • 添加水印
  • 编辑权限(锁定以避免“复制/粘贴”和“另存为”)
  • 编辑观众偏好

我做到了......并且工作正常,除了一件事,原始文件中的链接在新文件中不起作用......有什么想法吗?

注意:实际上,这是我的代码(我正在使用 itextsharp )

    private void loadPdf()
    {
        if (Request.QueryString.HasKeys())
        {
            if (Request.QueryString.GetKey(0) == "thepath" && Request.QueryString.GetKey(1) == "isprintable" && Request.QueryString.GetKey(2) == "type")
            {
                #region kuak
                Document doc = new Document();
                PdfReader pdfReader = new PdfReader(Request.QueryString["thepath"]);
                using (MemoryStream memoryStream = new MemoryStream())
                {
                    PdfWriter pdfWriter = PdfWriter.GetInstance(doc, memoryStream);
                    pdfWriter.ViewerPreferences = PdfWriter.PageModeUseOutlines;
                    //pdfWriter.ViewerPreferences = PdfWriter.PageLayoutTwoColumnLeft;  /// Despliega el docuemnto en pares de hojas
                    pdfWriter.ViewerPreferences = PdfWriter.PageLayoutOneColumn;
                    pdfWriter.ViewerPreferences = PdfWriter.HideToolbar;
                    //pdfWriter.ViewerPreferences = PdfWriter.HideWindowUI; /// quita los scrollbars y el panel de la derecha qur contiene los bookmarks y las buskedas dentro del pdf
                    if (Request.QueryString["isprintable"] == "n")
                    {
                        pdfWriter.ViewerPreferences = PdfWriter.HideMenubar;
                        System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
                        pdfWriter.SetEncryption(null, encoding.GetBytes("mYpAssss"), 0, PdfWriter.STRENGTH40BITS);
                    }
                    doc.Open();
                    PdfContentByte pdfContentByte = pdfWriter.DirectContent;
                    doc.AddDocListener(pdfWriter);
                    for (int page = 1; page <= pdfReader.NumberOfPages; page++)
                    {
                        //doc.SetPageSize(pdfReader.GetPageSize(page));
                        doc.SetPageSize(pdfReader.GetPageSizeWithRotation(page));
                        doc.NewPage();
                        PdfImportedPage pdfImportedPage = pdfWriter.GetImportedPage(pdfReader, page);
                        int rot = pdfReader.GetPageRotation(page);
                        if (rot == 90 || rot == 270)
                            pdfContentByte.AddTemplate(pdfImportedPage, 0, -1.0F, 1.0F, 0, 0, pdfReader.GetPageSizeWithRotation(page).Height);
                        else
                            pdfContentByte.AddTemplate(pdfImportedPage, 1.0F, 0, 0, 1.0F, 0, 0);
                        string theId = findId();
                        if (isWatermarkNeeded(theId))
                        {
                            #region ADD TEXT WATERMARK
                            //pdfContentByte.BeginText();
                            //iTextSharp.text.Rectangle pageSize = pdfReader.GetPageSizeWithRotation(page);
                            //BaseFont baseFont = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, System.Text.Encoding.ASCII.EncodingName, false);
                            //pdfContentByte.SetFontAndSize(baseFont, 200);
                            //BaseColor baseColor = new BaseColor(255, 0, 0, 20);
                            //pdfContentByte.SetColorFill(baseColor);
                            //float textAngle = (float)GetHypotenuseAngleInDegreesFrom(pageSize.Height, pageSize.Width);
                            //pdfContentByte.ShowTextAligned(PdfContentByte.ALIGN_CENTER, "DRAFT", 350, pageSize.Height / 2, textAngle);
                            //pdfContentByte.EndText();
                            #endregion
                            #region ADD IMAGE WATERMARK

                            string fechaExp = "Este documento vence: " + GetExpirationDate(theId).ToShortDateString();
                            pdfContentByte.BeginText();
                            //iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(Server.MapPath("~/images/watermark3.png"));
                            iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(ImageCheck.CreatePicture(@"C:\Users\myUser\Desktop\watermark.png", fechaExp).ToArray());
                            img.SetAbsolutePosition(0, 0);
                            pdfContentByte.AddImage(img);
                            pdfContentByte.EndText();
                            #endregion
                        }

                    }
                    pdfReader.Close();
                    doc.Close();
                    byte[] content = memoryStream.ToArray();
                    Response.ContentType = "application/pdf";
                    Response.AddHeader("content-length", content.Length.ToString());
                    Response.BinaryWrite(content);
                }
                #endregion
            }
            else
            {
                //hay querystring pro no corresponden con los que se necesita
            }
        }
        else
        {
            //no se enviaron los querystring
        }


    }

您必须从原始 PDF 中获取链接

var links = reader.GetLinks(pageNumber);

并将它们写入新的 PDF

 foreach (var link in links)
                    {
                        var annotation = link.CreateAnnotation(pdfWriter);
                        writer.AddAnnotation(annotation);
                    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Itextsharp:导入页面时有没有办法复制链接? 的相关文章

  • 更改所选控件的输入语言

    我的应用程序中有一个文本区域 我想以编程方式单独设置文本区域的输入语言 而不影响其他控件 不幸的是 您的程序无法完成此操作 用户需要使用 Unicode 键盘或输入法编辑器 IME 由于您使用的是 C Net 平台 因此您的程序已经能够处理
  • 如何从重定向的查询字符串中删除项目?

    在我的基页中 我需要从查询字符串中删除一个项目并重定向 我不能使用 Request QueryString Remove foo 因为该集合是只读的 有没有什么方法可以获取查询字符串 除了该一项 而无需迭代集合并重新构建它 您可以通过处理原
  • 基于 Microsoft Word 模板生成 PDF 文档 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要一个 Word 文档 它是某种模板 收集用户输入以填充该模板中的特定字段 然后生成一个 PDF
  • 如何从客户端设置 HTMLEditorExtender HTML

    我无法让它工作 这是我在另一个线程中找到的代码 但它对我不起作用 我得到 set content 不是函数 find set content whatever 这仍然有效吗 我还尝试设置它扩展的文本框的值 尝试设置两者的 InnerHtml
  • 使用 iText 在内存上生成在磁盘上生成的 PDF

    我正在从 Java 应用程序生成 PDF 并且效果很好 问题是 PDF 在磁盘上生成为 Document documento new Document PageSize A4 25 25 25 25 PdfWriter writer Pdf
  • 颜色变换器功能上的堆栈溢出错误

    我有两种颜色 红色 和 鲑鱼色 我需要动态创建面板以及面板背景颜色 这些颜色必须介于两种颜色之间 红色 public Color x y protected void Page Load object sender EventArgs e
  • 如何从 ASP.net 网站写入 OutputDebugString?

    我需要从网站上的代码输出一些调试信息 我怎样才能打电话OutputDebugString来自 ASP net 网站 并将其显示给运行 DbgView 的用户 Note 网站不支持System Diagnostics Trace TraceW
  • ASP.NET Webform 中的异常处理

    在 ASP NET Webforms 中处理异常的首选方法是什么 你有Page Error您添加的方法 我认为 web config级别 并且当发生错误时整个站点将被重定向到该级别 这是否意味着您不应在 Web 表单应用程序中的任何位置使用
  • 混合 ASP.NET WebForms 和 MVC 授权

    我正在尝试将一些 MVC3 功能混合到现有的 WebForms 应用程序中 我遵循了一些指南 除了授权部分之外 一切都已设置完毕并正常工作 现有的应用程序有
  • 将 UserControl 转换为特定类型的用户控件

    有没有办法将用户控件转换为特定的用户控件 以便我可以访问它的公共属性 基本上 我正在遍历占位符的控件集合 并尝试访问用户控件的公共属性 foreach UserControl uc in plhMediaBuys Controls uc P
  • 我的机器密钥是自动生成的还是隔离的?

    我正在尝试分享 ASPXAUTHASP NET MVC 4 应用程序 在 IIS 7 5 中 和使用的服务之间的 cookieHttpListener在同一主机上 浏览器正确地向两者呈现 cookie 但我的服务收到System Web H
  • 对 HTTP 处理程序的同时请求不起作用

    我的 ASP Net 应用程序中有一个通用 HTTP 处理程序 ashx 它执行一些基本但耗时的计算 将进度语句打印到输出 以便让用户了解情况 执行这些计算涉及读取一些在使用处理程序时锁定的数据文件 因此对处理程序的两次调用不要立即开始处理
  • 获取 SignalR hub 内的完整 URL

    我正在使用 SignalR 开发一个用户跟踪解决方案 作为学习 SignalR 的有趣项目 用于 ASP NET MVC 应用程序 目前我可以跟踪登录的用户以及他们在特定页面上停留的时间 如果他们移动到另一个页面 我也会跟踪该页面 并且 S
  • 使用 AJAX 或多线程加速页面加载

    我的页面有 5 个部分 每个部分大约需要 1 秒来渲染 Page Load RenderSection1 1 sec RenderSection2 1 sec RenderSection3 1 sec RenderSection4 1 se
  • 导出到 CSV 时 Gridview 出现空行

    这个问题是由进一步讨论引发的这个问题 https stackoverflow com questions 6674555 export gridview data into csv file 6674589 noredirect 1 com
  • 将文本从文本文件添加到 PDF 文件[重复]

    这个问题在这里已经有答案了 这是我的代码 using FileStream msReport new FileStream pdfPath FileMode Create step 1 using Document pdfDoc new D
  • 在 ASP.Net 网站中使用 VBScript 中的变量

    我花了一天的大部分时间来研究这个问题 但找不到答案 我对 stackoverflow 比较陌生 询问多个问题是否有一定的礼仪 过去几天我问了三个问题 Anyways 这是代码隐藏文件中的代码 它执行脚本 systeminfo vbs 并且工
  • 如何从asp net core中的AuthorizationFilter重定向到登录页面?

    当我回来时ForbidResult 它重定向到AccessDenied启动时指定的页面 我想做同样的事情UnauthorizedResult 但重定向到Login page P S 我没有使用标准Authorize控制器中的属性我有自己的
  • 为什么 appcmd.exe 解锁配置在 Azure 模拟器上不起作用?

    我最近升级到 Azure 2 1 SDK 现在我的部分功能遇到了问题web config在计算模拟器上运行时处于 Web 角色中 我的web config包含这个
  • 导致回发到与弹出窗口不同的页面

    我有一个主页和一个详细信息页面 详细信息页面是从主页调用的 JavaScript 弹出窗口 当单击详细信息页面上的 保存 按钮时 我希望主页 刷新 是否有一种方法可以调用主页的回发 同时还可以从详细信息页面维护保存回发 Edit 使用win

随机推荐

  • 解析:字符串到 XML

    我的 API 应该接受一个字符串并将其转换为 XML 格式 但我一直收到这个错误 ParseError 标签不匹配 第 1 行 第 764 列 XML
  • 在设备上运行应用程序时,iOS Facebook SDK“用户取消登录”?

    我正在使用最新的 iOS Facebook SDK 当我在模拟器中运行我的应用程序时 我可以完美登录和退出 在这种情况下 它会打开非本机弹出窗口 因为未安装 facebook 应用程序 但是当我在我的设备上运行它 我得到本机 uialert
  • 如何使用 SQL Server 从当前日期减去 30 天

    我无法从当前日期减去 30 天 而且我是 SQL Server 的新手 这是我专栏中的数据 date Fri 14 Nov 2014 23 03 35 GMT Mon 03 Nov 2014 15 18 00 GMT Tue 11 Nov
  • 测量 Javascript 应用程序的 CPU 负载

    我需要测量额外的 Javascript 事件绑定 使用 jQuery live 的性能开销 该开销可能会增加 CPU 负载 并且很难从执行时间分析中注意到 如何测量 Javascript 应用程序的两个不同版本之间的 CPU 负载差异 分析
  • Process.Start cmd.exe 在 IIS 中运行时不会运行作为参数传递的 cmd 文件

    我整个早上都在寻找和试验这个 但我被难住了 我有一个在 IIS 中运行的 aspx 页面并调用以下 c 函数 我试图让它运行 cmd 文件并返回 cmd 文件的输出 我在下面的代码中尝试了五个不同的选项 protected String R
  • 渲染谷歌折线图,曲线类型未设置且动画未按预期工作

    我正在绘制谷歌折线图 效果很好 该图表使用正确的数据绘制 但是 当我更改 curveType 的选项时 函数 选项不会将图表从直线更改为曲线 此外 动画功能根本不执行任何操作 我在这里错过了什么吗 这是我的代码 google charts
  • MUI v5 - 将组件名称添加到“样式”类名称中?

    我在 github 和这里进行了一些搜索 但也许我的做法是错误的 Using styled from mui material styles生成随机类名 如下所示 const TitleWrapper styled div display
  • Android 中整个应用程序的选项菜单?

    我可以为单个活动创建一个选项菜单 但现在我想在菜单中创建一个注销选项 该选项应该在应用程序中的所有活动中可用 有没有可能为应用程序创建一次选项菜单 我曾经回答过这个问题 但我忘了在哪里 所以我又来了 它非常简单 创建一个BaseActivi
  • “机器硬件”和“硬件平台”的区别

    我的 Linux 机器报告 uname a 输出如下 root tom i386 uname a Linux tom 2 6 9 89 ELsmp 1 SMP Mon Apr 20 10 34 33 EDT 2009 i686 i686 i
  • 将单列文本输入重新排列为多列

    我正在将 jTable 用于我目前正在进行的一个项目 想看看你们是否可以帮助解决我遇到的 CSS 问题 我在下面制作了一个 jsfiddle 当我向 jTable 添加新记录时会弹出该表单 因为我有很多行 所以它比可见屏幕长 您认为通过一些
  • 为什么 Git 中会忽略 IDE 特定的项目文件?

    我看到 Github 上发布的许多项目都有一个 gitignore文件明确排除与 IDE 相关的控制文件 这些控制文件广泛用于定义项目及其依赖项 这些可以是 sln对于 NET 或 project对于 Eclipse 我想问为什么这种做法被
  • Angular ngAnimate 在页面加载时第一次无法工作

    我正在使用 ngAnimate 除了页面加载后第一次之外 它的效果都很好 我有一些像这样的html a href newcontent a div class content div 使用路由单击链接时视图会更新 如下所示 app conf
  • 如何更改 Eclipse 项目的 JDK 版本

    我需要编写一个仅与 Java 1 5 兼容的项目 我安装了Java 1 6 是否有某种形式的向后兼容性可以让 Eclipse 使用 1 5 进行编译 我是否必须安装 Java 1 5 才能在此处显示 或者也许还有另一种方法 单击添加库按钮
  • 将 d3-tip 与 npm 一起使用:“未捕获类型错误:无法读取未定义的属性‘节点’”?

    我已经安装了d3 3 5 17 and d3 tip 0 7 1 使用 npm d3 tip 文档 https www npmjs com package d3 tip 然后在我的index js文件我有这个代码 var d3 requir
  • 用于翻译的 MySQL 结构

    根据这种方法 默认语言是已经翻译了在第一个表中 如果用户不需要翻译 他就不会为之烦恼 只需连接主表 仅此而已 产品表 InnoDB Obj id PK name desc 1 Million Dollar Baby Short descri
  • 在 Oracle 11g 中如何将分区表从一个表空间移动到另一个表空间?

    我有一个属于表空间的分区表report 我想将它移动到表空间record反而 一种可能性是删除表并在新表空间中重新创建它 但这对我来说不是一个选择 因为表中的数据需要在移动后继续存在 我首先检查分区是否确实属于表空间报告 SELECT FR
  • Symfony 2:如何渲染没有日期的日期字段?

    我正在尝试构建带有日期字段的表单 其中用户只能选择月份和年份 没有月份中的某一天 但我不知道如何实现这一点 public function buildForm FormBuilderInterface builder array optio
  • 停止加载 iframe

    所以我有 iframe 并且我正在通过它上传文件 所以我的问题是如何在加载过程中停止它 我尝试使用 jquery 函数更改 srcattr 但我没有做任何好事 我正在考虑删除整个 iframejs但这会给我带来其他问题 我什至不确定它是否有
  • 为什么排序(Comparator::reverseOrder)不起作用?

    下面的 Stream 表达式工作得很好 Stream
  • Itextsharp:导入页面时有没有办法复制链接?

    我正在开发一个项目 需要在显示 pdf 之前对其进行编辑 I need 添加水印 编辑权限 锁定以避免 复制 粘贴 和 另存为 编辑观众偏好 我做到了 并且工作正常 除了一件事 原始文件中的链接在新文件中不起作用 有什么想法吗 注意 实际上