- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 iText 2.1.7,我正在使用 writer.getDirectcontent() 方法在绝对位置添加页眉和页脚。一切正常,除了第一页中的字体比第二页更暗。
注意第一页和第二页的页眉和页脚
有什么帮助吗?
这是我做的
Reader stringReader = new StringReader(svgXmlDoc);
Document document = new Document(PageSize.A4.rotate());
ByteArrayOutputStream content = new ByteArrayOutputStream();
try {
PdfWriter writer = PdfWriter.getInstance(document, content);
document.open();
PdfService event = new PdfService();
event.setHeader(date.toString());
event.onOpenDocument(writer, document);
event.onEndPage(writer, document);
event.onCloseDocument(writer, document);
writer.setPageEvent(event);
Image image1 = Image.getInstance("Infinity-Loop.png");
image1.scalePercent(35);
PdfPTable signature = new PdfPTable(numberOfSignature);
signature.setTotalWidth(document.getPageSize().getWidth()
- document.leftMargin() - document.rightMargin());
signature.setLockedWidth(true);
signature.setWidthPercentage(100);
signature.getDefaultCell().setFixedHeight(20);
signature.getDefaultCell().setHorizontalAlignment(
Element.ALIGN_RIGHT);
for (int i = 0; i < numberOfSignature; i++) {
PdfPCell cell = new PdfPCell(new Paragraph(
String.valueOf("____________")));
cell.setBorder(Rectangle.NO_BORDER);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
signature.addCell(cell);
}
PdfPTable header = new PdfPTable(3);
float[] columnWidths = {1f,2f,1f};
header.setWidths(columnWidths);
header.setTotalWidth(document.getPageSize().getWidth()
- document.leftMargin() - document.rightMargin());
header.setLockedWidth(true);
header.setWidthPercentage(100);
header.getDefaultCell().setPadding(15);
header.getDefaultCell().setBorder(Rectangle.NO_BORDER);
PdfPCell logocell = new PdfPCell(image1, false);
logocell.setRowspan(3);
logocell.setFixedHeight(72);
logocell.setBorder(Rectangle.NO_BORDER);
header.addCell(logocell);
PdfPCell Title = new PdfPCell(new Phrase(title,
FontFactory.getFont(FontFactory.TIMES_ROMAN, 18,
Font.PLAIN, new Color(0, 0, 0))));
Title.setBorder(Rectangle.NO_BORDER);
Title.setHorizontalAlignment(Element.ALIGN_CENTER);
header.addCell(Title);
header.addCell("");
header.completeRow();
PdfPCell SubTitle = new PdfPCell(new Phrase(subTitle));
SubTitle.setBorder(Rectangle.NO_BORDER);
SubTitle.setHorizontalAlignment(Element.ALIGN_CENTER);
header.addCell(SubTitle);
header.addCell("");
header.completeRow();
PdfPCell dataRange = new PdfPCell(new Phrase(
dateRange));
dataRange.setBorder(Rectangle.NO_BORDER);
dataRange.setHorizontalAlignment(Element.ALIGN_CENTER);
header.addCell(dataRange);
header.addCell("");
header.completeRow();
ArrayList tmp = header.getRows(0, header.getRows().size());
header.getRows().clear();
header.getRows().addAll(tmp);
int width = (int) ((int) document.getPageSize().getWidth()
- document.leftMargin() - document.rightMargin());
int height = 350;
PdfContentByte cb = writer.getDirectContent();
PdfTemplate template = cb.createTemplate(width, height);
Graphics2D g2 = template.createGraphics(width, height);
PrintTranscoder prm = new PrintTranscoder();
TranscoderInput ti = new TranscoderInput(stringReader);
prm.transcode(ti, null);
PageFormat pg = new PageFormat();
Paper pp = new Paper();
pp.setSize(width, height);
pp.setImageableArea(0, 0, width, height);
pg.setPaper(pp);
prm.print(g2, pg, 0);
g2.dispose();
ImgTemplate img = new ImgTemplate(template);
img.setAbsolutePosition(document.left(), document.topMargin() + 100);
document.add(img);
signature.writeSelectedRows(0, -1, document.left(),
document.bottom() + document.bottomMargin() * 2,
writer.getDirectContent());
header.writeSelectedRows(0, -1, document.left(), document.top(),
writer.getDirectContent());
document.newPage();
PdfPTable statisticsTitle=new PdfPTable(1);
statisticsTitle.setTotalWidth(document.right() - document.left());
statisticsTitle.setWidthPercentage(100);
PdfPCell titleCell= new PdfPCell(new Paragraph("Statistics Report"));
titleCell.setBorder(Rectangle.NO_BORDER);
titleCell.setHorizontalAlignment(Element.ALIGN_CENTER);
statisticsTitle.addCell(titleCell);
statisticsTitle.writeSelectedRows(0, -1, document.left(), document.top()
- document.topMargin() * 2 - 10, writer.getDirectContent());
PdfPTable table;
if(measurementType.equals("Temp")){
table = new PdfPTable(6);
}
else{
table = new PdfPTable(11);
}
table.setTotalWidth(document.right() - document.left());
table.setWidthPercentage(100);
table.setHeaderRows(1);
PdfPCell h1 = new PdfPCell(new Paragraph("Description"));
h1.setGrayFill(0.7f);
h1.setRowspan(2);
h1.setVerticalAlignment(Element.ALIGN_MIDDLE);
h1.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(h1);
PdfPCell h2 = new PdfPCell(new Paragraph("Temperature"));
h2.setGrayFill(0.7f);
h2.setColspan(5);
h2.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(h2);
if(measurementType.equals("TempHumi")){
PdfPCell h3 = new PdfPCell(new Paragraph("Humidity"));
h3.setGrayFill(0.7f);
h3.setColspan(5);
h3.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(h3);
}
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
PdfPCell tc1 = new PdfPCell(new Paragraph("Min"));
tc1.setGrayFill(0.7f);
tc1.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(tc1);
PdfPCell tc2 = new PdfPCell(new Paragraph("Max"));
tc2.setGrayFill(0.7f);
tc2.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(tc2);
PdfPCell tc3 = new PdfPCell(new Paragraph("Avg"));
tc3.setGrayFill(0.7f);
tc3.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(tc3);
PdfPCell tc4 = new PdfPCell(new Paragraph("Std"));
tc4.setGrayFill(0.7f);
tc4.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(tc4);
PdfPCell tc5 = new PdfPCell(new Paragraph("Mkt"));
tc5.setGrayFill(0.7f);
tc5.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(tc5);
if(measurementType.equals("TempHumi")){
PdfPCell hc1 = new PdfPCell(new Paragraph("Min"));
hc1.setGrayFill(0.7f);
hc1.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(hc1);
PdfPCell hc2 = new PdfPCell(new Paragraph("Max"));
hc2.setGrayFill(0.7f);
hc2.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(hc2);
PdfPCell hc3 = new PdfPCell(new Paragraph("Avg"));
hc3.setGrayFill(0.7f);
hc3.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(hc3);
PdfPCell hc4 = new PdfPCell(new Paragraph("Std"));
hc4.setGrayFill(0.7f);
hc4.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(hc4);
PdfPCell hc5 = new PdfPCell(new Paragraph("Mkt"));
hc5.setGrayFill(0.7f);
hc5.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(hc5);
}
ArrayList tmpTable = table.getRows(0, table.getRows().size());
table.getRows().clear();
table.getRows().addAll(tmpTable);
JsonObject listloggerdatastatistics = ReportService
.getStatisticsDetails(serialnumberlist);
System.out.println("Json "+listloggerdatastatistics.get("Sensormodellist"));
for (int row = 0; row < listloggerdatastatistics.get("Sensormodellist").getAsJsonArray().size(); row++) {
JsonObject jsonobj=listloggerdatastatistics.get("Sensormodellist").getAsJsonArray().get(row).getAsJsonObject();
if (row > 20 && row % 21 == 0) {
table.completeRow();
table.writeSelectedRows(0, 22, document.left(),
document.top() - document.topMargin() * 2 - 10,
writer.getDirectContent());
table.deleteBodyRows();
table.setSkipFirstHeader(true);
signature.writeSelectedRows(0, -1, document.left(),
document.bottom() + document.bottomMargin() * 3,
writer.getDirectContent());
header.writeSelectedRows(0, -1, document.left(),
document.top(), writer.getDirectContent());
document.newPage();
}
table.addCell(jsonobj.get("Modeltype").getAsString());
table.addCell(""+jsonobj.get("Mintemperature").getAsBigDecimal().setScale(2, RoundingMode.HALF_UP));
table.addCell(""+jsonobj.get("Maxtemperature").getAsBigDecimal().setScale(2, RoundingMode.HALF_UP));
table.addCell(""+jsonobj.get("Avgtemperature").getAsBigDecimal().setScale(2, RoundingMode.HALF_UP));
table.addCell(""+jsonobj.get("Stdtemperature").getAsBigDecimal().setScale(2, RoundingMode.HALF_UP));
table.addCell(""+jsonobj.get("Mkttemperature").getAsBigDecimal().setScale(2, RoundingMode.HALF_UP));
if(measurementType.equals("TempHumi")){
table.addCell(""+jsonobj.get("Minhumidity").getAsBigDecimal().setScale(2, RoundingMode.HALF_UP));
table.addCell(""+jsonobj.get("Maxhumidity").getAsBigDecimal().setScale(2, RoundingMode.HALF_UP));
table.addCell(""+jsonobj.get("Avghumidity").getAsBigDecimal().setScale(2, RoundingMode.HALF_UP));
table.addCell(""+jsonobj.get("Stdhumidity").getAsBigDecimal().setScale(2, RoundingMode.HALF_UP));
table.addCell("-");
}
}
table.completeRow();
table.writeSelectedRows(0, -1, document.left(), document.top()
- document.topMargin() * 3 - 10, writer.getDirectContent());
signature.writeSelectedRows(0, -1, document.left(),
document.bottom() + document.bottomMargin() * 2,
writer.getDirectContent());
header.writeSelectedRows(0, -1, document.left(), document.top(),
writer.getDirectContent());
} catch (DocumentException e) {
System.err.println(e);
}
document.close();
content.close();
我正在从 SVG 构建图形图像,表格数据是从数据库中填充的
为第 X 页(共 Y 页)添加页脚的事件处理程序
public class PdfService extends PdfPageEventHelper {
/** The header text. */
String header;
/** The template with the total number of pages. */
PdfTemplate total;
/**
* Fills out the total number of pages before the document is closed.
*
* @see com.itextpdf.text.pdf.PdfPageEventHelper#onCloseDocument(com.itextpdf.text.pdf.PdfWriter,
* com.itextpdf.text.Document)
*/
@Override
public void onCloseDocument(PdfWriter writer, Document document) {
total.reset();
ColumnText
.showTextAligned(total, Element.ALIGN_LEFT,
new Phrase(String.valueOf(writer.getPageNumber() - 1)),
2, 2, 0);
}
/**
* Adds a header to every page
*
* @see com.itextpdf.text.pdf.PdfPageEventHelper#onEndPage(com.itextpdf.text.pdf.PdfWriter,
* com.itextpdf.text.Document)
*/
@Override
public void onEndPage(PdfWriter writer, Document document) {
PdfPTable table = new PdfPTable(4);
try {
table.setWidths(new float[] { (float) (2.25), (float) (1.5), 11, 13 });
table.setTotalWidth(document.getPageSize().getWidth()
- document.leftMargin() - document.rightMargin());
table.setLockedWidth(true);
table.setWidthPercentage(100);
table.getDefaultCell().setFixedHeight(20);
table.getDefaultCell().setBorder(Rectangle.NO_BORDER);
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
table.addCell(String.format("Page %d of", writer.getPageNumber()));
Image img = Image.getInstance(total);
Chunk conte = new Chunk(img, 0, 0);
Phrase chunk = new Phrase(conte);
PdfPCell cell = new PdfPCell(chunk);
cell.setBorder(Rectangle.NO_BORDER);
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
cell.setVerticalAlignment(Element.ALIGN_TOP);
table.addCell(cell);
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
table.addCell("SuperAdmin");
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
table.addCell(header);
table.writeSelectedRows(0, -1, document.leftMargin(),
document.bottom(), writer.getDirectContent());
} catch (DocumentException de) {
throw new ExceptionConverter(de);
}
}
/**
* Creates the PdfTemplate that will hold the total number of pages.
*
* @see com.itextpdf.text.pdf.PdfPageEventHelper#onOpenDocument(com.itextpdf.text.pdf.PdfWriter,
* com.itextpdf.text.Document)
*/
@Override
public void onOpenDocument(PdfWriter writer, Document document) {
total = writer.getDirectContent().createTemplate(15, 14);
// total.setBoundingBox(new Rectangle(-1, 6, 20, 20));
}
/**
* Allows us to change the content of the header.
*
* @param header
* The new header String
*/
public void setHeader(String header) {
this.header = header;
}
}
最佳答案
在过去,当人们有一个字体程序用于一种常规字体而没有单独的字体文件用于粗体字体时,人们找到了解决此问题的方法,并且 Adobe Reader 进行了调整以实现此解决方法。
解决方法包括在同一位置两次(或多次)写入相同的内容。当您添加一次“第 1 页,共 2 页”时,字体显示为常规字体。添加两次时,字体显示为粗体。
这就是您的情况:您添加了两次页脚。这是错误的:
document.open();
PdfService event = new PdfService();
event.setHeader(date.toString());
event.onOpenDocument(writer, document);
event.onEndPage(writer, document);
event.onCloseDocument(writer, document);
writer.setPageEvent(event);
您自己调用 event.onEndPage()
,第一次添加页脚。当一个页面完成时,iText 第二次调用 onEndPage()
方法,再次添加页脚,从而产生粗体。
你应该像这样调整你的代码:
PdfService event = new PdfService();
event.setHeader(date.toString());
writer.setPageEvent(event);
document.open();
您应该在打开文档之前向PdfWriter
实例声明该事件。您不应该自己调用 onOpenDocument()
、onEndPage()
和 onCloseDocument()
方法!它们由 iText 在内部调用。
出于 FAQ 中解释的原因,您还应该升级到最新版本. Using Open Source and contributing nothing in return is unwise. Supporting your open source communities isn’t charity, it’s good business.
关于java - itext 字体颜色在第一页变暗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23077008/
使用 Vanilla JS,我希望执行如下图所示的操作,其中除了特定部分(最好是椭圆形)之外,大部分 Canvas 都变暗。 我可以通过在前面绘制半透明颜色来轻松使 Canvas 变暗,但我不确定如何
我想将 UIView “变暗”一定程度。现在,我正在像这样进行变暗: UIView *overlay = [[UIView alloc] initWithFrame:mainView.bounds];
我有一个 TCard(TGraphicControl 组件)并且它有一个属性背景(TP图片) 我希望能够使背景变暗或变暗。因此,如果我可以在游戏中玩卡片,那么它是正常的。如果我不能在游戏中玩这张卡,那
如果您熟悉 iTerm2 应用程序,您就会知道您可以像 vim 一样 Split View,并且不活动的 View 会“变暗”。 我通常在 vim 中使用三个垂直 Split View,例如,通过将背
我正在尝试创建一些 jQuery 函数,将对象 bgcolor 更改为更亮或更暗(您将参数设置为色调差异)。我认为它应该可以工作,但是它破裂了。 $.fn.changeBg = function(di
我有两个 fragment ,其中一个具有完整 View 的大小。另一个 fragment 较小并放置在其上方。如何使第一个 fragment 变暗? 最佳答案 在 fragment XML 文件中,
我在一个 Pane 中使用 irssi 和 nicklist.pl在另一个中,每当我在 irssi Pane 中时,昵称列表 Pane 就会变暗: 如何阻止非事件 Pane 变暗? 最佳答案 找到了!
我试图做的是使 UIImageView 更暗,以便图像结果顶部的按钮和 View 。我想给它一个在 ios6 中用户使用 Facebook 分享时给出的效果。它后面的所有内容都变得更暗,但它是可见的。
在单击登录按钮后出现的进度条微调器中,我希望当微调器在屏幕上可见时微调器后面的元素变暗或变暗。我的布局文件目前看起来像这样:
在我的应用程序中,我有一个带有进度条的刷新功能。进度条位于应该刷新的 TextView 上。问题是:如果 textview 中有很多文本,你就看不到进度条了。是否可以在 onPreExcute/onP
操作表自然会使背景 View 稍微变灰,但并不明显。我想让它变得更暗。 还有,我要怎么做才能让您无法点击其他地方?现在,如果您在操作表外部单击,操作表就会消失。我希望这种情况不会发生 - 您必须按下“
我想创建一个主页,其背景图像填充整个页面高度。在此之上,我需要添加白色文本和其他元素。 This website是我想要实现的一个例子。 我想要的: 外观: 使用下面的 CSS,文本看起来非常模糊。
我一直在开发一款增强现实游戏,并且正在实现我的暂停菜单。我的暂停菜单完全可用,UIView 显示为 ARSKView 之上的另一层。但是,我想在显示暂停菜单时使 ARSKView 变暗,然后在关闭暂停
我在 View 的右上角有一个菜单按钮 (+),当按下按钮时,其他几个按钮会下拉供用户选择。 我想有效地调暗所有这些按钮下方的所有 View 。 我目前的做法是在所有内容之上设置一个透明 View ,
我是网络开发的半菜鸟,但我不是在使用错误的术语进行搜索,就是我不是一个非常熟练的 googler。 我正在制作一个单页网站,并且想要这样的效果,即当向下滚动新部分进入 View 时,新部分会变暗。我可
我的应用程序的背景是一个不透明的 UIImageView。在某些情况下,我想以动画方式将它从全亮度调暗到大约 50%。目前我降低了 View 的 alpha 属性并且效果很好。因为 View 后面没有
我需要向用户显示 alert 并且我希望它很漂亮。所以我使用 Bootstrap 的警报类,并像这样向用户显示 div: Some text 这段代码只显示了一个div。我想要的是将所有东
我需要在触摸 UIImageView 时使它变暗, 几乎就像跳板(主屏幕)上的图标一样。 我应该添加具有 0.5 alpha 和黑色背景的 UIView 吗?这看起来很笨拙。我应该使用图层还是其他东西
我正在将图像加载到 BitmapImage 中并将其转换为 PixelColor 的数组。我想要的是能够操纵这些像素中的一些,使它们更亮/更暗/透明,但我似乎无法让它工作。将其设置为某种颜色确实有效,
我找到了 change the opacity of a View 的方法,但我实际上需要使 View 变暗。我最好的办法是在上面放一个透明的黑色矩形,然后慢慢增加矩形的不透明度。 你知道更好的方法吗
我是一名优秀的程序员,十分优秀!