Объединение PDF-файлов с iText 7 делает печатные слои всегда видимыми - PullRequest
0 голосов
/ 24 марта 2020

Используя 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...