package jnpf.bizcommon.onlyoffice.service.impl;
|
|
import jnpf.bizcommon.onlyoffice.entity.OnlyOfficeProperties;
|
import jnpf.exception.DataException;
|
import org.apache.pdfbox.Loader;
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
import org.apache.pdfbox.pdmodel.PDPage;
|
import org.apache.pdfbox.pdmodel.common.PDRectangle;
|
import org.junit.Test;
|
|
import java.io.ByteArrayOutputStream;
|
import java.util.List;
|
|
import static org.junit.Assert.assertEquals;
|
|
public class OnlyOfficeDmsPrintPdfMergerTest {
|
@Test
|
public void mergesCopiesInRequestOrder() throws Exception {
|
OnlyOfficeProperties properties = new OnlyOfficeProperties();
|
byte[] merged = new OnlyOfficeDmsPrintPdfMerger(properties).merge(
|
List.of(pdf(500), pdf(600)));
|
|
try (PDDocument document = Loader.loadPDF(merged)) {
|
assertEquals(2, document.getNumberOfPages());
|
assertEquals(500, document.getPage(0).getMediaBox().getWidth(), 0.01);
|
assertEquals(600, document.getPage(1).getMediaBox().getWidth(), 0.01);
|
}
|
}
|
|
@Test(expected = DataException.class)
|
public void rejectsMergedPageCountBeyondConfiguredLimit() throws Exception {
|
OnlyOfficeProperties properties = new OnlyOfficeProperties();
|
properties.getDmsPrint().setMaxPages(1);
|
|
new OnlyOfficeDmsPrintPdfMerger(properties).merge(List.of(pdf(500), pdf(600)));
|
}
|
|
private byte[] pdf(float width) throws Exception {
|
try (PDDocument document = new PDDocument();
|
ByteArrayOutputStream output = new ByteArrayOutputStream()) {
|
document.addPage(new PDPage(new PDRectangle(width, 800)));
|
document.save(output);
|
return output.toByteArray();
|
}
|
}
|
}
|