gpt4 book ai didi

c# - 设置现有 Pdf 文档的 BaseUrl

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:08 25 4
gpt4 key购买 nike

我们在使用 iTextSharp 设置 BaseUrl 时遇到问题。我们过去曾为此使用过 Adob​​es Implementation,但我们遇到了一些严重的性能问题。所以我们切换到 iTextSharp,它快了大约 10 倍。Adobe 使我们能够为每个文档设置一个基本 url。我们真的需要它来将我们的文档部署到不同的服务器上。但是我们似乎找不到合适的代码来执行此操作。

此代码是我们在 Adob​​e 中使用的代码:

public bool SetBaseUrl(object jso, string baseUrl)
{
try
{
object result = jso.GetType().InvokeMember("baseURL", BindingFlags.SetProperty, null, jso, new Object[] {baseUrl });
return result != null;
}
catch
{
return false;
}
}

许多解决方案都描述了如何在新文档或空文档中插入链接。但是我们的文档已经存在并且包含的​​不仅仅是文本。我们想用指向一个或多个其他文档的链接覆盖特定的单词。因此,在不访问文本本身的情况下插入链接对我们来说非常重要。也许在这些单词上面放一个盒子并设置它的位置(因为我们知道单词在文档中的位置)

我们尝试了不同的实现,使用 setAction 方法,但它似乎无法正常工作。结果在大多数情况下,我们看到了框外,但里面没有链接或与之关联。 (当我在框内单击时,光标没有改变,也没有发生任何事情)

感谢任何帮助。

最佳答案

我已经给你举了几个例子。

首先,让我们来看看BaseURL1 .在您的评论中,您提到了 JavaScript,因此我创建了一个文档,并在其中添加了一段文档级 JavaScript:

writer.addJavaScript("this.baseURL = \"http://itextpdf.com/\";");

这在 Adob​​e Acrobat 中完美运行,但当您在 ​​Adob​​e Reader 中尝试时,您会收到以下错误:

NotAllowedError: Security settings prevent access to this property or method. Doc.baseURL:1:Document-Level:0000000000000000

这与 Acrobat 的 JavaScript 引用一致,其中明确指出需要特殊权限才能更改基本 URL。

因此,我没有遵循您建议的路径,而是咨询了 ISO-32000-1(这是我要求您做的,但是......我在速度上打败了您)。

我发现您可以使用 Base 条目将 URI 字典添加到目录中。所以我写了第二个例子,BaseURL2 ,我将这个字典添加到 PDF 的根字典中:

PdfDictionary uri = new PdfDictionary(PdfName.URI);
uri.put(new PdfName("Base"), new PdfString("http://itextpdf.com/"));
writer.getExtraCatalog().put(PdfName.URI, uri);

现在 BaseURL 在 Acrobat 和 Reader 中都有效。

假设你想为现有文档添加一个BaseURL,我写了BaseURL3 .在此示例中,我们将相同的字典添加到现有 PDF 的根字典中:

PdfReader reader = new PdfReader(src);
PdfDictionary uri = new PdfDictionary(PdfName.URI);
uri.put(new PdfName("Base"), new PdfString("http://itextpdf.com/"));
reader.getCatalog().put(PdfName.URI, uri);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
stamper.close();

使用此代码,您可以将指向“index.php”(base_url.pdf)的链接更改为指向“http://itextpdf.com/index.php”(base_url_3.pdf)的链接。

现在您可以用更便宜的 iTextSharp 许可证替换您的 Adob​​e 许可证 ;-)

关于c# - 设置现有 Pdf 文档的 BaseUrl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24568386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com