我正在升级到ColdFusion2018。我用于转换和旋转PDF的iText例程,pdfReader在文件上放置了锁,页面完成后这些锁不会释放。
我尝试将close()
方法添加到代码中。 (版本11中的pdfReader不需要它。)
<cfscript>
reader = createObject("java", "com.lowagie.text.pdf.PdfReader").init( "test.pdf" );
reader.close();
inStream = createObject("java", "java.io.FileReader").init("test2.pdf");
inStream.close();
</cfscript>
运行提供的脚本时,我希望能够重命名或删除这两个文件,但是只能使用inStream文件(test2.pdf
)。阅读器文件(test.pdf
)已被系统锁定。
答案 0 :(得分:2)
使用以上建议,我认为以下解决方案将起作用。
<cfscript>
fkeys = createObject("java", "java.io.FileInputStream");
lKeyStoreFileStream = createObject("java", "java.io.BufferedInputStream").init(fkeys.init("test.pdf"));
reader = createObject("java", "com.lowagie.text.pdf.PdfReader").init( lKeyStoreFileStream );
lKeyStoreFileStream.close();
fkeys.close();
reader.close();
</cfscript>
答案 1 :(得分:0)
(评论太久了)
很高兴!我建议的一个小改进是在finally
块内关闭流。这样可以确保文件始终关闭-即使发生意外错误。
<cfscript>
path = ExpandPath("./test2.pdf" );
fis = createObject("java", "java.io.FileInputStream").init( path );
try {
stream = createObject("java", "java.io.BufferedInputStream").init( fis );
reader = createObject("java", "com.lowagie.text.pdf.PdfReader").init( stream );
reader.close();
}
finally {
fis.close();
}
</cfscript>
答案 2 :(得分:0)
使用本地cfpdf
而不是使用旧版Java插件。
<cfpdf action="transform" source="myPDF.pdf" rotation="90" name="outPDF">
此标签还有很多其他功能。 https://cfdocs.org/cfpdf