/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.camel.component.pdf; import java.util.HashMap; import java.util.Map; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriParam; import org.apache.camel.spi.UriParams; import org.apache.camel.spi.UriPath; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.font.PDFont; import org.apache.pdfbox.pdmodel.font.PDType1Font; import static org.apache.camel.component.pdf.PdfPageSizeConstant.PAGE_SIZE_A0; import static org.apache.camel.component.pdf.PdfPageSizeConstant.PAGE_SIZE_A1; import static org.apache.camel.component.pdf.PdfPageSizeConstant.PAGE_SIZE_A2; import static org.apache.camel.component.pdf.PdfPageSizeConstant.PAGE_SIZE_A3; import static org.apache.camel.component.pdf.PdfPageSizeConstant.PAGE_SIZE_A4; import static org.apache.camel.component.pdf.PdfPageSizeConstant.PAGE_SIZE_A5; import static org.apache.camel.component.pdf.PdfPageSizeConstant.PAGE_SIZE_A6; import static org.apache.camel.component.pdf.PdfPageSizeConstant.PAGE_SIZE_LETTER; /** * Handles pdf component configuration values. */ @UriParams public class PdfConfiguration { private static final Map<String, PDRectangle> PAGE_MAP = new HashMap<String, PDRectangle>(); static { PAGE_MAP.put(PAGE_SIZE_A0, PDPage.PAGE_SIZE_A0); PAGE_MAP.put(PAGE_SIZE_A1, PDPage.PAGE_SIZE_A1); PAGE_MAP.put(PAGE_SIZE_A2, PDPage.PAGE_SIZE_A2); PAGE_MAP.put(PAGE_SIZE_A3, PDPage.PAGE_SIZE_A3); PAGE_MAP.put(PAGE_SIZE_A4, PDPage.PAGE_SIZE_A4); PAGE_MAP.put(PAGE_SIZE_A5, PDPage.PAGE_SIZE_A5); PAGE_MAP.put(PAGE_SIZE_A6, PDPage.PAGE_SIZE_A6); PAGE_MAP.put(PAGE_SIZE_LETTER, PDPage.PAGE_SIZE_LETTER); } @UriPath(description = "Operation type") @Metadata(required = "true") private PdfOperation operation; @UriParam(defaultValue = "20") private int marginTop = 20; @UriParam(defaultValue = "20") private int marginBottom = 20; @UriParam(defaultValue = "20") private int marginLeft = 20; @UriParam(defaultValue = "40") private int marginRight = 40; @UriParam(defaultValue = "14") private float fontSize = 14; @UriParam(defaultValue = "PAGE_SIZE_A4", enums = "PAGE_SIZE_A0,PAGE_SIZE_A1,PAGE_SIZE_A2,PAGE_SIZE_A3,PAGE_SIZE_A4,PAGE_SIZE_A5,PAGE_SIZE_A6,PAGE_SIZE_LETTER") private PDRectangle pageSize = PDPage.PAGE_SIZE_A4; @UriParam(defaultValue = "Helvetica") private PDFont font = PDType1Font.HELVETICA; @UriParam(defaultValue = "lineTermination") private TextProcessingFactory textProcessingFactory = TextProcessingFactory.lineTermination; public PdfOperation getOperation() { return operation; } public void setOperation(String operation) { this.operation = PdfOperation.valueOf(operation); } public void setOperation(PdfOperation operation) { this.operation = operation; } public int getMarginTop() { return marginTop; } /** * Margin top in pixels */ public void setMarginTop(int marginTop) { this.marginTop = marginTop; } public int getMarginBottom() { return marginBottom; } /** * Margin bottom in pixels */ public void setMarginBottom(int marginBottom) { this.marginBottom = marginBottom; } public int getMarginLeft() { return marginLeft; } /** * Margin left in pixels */ public void setMarginLeft(int marginLeft) { this.marginLeft = marginLeft; } public int getMarginRight() { return marginRight; } /** * Margin right in pixels */ public void setMarginRight(int marginRight) { this.marginRight = marginRight; } public float getFontSize() { return fontSize; } /** * Font size in pixels */ public void setFontSize(float fontSize) { this.fontSize = fontSize; } public PDRectangle getPageSize() { return pageSize; } /** * Page size */ public void setPageSize(PDRectangle pageSize) { this.pageSize = pageSize; } public void setPageSize(String pageSize) { setPageSize(PAGE_MAP.get(pageSize)); } public PDFont getFont() { return font; } /** * Font */ public void setFont(PDFont font) { this.font = font; } public void setFont(String font) { setFont(PDType1Font.getStandardFont(font)); } public TextProcessingFactory getTextProcessingFactory() { return textProcessingFactory; } /** * Text processing to use. * <ul> * <li>autoFormatting: Text is getting sliced by words, then max amount of words that fits in the line will * be written into pdf document. With this strategy all words that doesn't fit in the line will be moved to the new line.</li> * <li>lineTermination: Builds set of classes for line-termination writing strategy. Text getting sliced by line termination symbol * and then it will be written regardless it fits in the line or not.</li> * </ul> */ public void setTextProcessingFactory(TextProcessingFactory textProcessingFactory) { this.textProcessingFactory = textProcessingFactory; } public void setTextProcessingFactory(String textProcessingFactory) { this.textProcessingFactory = TextProcessingFactory.valueOf(textProcessingFactory); } }