iText5到iText7 - 导入页面并使用PageVerticalAnalyzer来处理内容

时间:2018-01-17 08:17:16

标签: java itext7

我将程序的某些部分从itext5切换到itext 7。 如何将其他人的页面pdf导入单个页面?

    void merge(PdfDocument reader, PdfDocumentContentParser parser, int page) throws IOException {

        PdfImportedPage importedPage = writer.getImportedPage(reader, page);
        PdfContentByte directContent = writer.getDirectContent();

        PageVerticalAnalyzer finder = parser.processContent(page, new PageVerticalAnalyzer());

        if (finder.verticalFlips.size() < 2) {
            return;
        }
        Rectangle pageSizeToImport = reader.GetPageSize(page);

        int startFlip = finder.verticalFlips.size() - 1;
        boolean first = true;
        while (startFlip > 0) {
            if (!first) {
                newPage();
            }

            float freeSpace = yPosition - pageSize.getBottom();
            int endFlip = startFlip + 1;
            while ((endFlip > 1) && (finder.verticalFlips.get(startFlip) - finder.verticalFlips.get(endFlip - 2) < freeSpace)) {
                endFlip -= 2;
            }
            if (endFlip < startFlip) {
                float height = finder.verticalFlips.get(startFlip) - finder.verticalFlips.get(endFlip);

                directContent.saveState();
                directContent.rectangle(0, yPosition - height, pageSizeToImport.getWidth(), height);
                directContent.clip();
                directContent.newPath();

                directContent.addTemplate(importedPage, 0, yPosition - (finder.verticalFlips.get(startFlip) - pageSizeToImport.getBottom()));

                directContent.restoreState();
                yPosition -= height + gap;
                startFlip = endFlip - 1;
            } else if (!first) {
                throw new IllegalArgumentException(String.format("Page %s content sections too large.", page));
            }
            first = false;
        }
}

我一直在网上搜索,阅读了针对itext7的api,但仍然无法将其转为使其正常工作。无法找到PdfImportedPage和PdfContentByte的替代品。

我已经列出了我的代码,我的主要问题是用什么代替PdfImportedPage和PdfContentByte

0 个答案:

没有答案