Hi,
The attached picture is the result of my code. The rightmost table cell has a broken text, eventhough the cell size is more than enough to have all of it in one line. What’s wrong with that cell definition?
image.png (25.4 KB)
Also attached is my input file.
Narrow2.pdf (7.6 KB)
Here is my code:
import com.aspose.pdf.*;
import java.io.ByteArrayInputStream;
import java.util.Base64;
public class TextInCellProblem {
static final String BANNER_TEXT = "This is a Demo - Text Within the banner.";
static final String LINK_TEXT = "Go To Site";
static final String INPUT_FILE = "Narrow2.pdf";
static final String OUTPUT_FILE = "Narrow2-Output.pdf";
public static void main(String[] args) {
System.out.println("Starting");
String logoInBase64 = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAmCAYAAAClI5npAAAHxUlEQVR42u2YC1BU5xXH7+6yuzx2ecpzQVhAngLLQ3kpCWCDxmAUbRKNFjVW0cZqTM1LE5qkqTFJ1U6tycRmbHzFTKuTGhXpJG3SatSM9W3TBkRUQBB0YVlYliX59cCknemYRHwwmen0znyzd+/d/c7vO4//Pd9V+I4P5X8E4MuhA2i5VP+N9+wdVt7duH5oPbB8dtHXXu/oaOOhNIX22tNDB3D80H5mlhVcd73T3sqzlcmUZiusXbdh6ADe27Ge/Jys665XVb3J1GkKZSUKk+4pHbh2+vgpPv5wJyf+tpsTBw8OOiu+FaDPZSU5wfif73XnP5eJe9iwfROGEIWMHIWgyARq6mpINceQl65lQr4vf9jy9sDvbbaO28+Bl1+dy7KFkylLiqBIUZgW7EHVjDGsitGyMEDF3KBgpmZnECb3Yj0UssNVZGYmEhpu4pHyB3hy2Q85ffLUrQH0ynjt+R8zPV7D2hEKR4ICuOw9HKu/GatiwqkEc0QdwO8Ud9Z4Gpmr15LtriJSYGLCTGySCtmzYw0vVq64NYDq1c/yQWQcfVmjsbqb+DI0l3YlhguKH383hXFOH8FhxZ+/KEaqdQH8VvFlvkrHcq0/hQLx+NTxEkc7p04cuzkAp9OJddFiWkKjQWWi0zeWHo+RNBiicEQXY08v5ZI+kHOaMM4KwKcCsNkYxBaNP5UqA0vU3ixQe1AgEItnld9cDri6u7gyZgIOJRCXdxzO4vG4YvPo1STRqQzHET6a9ntn0FFYTr0SxueGQI5GZ1GtBLBVMfArgVmueHC/omWKoidaIJ5eVDF4gLYt2+gSF7rM2TiC02gsHI0raiw9k2bS++kBOnziqMkeTUfRdK7qR3HSzY8qXRAfSFh26fxZJxDlKk8eFohpaiOpioqMwGEcP3zoxgB9MhpzC+n1TKAnWT6HpdNnLsQWm0P3nip6d+6le/Uqun+5gcvhI6jJKeRcRJqEwJf9Wh9+b04VD+hYqniyQPHi+5KcqTLCxQtPfoMX/gvAKeOKTNZrSME+fjLO/IkD5z0rXsBZvpAGmah700achw9yZVgC/7QUUBOUxhFx+x6ND2/pA1iveLNS8mC2QORIGHJU7sQqagpHJmCzWm8E0EerEPdZSnANH0PX/eU0TCnAuexlet78DZczi+ha9SLNsrq28DwatDEc0/jx12AzuyQE7wj8K3JvqnihVObJlRzIk1Aky/c4tUJz46VvB+huapD6VnAUldETl4vTmIWz4hlsbmbs7+zAtfIl7El3UXPPJJqXLuWibzL1Tz/PXkMEe42RrNYamC9xnydGy2TlE+QzRa0lUaMjWOa9WFd3AwBbO1cliXp8LVwtGUe3IlVQ9CDW0gfofPw52ufMwRFbjOPtTbSlFPAnnReXyp+QClCzTVz+M1n9UrWBCjejGNczSgAy1e4DlTAly4L9a6T5uiS8lpCB3T2JLt8MHBPn0Ko34xo7h76473FcJrKVzKItp5TzUqYHxOjJgFTed/NlfYCJdaIDi6UC7lLpRQN0WCQMGSoP/OV/P39syeDKsGncvVijLXQGJOAQwbF7ZtMl6tdpyqdLIGwPPSLio+OIv1SB2syfpf63ieFfe4ayVgToB0q/AOmZKImZJsbjv6qC7Vs3Dw6g/uGZIjgm7FF3025MpdvNgi27lBZdJLaIu2nTWkSARnAhtYR/6P3Zaopgixh7TWPgPjc9j8r5NI2RdDE8kHxSCfF+Ro4dOjA4gKtV+2gxhmBPLsKuHolNE0tn+ni6c2fh1KdzMCqYC8ZkCUeAPAfc2Bmfzk4PEy+J6xeL0WkyisUDqTL6E7D/KVlZsWDwSui02WjOL6TdPY4OJQlbxn20q5O55hZPq3cWTaH51ATGst8rgGNBFvZL0q5x8+IprTcLxXi2rLhYciOlH0DrQYhGw8fV1YMH6O9kWla+QJs5U6Q2js7AXDp1WbSFpVNrHClClUStMowzkenUhKaxTUTnVcn+p0SAFqt9mCCeyBKAdI3XQPKVjkq/+Yaku6WJ85n5tPql0hqSJUYjsMYU0xFZwnl5Ap4xRnBRZeaM6PzW7LHscA8V7dcyQ0DGSQUkiAbEiQe8BaDP5by1jqhu1ybqVCFc8bTQbCmmUTHLiJLHcAoXQ0ZxwS+FTyTh9mmCeF3C8JjKOFABk8UDKZL9IWL8mUULb70l65Ng1AYOpzksjQa/bFqGZXIuXgwH5tGss/CZLowqk5ndAvETWflyjS+TBWCswPSrXklKEo6uztvrCVv3vsehfglVIrnok0jblPk0iEgdlXgfFsNnU4vZKYn3CzH6hMQ/T6qiX/0SDV58VL3vzmxMbHXnqU3MpD4wQ5Ivinp1NJ8VlVKbM0kEKYg3pOYflZivcPNhkiSfSYBXLFl0Z/YF/+7tG19ZzUlZda13Mkf9ImiNGMtZXzN/lHZsoxj9qaz6RxpvRojxiTmjvhL1O7g57XP2cObB6RwLTZLSy+e0EsIn7oG8G57AZsWHORo9ZVIFcQLQeq11aHbHXzgdvK9ykxbcn926YFm9iY8Mw0UDfKQF6286FAoSE4Z2e97Vcok3xNBbvj5sl+ajQs5nysiXMTUtjStNTUP/fsB2uZEP51VQNXs+lZFm5iVn8Hrlc9/NC4prsuIv+lz/f0VzW8e/AMg60VawDK7CAAAAAElFTkSuQmCC";
String arrowInBase64 = "iVBORw0KGgoAAAANSUhEUgAAACEAAAAhCAYAAABX5MJvAAADAElEQVR42s2YvU5qQRDHTwOdBZ0URCmEB8AGEkPoCa/gK0pDAYWJCbYkBIINMQICKioaVD4ie/PbZDZ7zoVzQcDLJpN1lpnd/3zszB6dl5cXNRgM1Hg8Voy3tzf19PSkZwbrz8/Pqt/vKxnoPD4+qq+vL80zw7MuA3n0/PblXHQc/rBBvL6+amFmEYa/v7/X/Hw+14oPDw9GhxneBoH8Kvsi48BA/Ajy0WikJpOJnuFZh4dQ4iCRGQ6HmmcWHXjk4FfZFxlHkPNDt9t1Wdfr9fS6jHa7rS2eTqfGOnixjnV45NbZ18EKCIQIEDN4ZnjWxRpi//n5qXno/f3dyPA3XuB35JBfZV/WHFwH2daRZLZ1xE1yQhKTxBPrGJ1OR9lDcsJvXzl7I09IpudyOeU4jqrX65pHZi1PbJITchsSiYQGAd3e3qqPj4/1cmKT2yGuTaVSBgRUqVRM/VjpdiyqE/D2fYbHGrtOEF/R8YKAyBEOkYK2aF9TJ3ANSYSC7T5xNa5H5u7uzuViDvEDIUBsHc6RMHAePHubnACVN8Pt7GcQa8kHxvf3t57T6fRCEBIaQmCXeHKL80xO2C5m0/Pzc3V4eKiOj49VNBrVsx/F43EVDAaXgoCazabLMG+fcWCkyOCiSCTiu+FPqVarmRtll3jdwEDFtcMLeOTk5GQnIKBGo2GslxLP+Q4egCgixCsWi+0MBFStVtVsNtO3RM42ickiiUeMdwni4ODA1A+TE7/tiVKppEPv8sRv5kShUFicE97bcXR0tBMAxWLRhP2v2+GtE9lsVoVCIRUOh/9J1BNABwIBXwCXl5f+dcKumNIfAANaaTy2DK2X7GbwkGGcnZ0tBXBxceHqIcytVstdMb29Qx4skr0cSOxQ9LZn0VnWO66vr1frHbvqouVyWRvgt+9WXtuyYTKZdAHI5/PrvSe28bI6PT01AK6urlzdd+evbXljZjIZ1zVc+425jdc2br25ufk/r2357qDnSPH50XfHXnyB7cW36F58le/D/yf+ABGHjoM/DixKAAAAAElFTkSuQmCC";
byte[] logoDecoded = Base64.getDecoder().decode(logoInBase64);
byte[] arrowDecoded = Base64.getDecoder().decode(arrowInBase64);
ByteArrayInputStream baisLogo = new ByteArrayInputStream(logoDecoded);
ByteArrayInputStream baisArrow = new ByteArrayInputStream(arrowDecoded);
try {
new com.aspose.pdf.License().setLicense("Aspose.Total.Java2.lic");
Document doc = new Document(INPUT_FILE);
MarginInfo marginInfo = new MarginInfo();
marginInfo.setTop(0);
marginInfo.setLeft(0);
marginInfo.setRight(0);
marginInfo.setBottom(0);
HeaderFooter header = new HeaderFooter();
Page page = doc.getPages().get_Item(1);
page.setHeader(header);
header.getMargin().setTop(0);
header.setMargin(marginInfo);
// Initializes a new instance of the Table
Table table = new Table();
table.setDefaultCellPadding(marginInfo);
Color cellsColor = Color.fromArgb(240, 240, 240);
table.setBorder(new BorderInfo(BorderSide.Bottom, .5f, Color.getRed()));
// set the border for table cells
table.setDefaultCellBorder(new BorderInfo(BorderSide.All, .5f, Color.getRed()));
double pageWidth = page.getPageRect(false).getWidth();
System.out.println("pageWidth: " + pageWidth);
String c1c = Integer.toString((int) Math.round(0.017 * pageWidth));
String c2c = Integer.toString((int) Math.round(0.075 * pageWidth));
String c3c = Integer.toString((int) Math.round(0.6 * pageWidth));
String c4c = Integer.toString((int) Math.round(0.05 * pageWidth));
String c5c = Integer.toString((int) Math.round(0.27 * pageWidth));
String columnWidths = c1c + " " + c2c + " " + c3c + " " + c4c + " " + c5c;
System.out.println("columnWidths: " + columnWidths);
table.setColumnWidths(columnWidths);
float fontSize = 12;
// if (pageWidth < 500.0) {
// fontSize = 11;
// }
System.out.println("fontSize: " + fontSize);
// we add just 1 row
Row row = table.getRows().add();
row.setFixedRowHeight(35);
// add 5 table cells
// 1. gap cell
Cell gapCell = row.getCells().add();
gapCell.setBackgroundColor(cellsColor);
// logo cell
Cell logoCell = row.getCells().add();
logoCell.setBackgroundColor(cellsColor);
Image logoImage = new Image();
logoImage.setImageStream(baisLogo);
logoImage.setFixWidth(25);
logoImage.setFixHeight(25);
logoCell.getParagraphs().add(logoImage);
// 3. text cell
Cell textCell = row.getCells().add();
textCell.setBackgroundColor(cellsColor);
TextState textCellTextState = textCell.getDefaultCellTextState();
textCellTextState.setFont(FontRepository.findFont("Calibri"));
textCellTextState.setFontSize(fontSize);
TextFragment text = new TextFragment(BANNER_TEXT);
textCell.getParagraphs().add(text);
// 4. arrow cell
Cell arrowCell = row.getCells().add();
arrowCell.setBackgroundColor(cellsColor);
Image arrowImage = new Image();
arrowImage.setImageStream(baisArrow);
arrowImage.setFixWidth(23.23);
arrowImage.setFixHeight(19.41);
arrowCell.getParagraphs().add(arrowImage);
// 5. hyperlink cell
Cell hyperlinkCell = row.getCells().add();
hyperlinkCell.setBackgroundColor(cellsColor);
TextFragment hyperlink = new TextFragment(LINK_TEXT);
hyperlink.getTextState().setFont(FontRepository.findFont("Calibri"));
hyperlink.getTextState().setFontSize(fontSize);
hyperlink.getTextState().setForegroundColor(Color.getBlue());
hyperlink.getTextState().setUnderline(true);
WebHyperlink webHyperlink = new WebHyperlink();
webHyperlink.setUrl("http://www.globo.com.br/");
hyperlink.setHyperlink(webHyperlink);
hyperlinkCell.getParagraphs().add(hyperlink);
// Add table object to first page of input document
doc.getPages().get_Item(1).getHeader().getParagraphs().add(table);
// Save updated document containing table object
doc.save(OUTPUT_FILE);
} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
System.out.println("Done.");
}
}
Thanks a lot for your help,
Sharon