var doc = new Document();
this.pdfDocument.PageInfo.IsLandscape = true;
After setting the orientation to landscape I would expect the document.PageInfo.Width to be Greater than document.PageInfo.Height but it is still same as its default. They should have swapped.
What is an easy way to Update the Width and Height of the whole document.
I don't want to do it in Page by Page basis because my pages are created by importing data from another html so I don't have control on the pages as shown below
Document doc1 = new Document(new MemoryStream(Encoding.UTF8.GetBytes(html)), htmlLoadOptions);
doc.Pages.Add(doc1.Pages);
Hi,
Thanks for using our API’s.
In order to change the page orientation, you need to iterate through all the pages in PDF file. Once you have imported HTML contents inside Document object, you may consider using either of the following approaches.
-
To change page size customer may use Page.Rect property:
Document
doc =
new
Document
(
“input.pdf”
);
//original page is A4
doc.Pages[1].Rect =
new
Rectangle
(0, 0, 421, 595);
// A5 size
doc.Save(
“output.pdf”
);
But, page cropping will occurs if new page size is smaller then original page size.
-
To change page orientation, customer may use Page.Rotation:
Document
doc =
new
Document
(
“input.pdf”
);
//original page is A4
doc.Pages[1].Rotation =
Rotation
.on270;
doc.Save(
“output.pdf”
);
(page contents will be rotated, and page orientation became landscape if it was portrait)
-
Example of PdfPageEditor usage (but page may be cropped in this case)
PdfPageEditor
ppe =
new
PdfPageEditor
();
ppe.BindPdf(
“input.pdf”
);
PageSize
ps =
new
PageSize
(421, 595);
ps.IsLandscape =
true
;
ppe.PageSize = ps;
ppe.Save(
“output.pdf”
);
-
As mentioned in forum link, customer has some pages A3 which need to be converted as A4.
To solve this task, PdfFileEditor.ResizeContents may be used.
ResizeContents(String source, String destination, int[] pages, ContentsResizeParameters parameters)
source = source file name;
destination = destination file name;
pages = array of page number which should be converted;
parameters = instance of ContentsResizeParameters. This object describes parameters of page/contents re-size.
It contains size elements: new page width and height and left/right/top/bootom margins.
Each of these element is ContentsResizeValue instance. ContentsResizeValue describes required resize algorithm:
ContentsResizeValue.Units(value) - creates resize value specified as absolute value in PDF document default units (pixels);
ContentsResizeValue.Percents(value) - creates resize value specified in percents of initial page size;
ContentsResizeValue.Auto() - creates resize value which will be automatically calculated (as initial page size - explicitly defined elements).
Thus, customer task may be solved in the following way:
PdfFileEditor
pfe =
new
PdfFileEditor
();
pfe.ResizeContents(
“input.pdf”
,
“output.pdf”
,
new
int
[] { 1 },
new
PdfFileEditor
.
ContentsResizeParameters
(
PdfFileEditor
.
ContentsResizeValue
.Units(0), //left margin
PdfFileEditor
.
ContentsResizeValue
.Units(421), //new page width - for A5
PdfFileEditor
.
ContentsResizeValue
.Units(0), //right margin
PdfFileEditor
.
ContentsResizeValue
.Units(0), //top margin
PdfFileEditor
.
ContentsResizeValue
.Units(595), //new page height - for A5
PdfFileEditor
.
ContentsResizeValue
.Units(0)
//bottom margin
To make the code more easy, method PdfFileEditor.ContentsResizeParameters.PageResize() was added.
This method requires two parameters (new page width and height)
[C#]
PdfFileEditor
pfe =
new
PdfFileEditor
();
pfe.ResizeContents(
“input.pdf”
,
"output.pdf"
new
int
[] { 1 },
PdfFileEditor
.
ContentsResizeParameters
.PageResize(421, 595));
How about to create a new pdf Document in LandScape to begin with?
I am not necessarily converting a portrait document. But creating a new pdf document all in landscape.
Do I have to create a Portrait and conver it to Landscape? I should be able to create a Landscape pdf document with appropriate Pages sizes.
Hi Helen,
Thanks for your inquiry. If you want to set page orientation while creating a PDF document from scratch, you need to set PageInfo of Page object as following. As contents will flow to next page automatically so page setting will implement on all pages automatically until unless you create a new Page object. Hopefully it will help you to accomplish the task.
Document
doc =
new
Document
();<o:p></o:p>
Aspose.Pdf.
Page
page = doc.Pages.Add();
page.PageInfo =
new
Aspose.Pdf.
PageInfo
Width =
Aspose.Pdf.
PageSize
.A4.Height,
Height =
Aspose.Pdf.
PageSize
.A4.Width,
Please feel free to contact us for any further assistance.
Best Regards,