Ваш вопрос звучит так. Это как если вы хотите добавить изображение водяного знака к документу, который адекватно объясняется во многих других вопросах, таких как Set a fix background image for all my pages in PDF iText ASP C# и How can I add an image to all pages of my PDF? (Эти ответы о C# вопросов, но official web site имеет много watermark и page event пример.)
Так же, как madhesh, вы путаете читатель StackOverflow, даже после того, как вы прочитали мой ответ на вопрос How to add text to an image? где я писал:
Это хороший пример вопроса, который сформулирован таким образом, что никто не может ответить это правильно. После многочисленных комментариев и комментариев, наконец, стало ясно, что OP хочет добавить текстовый водяной знак к изображению. Плохие фразовые вопросы могут быть очень неприятными. Пожалуйста, примите во внимание, задавая вопрос. В этом случае я дал несколько неправильных ответов, прежде чем стало ясно, что на самом деле было задано.
Вы хотите добавить PdfPTable
к Image
и ваши знания недостаточно, чтобы понять и адаптировать приведенные примеры с ответами на такие вопросы, как How to add text to an image? и Draw Lines on Image in PDF using ItextSharp.
То, что вы просите, очень просто.
Метод getWatermarkedImage()
, что вы упоминаете выглядит следующим образом:
public Image getWatermarkedImage(PdfContentByte cb, Image img) throws DocumentException {
float width = img.getScaledWidth();
float height = img.getScaledHeight();
PdfTemplate template = cb.createTemplate(width, height);
template.addImage(img, width, 0, 0, height, 0, 0);
template.saveState();
template.setColorStroke(BaseColor.GREEN);
template.setLineWidth(3);
template.moveTo(width * .25f, height * .25f);
template.lineTo(width * .75f, height * .75f);
template.moveTo(width * .25f, height * .75f);
template.lineTo(width * .25f, height * .25f);
template.stroke();
template.setColorStroke(BaseColor.WHITE);
template.ellipse(0, 0, width, height);
template.stroke();
template.restoreState();
return Image.getInstance(template);
}
Это пример, взятый из ответа на вопрос How to draw lines on an image?
Вы не хотите, чтобы рисовать линии, так что вы можете удалить весь код, который рисует линию:
public Image getWatermarkedImage(PdfContentByte cb, Image img) throws DocumentException {
float width = img.getScaledWidth();
float height = img.getScaledHeight();
PdfTemplate template = cb.createTemplate(width, height);
template.addImage(img, width, 0, 0, height, 0, 0);
// removed the code that draws lines
return Image.getInstance(template);
}
Вместо строк, вы хотите нарисовать PdfPTable
, поэтому мы объявление d некоторый код, где он говорит // removed the code that draws lines
.Как указано, добавить таблицу в абсолютном положении осуществляется с помощью writeSelectedRows()
метода:
public Image getWatermarkedImage(PdfContentByte cb, Image img) throws DocumentException {
float width = img.getScaledWidth();
float height = img.getScaledHeight();
PdfTemplate template = cb.createTemplate(width, height);
template.addImage(img, width, 0, 0, height, 0, 0);
PdfPTable table = new PdfPTable(2);
table.setTotalWidth(width);
table.getDefaultCell().setBorderColor(BaseColor.Yellow);
table.addCell("Test1");
table.addCell("Test2");
table.addCell("Test3");
table.addCell("Test4");
table.writeSelectedRows(0, -1, 0, height, template);
return Image.getInstance(template);
}
Я адаптированной один из многочисленных примеров в официальной документации (см WatermarkedImages5), и это результат:
Все функциональные возможности, необходимые для достижения этой цели, были доступны в документации. Пожалуйста, прочитайте эту документацию, прежде чем отправлять другой вопрос.
Этот вопрос должен быть закрыт, потому что неясно: вы создаете документ с нуля или добавляете водяной знак к существующему документу? Вы используете iText 5 или используете iText 7. Вы утверждаете, что вы выполнили много шагов *, но зачем вам верить, если вы не покажете нам, что вы пробовали. Вы даже прочитали документацию. На официальном веб-сайте имеется буквально дюжина [примеров водяных знаков] (http://developers.itextpdf.com/search/node/watermark). Неужели один из этих примеров может вам помочь? Если нет, почему бы и нет? –
Если вы создаете документ с нуля, вам нужно прочитать ответ на [Как добавить водяной знак на страницу с непрозрачным изображением?] (Http://developers.itextpdf.com/question/how-add-watermark -page-opaque-image) Если вы добавляете водяной знак в существующий документ, вам нужно [Как делать водяные знаки с помощью текста или изображений?] (http://developers.itextpdf.com/question/how-watermark-pdfs -using-text-or-images) Я бы закрыл вопрос, отметив его как дубликат [вопроса, который объясняет, как сделать прозрачные изображения) (http://stackoverflow.com/questions/27241731/), но это ответ никогда не получил голоса. –
Покажите нам все много шагов, за которыми вы следовали, и кто-то (а не я) войдет, чтобы рассказать вам, что вам нужно изменить. Без вашего кода нет ответа. –