Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java iText从PDF中删除受保护的视图_Java_Vba_Itext - Fatal编程技术网

Java iText从PDF中删除受保护的视图

Java iText从PDF中删除受保护的视图,java,vba,itext,Java,Vba,Itext,我正在从一系列PDF中删除受保护的视图,并尝试在VBA中使用iText库。我现在的主要问题是,我不知道使用什么方法,而且iText文档非常密集 我也在摸索从VBA调用iText库的方法,因此也非常感谢您在语法方面提供的任何帮助,尽管我相信如果我知道调用哪个方法,我自己也能做到 目前,我有: Dim program As WshExec program = Shell("Java.exe -jar " & mypath & "\itext-5.5.6\itextpdf-5.5.6.

我正在从一系列PDF中删除受保护的视图,并尝试在VBA中使用iText库。我现在的主要问题是,我不知道使用什么方法,而且iText文档非常密集

我也在摸索从VBA调用iText库的方法,因此也非常感谢您在语法方面提供的任何帮助,尽管我相信如果我知道调用哪个方法,我自己也能做到

目前,我有:

Dim program As WshExec
program = Shell("Java.exe -jar " & mypath & "\itext-5.5.6\itextpdf-5.5.6.jar")
'Debug.print program returns a value here, so this line works.

'I'm thinking I need something like:
'Set program = RunProgram("Java.exe -jar " & mypath & "\itext-5.5.6\itextpdf-5.5.6.jar", & _
methodName, param1)
我一直在用下面的问题让我走到这一步


理想的功能是在
mypath
上的文件夹中放置一个不受保护的PDF

您尝试运行的jar不是可执行jar。iText是一个库,可以通过向类路径添加
itextpdf-5.5.6.jar
在Java应用程序中使用。如果您不编写任何Java代码,那么jar不会做任何事情,因此您的
Shell()
RunProgram()
方法都是无用的:没有什么可执行的

此外:从您的问题来看,还远不能确定您的机器上是否有Java环境。您正在VBA环境中工作,这让人想知道为什么要使用Java版本的iText。你试过使用iTextSharp吗?它是iText的.NET版本(用C#编写的)

请看本教程:

在本教程中,我们使用一个现有的PDF,填写一个表单,然后在原始PDF的基础上获得另一个PDF,但包含额外的数据。您可以很容易地修改代码,使其接受现有PDF,不向PDF添加任何内容,但保存原始PDF而不使用密码,如我对的回答中所述

如果您结合从我的Java代码中学到的知识:

public void manipulatePdf(String src, String dest) throws IOException, DocumentException {
    PdfReader.unethicalreading = true;
    PdfReader reader = new PdfReader(src);
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
    stamper.close();
    reader.close();
}
从表单填充教程中学习到的内容如下(前提是使用iTextSharp DLL而不是iText jar):


重要提示:仅当文件仅受所有者密码保护时(这是我在谈论受保护视图时的假设),此操作才会删除密码。如果文件以任何其他方式受到保护,您必须澄清。还要注意的是,参数unethicalreading并非毫无意义:通过删除保护,确保您没有做不道德的事情。

您尝试运行的jar不是可执行jar。iText是一个库,可以通过向类路径添加
itextpdf-5.5.6.jar
在Java应用程序中使用。如果您不编写任何Java代码,那么jar不会做任何事情,因此您的
Shell()
RunProgram()
方法都是无用的:没有什么可执行的

此外:从您的问题来看,还远不能确定您的机器上是否有Java环境。您正在VBA环境中工作,这让人想知道为什么要使用Java版本的iText。你试过使用iTextSharp吗?它是iText的.NET版本(用C#编写的)

请看本教程:

在本教程中,我们使用一个现有的PDF,填写一个表单,然后在原始PDF的基础上获得另一个PDF,但包含额外的数据。您可以很容易地修改代码,使其接受现有PDF,不向PDF添加任何内容,但保存原始PDF而不使用密码,如我对的回答中所述

如果您结合从我的Java代码中学到的知识:

public void manipulatePdf(String src, String dest) throws IOException, DocumentException {
    PdfReader.unethicalreading = true;
    PdfReader reader = new PdfReader(src);
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
    stamper.close();
    reader.close();
}
从表单填充教程中学习到的内容如下(前提是使用iTextSharp DLL而不是iText jar):


重要提示:仅当文件仅受所有者密码保护时(这是我在谈论受保护视图时的假设),此操作才会删除密码。如果文件以任何其他方式受到保护,您必须澄清。还要注意的是,参数unethicalreading并非没有意义:请确保通过删除保护,您没有做不道德的事情。

我不得不使用iText操作受保护的PDF文件。 我只是在pom.xml中加入了以下依赖项,仅此而已

<!-- https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk15on -->
<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk15on</artifactId>
    <version>1.59</version>
</dependency>

org.bouncycastle
bcprov-jdk15on
1.59

我不得不使用iText操作受保护的PDF文件。 我只是在pom.xml中加入了以下依赖项,仅此而已

<!-- https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk15on -->
<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk15on</artifactId>
    <version>1.59</version>
</dependency>

org.bouncycastle
bcprov-jdk15on
1.59

请澄清以下两点:(1)什么是受保护视图?你指的是加密PDF吗?(2.)如果您在VB中工作,为什么要使用Java版本的iText?你确定你有JVM吗?您是否更愿意使用iTextSharp,它是iText的.NET端口?itextpdf-5.5.6.jar不是一个可执行的jar,因此不清楚为什么要从VBA执行它:没有什么可执行的…请澄清以下两点:(1)什么是受保护视图?你指的是加密PDF吗?(2.)如果您在VB中工作,为什么要使用Java版本的iText?你确定你有JVM吗?您是否更愿意使用iTextSharp,它是iText的.NET端口?itextpdf-5.5.6.jar不是一个可执行的jar,因此不清楚您为什么要从VBA执行它:没有什么可执行的…谢谢您,Bruno--我在研究时遇到了您的另一篇文章,并开始沿着您推荐的路径前进:(使用.NET版本)。“受保护视图”是指大部分功能被禁用的沙盒视图(类似于Office文档上的受保护视图)。我正在使用的PDF来自电子邮件,默认情况下会在这个受保护的视图中打开。没有涉及密码。我很确定涉及密码:文件可能受所有者密码保护。谢谢你,布鲁诺--我在研究时遇到了你的另一篇帖子,并开始沿着你推荐的路径前进:(使用.NET版本)。“受保护视图”是指大部分功能被禁用的沙盒视图(类似于Office文档上的受保护视图)。和我一起工作的PDF