Text exceeds one page -> add pages automatically?

Hi,

I’ve been working with Aspose.Pdf.Kit, and now I do my first steps in Aspose.Pdf.

I have added text with Aspose.Pdf following the tutorial: instantiate Pdf object -> add Section -> add Paragraph (Text class)

The text is so long that exceeds the current page, but the Pdf has only one page. Therefore, part of the text content is missing.

My question is: how to automatically add pages when the text is so long that exceeds one page?

Regards.

Hello Emilio,

When text is being added to paragraphs collection of Pdf file, if the text exceeds the current page, more pages are added automatically.

Please share the code snippet that you are using, so that we can test the issue at our end.

Hello,

I have attached the resulting PDF. Code is next:

/----------------------------------------------------------------/
public class PDFcreator
{
private Pdf pdf;
private Section sec;

public PDFcreator()
{
// the Pdf
pdf = new Pdf();

// the one and only Section
sec = pdf.Sections.Add();

setPageSetup();
}

private void setPageSetup()
{
pdf.PageSetup.PageWidth = PageSize.A4Width;
pdf.PageSetup.PageHeight = PageSize.A4Height;

pdf.PageSetup.Margin.Bottom = 0;
pdf.PageSetup.Margin.Top = 0;
pdf.PageSetup.Margin.Left = 0;
pdf.PageSetup.Margin.Right = 0;

pdf.PageTransitionType = PageTransitionType.Split;

}

public void addText(string textContent, int leftX, int topY)
{
float leftXpoints = leftX * PDFRender.MMs_to_POINTs;
float topYpoints = topY * PDFRender.MMs_to_POINTs;

// Font info
TextInfo textInfo = new TextInfo();

textInfo.FontSize = 12;
textInfo.Alignment = AlignmentType.Justify;

// Paragraph of type = Text
Text textParagraph = new Text(textContent);

textParagraph.PositioningType = PositioningType.PageRelative;

textParagraph.Left = leftXpoints;
textParagraph.Top = topYpoints;

textParagraph.Margin.Bottom = 0;
textParagraph.Margin.Top = 0;
textParagraph.Margin.Left = 0;
textParagraph.Margin.Right = 0;

textParagraph.TextWidth = 165 * PDFRender.MMs_to_POINTs;

textParagraph.TextInfo = textInfo;

// Add paragraph to single section
sec.Paragraphs.Add(textParagraph);

}

public void saveToFile(string fileName)
{
pdf.Save(fileName);
}

}
/----------------------------------------------------------------/
//
//
// Now I make use of previous class:
//
//

PDFcreator pdfCreator = new PDFcreator();

// long string!

string textContent = "Los ministros de Defensa de los veintisiete países de la Unión Europea (UE) han aprobado hoy la operación Atalanta para disuadir, prevenir y reprimir la piratería en las costas de Somalia, la primera misión naval de la historia de la Unión Europea. El Consejo europeo de Defensa ha dado luz verde el envío de entre seis y diez barcos para garantizar al máximo la seguridad en el golfo de Adén, en colaboración con la OTAN y EE UU.Chacón ofrece a la UE una fragata y un petrolero para luchar contra los piratas * Militares españoles evitan el secuestro de un petrolero en Somalia * Rebeldes somalíes secuestran a dos monjas europeas cerca de la frontera con Kenia Grafico Piratería en SomaliaGRAFICO - El Pais - 29-10-2008Descripción cronológica de los principales ataques piratas que se han vivido en aguas somalíes desde el año 2005. La ruta del Mar Rojo, que une el océano Índico y el mar Mediterráneo, se ha convertido en una de las zonas más amenazadas por los piratas. - GUADALUPE CRUZ/ELPAÍS.comLa noticia en otros webs* webs en español* en otros idiomasEl uso de la fuerzaLos efectivos adoptarán las medidas necesarias, incluido el uso de la fuerza, para poner fin a la piratería o robos a mano armada en la zona. Podrán detener a sospechosos de estos + actos y transferirlos a países terceros, excepto si en ellos se aplica la pena de muerte o un trato degradante a los prisioneros, según fuentes de la presidncia de turno francesa.La UE se centrará en proteger del robo tanto a los barcos que transportan ayuda humanitaria a las poblaciones desplazadas en Somalia, como a pesqueros, mercantes y barcos de pasajeros en función de una apreciación de riesgos caso por caso. Vigilarán las zonas mar adentro de las costas de Somalia, incluidas sus aguas territoriales, que presenten riesgos para las actividades marítimas descritas. El comandante de la operación será el vicealmirante británico Phillip Jones, y su estado mayor se situará en Northwood (Reino Unido).Según el proyecto de conclusiones del Consejo, tras el lanzamiento de Atalanta convendría proceder al cierre de la célula de coordinaión de la vigilancia europea en la zona, situada en Bruselas, y dirigida por el capitán de navío español Andrés Breijo. El presidente de turno del Consejo de Defensa, el francés Hervé Morin, ha asegurado la participación de la mayoría de los grandes países marítimos en esta operación. Alemania, Holanda, Bélgica, Suecia, Chipre, Lituania, y Gran Bretaña se sumaron el pasado 1 de septiembre a España y Francia en su disposición a mandar medios marítimos y aéreos a la conflictiva zona del cuerno de Africa. Los ministros de Defensa ya dieron entonces un primer aprobado informal a la operación, impulsada por España y Francia en agosto tras el secuestro del pesquero español Playa Bakio ";


// very long string !!

for (int i=0; i< 10; i++)
{
textContent = textContent + textContent;
}

int leftX = 24; // mm
int topY = 61;

pdfCreator.addText(textContent, leftX, topY); // <<---------------------- ADD TEXT

pdfCreator.addText(“Blah blah blah”, 98, 13);

pdfCreator.saveToFile(“PdfCreator_____1.pdf”);





Hello Emilio,<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

I have tested the code snippet and have figured out the problem. Please comment the following code line

textParagraph.PositioningType = PositioningType.PageRelative;

Positioning type is inherited from Paragraph class, and it is not recommended to use the custom positioning. When using the default 'Auto' value, paragraphs are automatically positioned by the Page rendering engine. Where as, when using PageRelative, paragraphs are positioned relative to the page.

That was a quick response.

It worked, thanks.