c# - iTextSharp: Rectangle is not showing in Acrobat Reader -
i'm using itextsharp v5.1. create pdf file multiple pages. when open pdf in chrome looks expected, when open in systemviewer of win8 parts of context missing. , in acrobat reader parts missing well.
i managed track down problem: when draw line, rectangle or roundedrectangle following text not showing anymore until create new page.
i'm writing text, no images , have no form objects. when analyze pdf using http://www.pdf-online.com/osa/repair.aspx get
page objno description 0 0 form xobject xf2 has empty or unreadable content stream. 9 0 file corrupt , cannot repaired. of contents can possibly recovered.
searching day understand xf2 has forms, don't use.
here's code create document:
var document = new document(); document.setpagesize(pagesize.a4.rotate()); var writer = pdfwriter.getinstance(document, ms); // set template title page titlepageeventhandler("template.pdf")); writer.setpdfversion(pdfwriter.pdf_version_1_7); writer.pdfversion = pdfwriter.version_1_7; // open document document.open(); // add metatags document.addtitle("my title"); document.addsubject("my subject"); document.addauthor("me"); document.addcreator("itextsharp v5.1"); document.addcreationdate(); document.addproducer();
this code write text:
protected static float showtext( pdfcontentbyte cb, font font, float x, float y, float width, float height, string text, bool simulate = false, int alignment = element.align_left) { var phrase = new phrase(new chunk(text, font)); var column = new columntext(cb); column.setsimplecolumn(x, y, x + width, y - height, lineheight, element.align_left | element.align_top); column.settext(phrase); column.alignment = alignment; column.go(simulate); return column.lineswritten * lineheight; }
and code of drawing rectangle:
protected static void drawrectangle( pdfcontentbyte cb, basecolor strokecolor, basecolor fillcolor, float left, float top, float right, float bottom) { cb.setcolorstroke(strokecolor); cb.setcolorfill(fillcolor); cb.setlinedash(0, 0); // no dashed line cb.moveto(left, top); cb.lineto(right, top); cb.lineto(right, bottom); cb.lineto(left, bottom); cb.closepathfillstroke(); }
this draw line:
protected static void drawline( pdfcontentbyte cb, basecolor strokecolor, float left, float top, float right, float phase = 0) { cb.setcolorstroke(strokecolor); if (phase >= 0) { cb.setlinedash(phase, phase); <== line causing problem } cb.moveto(left, top); cb.lineto(right, top); cb.stroke(); }
when call showtext , next drawrectangle , showtext pdf showing ok in chrome, in other viewers first text shown , nothing after it. without drawrectangle pdf, including headers , footers rendered ok in viewers.
please advice how solve this.
Comments
Post a Comment