将 HTML 转换为 PDF - 实例化对象不可见
Convert HTML to PDF - Instantiated Object not visible
我目前正在尝试在 Java 中开发一个转换器,它将 HTML 文件转换为 PDF 文件并找到 this site。第一页和第二页的底部有代码示例,说明如何使用第 1 页上命名的库(JTidy、Xalan、FOP)实现这样的程序。
我在 Spring 工具套件中创建了一个新的 Maven 项目并将库依赖项添加到我的 pom.xml。我已将代码部分复制到这个新创建的测试程序中,看看它是否有效。直到最后的代码部分,一切都很好。
public static byte[] fo2PDF(Document foDocument) {
DocumentInputSource fopInputSource = new DocumentInputSource(
foDocument);
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
Logger log = new ConsoleLogger(ConsoleLogger.LEVEL_WARN);
Driver driver = new Driver(fopInputSource, out);
driver.setLogger(log);
driver.setRenderer(Driver.RENDER_PDF);
driver.run();
return out.toByteArray();
} catch (Exception ex) {
return null;
}
}
最初 Spring 将光标移动到 DocumentInputSource
上时显示此消息
DocumentInputSource cannot be resolved to a type
并且没有像 Maven 通常提供的那样添加特定库的选项。
我尝试了不同的方法,例如将代码放在 class 内的不同范围内,为其创建一个自己的 class,我尝试使用另一个 IDE , 虽然我怀疑故障会被这些东西中的任何一个解决,但显然没有帮助。
我读到 FOP 库是根据 Apache 许可版本 2.0 获得许可的,并在我的项目底部添加了许可,只是为了确保它不会造成任何麻烦,尽管我没想到会成功再次.
此外,我尝试添加另一个库,我读到它对于转换是必要的,但在我一开始链接的文章中没有提到它。图书馆是dom4j。
现在,当我查看 DocumentInputSource
Spring 时,我看到:
The type DocumentInputSource is not visible
这对我来说毫无意义,因为它只是我 class 中的一个“普通方法”,正如您所看到的,我已经将修饰符从 private 更改为 public 以便确保它可见。
我觉得我忽略了一些非常 easy/basic 的东西,如果有任何帮助,我将不胜感激。感谢您花时间阅读本文。
PS:这是我在 Stack Overflow 上的第一个 post,我对编程有点陌生。如果有任何遗漏的信息;请告诉我。
在您提到的 link 中,DocumentInputSource
class 来自软件包 org.apache.fop.tools
。
在包 org.dom4j.io
中还有另一个 class 这个名字,它是包私有的。如果你导入了这个,编译器会警告你这个 class 是不可见的(当然除非你的 class 在同一个包中)。
确保在源文件的开头附近有以下行:
import org.apache.fop.tools.DocumentInputSource;
而不是这个:
import org.dom4j.io.DocumentInputSource;
然后,如果它说找不到 class org.apache.fop.tools.DocumentInputSource
(或其包),那么你的 pom 中缺少 fop 依赖项:
<dependency>
<groupId>fop</groupId>
<artifactId>fop</artifactId>
<version>0.20.5</version>
</dependency>
您找到的页面及其引用的 fop 版本 (0.20.5) 比较旧(2006 年 5 月,参见 here),您要查找的 class 是在库的最新版本中不再存在。您是否在 Maven 依赖项中使用了最新版本?这将解释您的第一个问题 ("cannot be resolved to a type")。
我建议您升级到最新的稳定版本(2.1 是 2016 年 1 月,请参阅 here) and study the examples from their official documentation here(在左侧菜单中有一个 "examples" 部分)。
祝你好运! :)
我目前正在尝试在 Java 中开发一个转换器,它将 HTML 文件转换为 PDF 文件并找到 this site。第一页和第二页的底部有代码示例,说明如何使用第 1 页上命名的库(JTidy、Xalan、FOP)实现这样的程序。
我在 Spring 工具套件中创建了一个新的 Maven 项目并将库依赖项添加到我的 pom.xml。我已将代码部分复制到这个新创建的测试程序中,看看它是否有效。直到最后的代码部分,一切都很好。
public static byte[] fo2PDF(Document foDocument) {
DocumentInputSource fopInputSource = new DocumentInputSource(
foDocument);
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
Logger log = new ConsoleLogger(ConsoleLogger.LEVEL_WARN);
Driver driver = new Driver(fopInputSource, out);
driver.setLogger(log);
driver.setRenderer(Driver.RENDER_PDF);
driver.run();
return out.toByteArray();
} catch (Exception ex) {
return null;
}
}
最初 Spring 将光标移动到 DocumentInputSource
DocumentInputSource cannot be resolved to a type
并且没有像 Maven 通常提供的那样添加特定库的选项。
我尝试了不同的方法,例如将代码放在 class 内的不同范围内,为其创建一个自己的 class,我尝试使用另一个 IDE , 虽然我怀疑故障会被这些东西中的任何一个解决,但显然没有帮助。
我读到 FOP 库是根据 Apache 许可版本 2.0 获得许可的,并在我的项目底部添加了许可,只是为了确保它不会造成任何麻烦,尽管我没想到会成功再次.
此外,我尝试添加另一个库,我读到它对于转换是必要的,但在我一开始链接的文章中没有提到它。图书馆是dom4j。
现在,当我查看 DocumentInputSource
Spring 时,我看到:
The type DocumentInputSource is not visible
这对我来说毫无意义,因为它只是我 class 中的一个“普通方法”,正如您所看到的,我已经将修饰符从 private 更改为 public 以便确保它可见。
我觉得我忽略了一些非常 easy/basic 的东西,如果有任何帮助,我将不胜感激。感谢您花时间阅读本文。
PS:这是我在 Stack Overflow 上的第一个 post,我对编程有点陌生。如果有任何遗漏的信息;请告诉我。
在您提到的 link 中,DocumentInputSource
class 来自软件包 org.apache.fop.tools
。
在包 org.dom4j.io
中还有另一个 class 这个名字,它是包私有的。如果你导入了这个,编译器会警告你这个 class 是不可见的(当然除非你的 class 在同一个包中)。
确保在源文件的开头附近有以下行:
import org.apache.fop.tools.DocumentInputSource;
而不是这个:
import org.dom4j.io.DocumentInputSource;
然后,如果它说找不到 class org.apache.fop.tools.DocumentInputSource
(或其包),那么你的 pom 中缺少 fop 依赖项:
<dependency>
<groupId>fop</groupId>
<artifactId>fop</artifactId>
<version>0.20.5</version>
</dependency>
您找到的页面及其引用的 fop 版本 (0.20.5) 比较旧(2006 年 5 月,参见 here),您要查找的 class 是在库的最新版本中不再存在。您是否在 Maven 依赖项中使用了最新版本?这将解释您的第一个问题 ("cannot be resolved to a type")。
我建议您升级到最新的稳定版本(2.1 是 2016 年 1 月,请参阅 here) and study the examples from their official documentation here(在左侧菜单中有一个 "examples" 部分)。
祝你好运! :)