Я добавляю текст к уже созданному pdf-документу, используя этот метод. ITextSharp insert text to an existing pdf В основном он использует PdfContentByte, а затем добавляет шаблон контента на страницу.ITextSharp, добавляющий текст. Некоторый текст не отображается
Я нахожу, что в некоторых областях файла текст не отображается. Кажется, что текст, который я добавляю, появляется за содержимым, которое уже находится на странице? Я сплющил документ pdf до него, просто являясь образами, но у меня все еще возникает такая же проблема с сплющенным файлом.
У кого-нибудь возникли проблемы с добавлением текста, скрытого с помощью Itextsharp?
Я также попытался использовать DirectContentUnder, как это было предложено в этой связи не увенчались успехом .. iTextSharp hides text when write
Вот код, я использую ... С этим я пытаюсь в основном наложения миллиметровка поверх PDF. В этом примере в верхнем левом углу каждой страницы, которая не заполняется, находится поле. В этом месте есть изображение в оригинале pdf. А на 4-й и 5-й страницах есть поля, которые не заполняются, но они, похоже, не являются изображениями.
PdfReader reader = new PdfReader(oldFile);
iTextSharp.text.Rectangle size = reader.GetPageSizeWithRotation(1);
Document document = new Document(size);
// open the writer
FileStream fs = new FileStream(newFile, FileMode.Create, FileAccess.Write);
PdfWriter writer = PdfWriter.GetInstance(document, fs);
document.Open();
// the pdf content
PdfContentByte cb = writer.DirectContent;
for (int i = 0; i < reader.NumberOfPages; i++)
{
document.NewPage();
// select the font properties
BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
cb.SetFontAndSize(bf, 4);
cb.SetColorStroke(BaseColor.GREEN);
cb.SetLineWidth(1f);
for (int j = 10; j < 600; j += 10)
{
WriteToDoc(ref cb, j.ToString(), j, 10);//Write the line number
WriteToDoc(ref cb, j.ToString(), j, 780);//Write the line number
if (j % 20 == 0)
{
cb.MoveTo(j, 20);
cb.LineTo(j, 760);
cb.Stroke();
}
}
for (int j = 10; j < 800; j += 10)
{
WriteToDoc(ref cb, j.ToString(), 5, j);//Write the line number
WriteToDoc(ref cb, j.ToString(), 590, j);//Write the line number
if (j % 20 == 0)
{
cb.MoveTo(15, j);
cb.LineTo(575, j);
cb.Stroke();
}
}
// create the new page and add it to the pdf
PdfImportedPage page = writer.GetImportedPage(reader, i + 1);
cb.AddTemplate(page, 0, 0);
}
// close the streams and voilá the file should be changed :)
document.Close();
fs.Close();
writer.Close();
reader.Close();
Спасибо за любую помощь, которую вы можете предоставить ... Я очень ценю это! Грег
Спасибо за вашу помощь! Я не совсем понял код, который использовал, и не понимал, что накладываю содержимое страницы поверх своего нового контента. Я просто переместил код, чтобы наложить содержимое страницы выше всего моего чертежа, и теперь он отлично работает. В будущем я также проверю PdfStamper. – smithygreg
@smithygreg не могли бы вы разместить новый код или внести изменения в код –