Используя iText7, я пытаюсь объединить различные PDF-документы в один PDF-файл, но каждый печатный слой, присутствующий в документах, становится постоянно видимым.
Можно ли копировать или объединять эти документы при сохранении свойства слоя? Похоже, что iText запускает флаг печати, практически не отличающийся от любой опции «печать в PDF» в любом визуализаторе документов.
Первый документ всегда имеет слой на каждой странице, помеченный как печатный, который был создан с помощью:
PdfCanvas canvas = new PdfCanvas(page);
PdfLayer printLayer = new PdfLayer("print", pdfDocument);
Canvas canvasModel = new Canvas(canvas, pdfDocument, page.getPageSize());
layerImprimir.setOn(false);
layerImprimir.setOnPanel(false);
layerImprimir.setPrint("Print", true);
canvas.beginLayer(printLayer);
Paragraph paragraph = new Paragraph().setWidth(lineHeight).add(someText);
canvasModel.showTextAligned(paragraph, xPos, yPos, pageNumber, TextAlignment.CENTER, VerticalAlignment.MIDDLE, radAngle);
canvas.endLayer();
canvasModel.close();
Впоследствии этот первый документ объединяется с другими PDF-файлами, которые могут содержать или не содержать печатные слои. Я использовал PdfCopy и PdfMerger .
С PdfCopy :
Document finalDocument = new Document();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfCopy copy = new PdfCopy(finalDocument, baos);
PdfReader reader;
finalDocument.open();
reader = new PdfReader(firstDocument);
copy.addDocument(reader);
reader.close();
reader = new PdfReader(secondDocument);
copy.addDocument(reader);
reader.close();
finalDocument.close();
С PdfMerger (от { ссылка }):
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
PdfMerger merger = new PdfMerger(pdf);
//Add pages from the first document
PdfDocument firstSourcePdf = new PdfDocument(new PdfReader(SRC1));
merger.merge(firstSourcePdf, 1, firstSourcePdf.getNumberOfPages());
//Add pages from the second pdf document
PdfDocument secondSourcePdf = new PdfDocument(new PdfReader(SRC2));
merger.merge(secondSourcePdf, 1, secondSourcePdf.getNumberOfPages());
firstSourcePdf.close();
secondSourcePdf.close();
pdf.close();