使用IText writer检查pdf是否已打开

时间:2019-01-17 14:14:48

标签: itext corrupt

我正在寻找一种方法来检查用户X是否通过另一个进程打开了共享网络中存储的PDF文件。

我的搜索不满意,我现在尝试使用iText7 PDFwriter检查PDF是否正在使用。而且可以,但是当不使用PDF时,我的理论就会失败。

如果不使用PDF,那么关闭作者将破坏我的PDF。

我的代码:

region_list

所以我的问题是。我可以不对PDF进行任何操作而关闭PDFwriter吗?取消写入?

1 个答案:

答案 0 :(得分:1)

一个人可以将相同的内容写入文件,而不必取消写入。

首先让我们将pdf写入内存:

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    PdfDocument pdfDocument = new PdfDocument(new PdfReader(sourcePath), new PdfWriter(baos));
    pdfDocument.close();

然后用存储在内存中的字节重写文件:

PdfDocument pdfDoc = new PdfDocument(new PdfReader(new RandomAccessSourceFactory().createSource(baos.toByteArray()), new ReaderProperties()),
            new PdfWriter(sourcePath), new StampingProperties().useAppendMode());
    pdfDoc.close();

副作用:在重写pdf时,iText可能会对其进行优化。