使用PDFsharp旋转PDF而不截断内容
本文关键字:PDFsharp 旋转 PDF 使用 | 更新日期: 2024-09-23 23:13:32
旋转到纵向视图后,如何确保所有内容都可见(在页面范围内)?
PDFsharp在旋转+90度时截断我的页面,但在旋转-90度时不截断。
PdfDocument outputDocument = new PdfDocument();
XPdfForm old = XPdfForm.FromFile(in_filename);
PdfPage newP = outputDocument.AddPage();
if (old.Page.Orientation == PageOrientation.Landscape)
{
old.Page.Rotate= (old.Page.Rotate - 90) % 360;
old.Page.Orientation = PageOrientation.Portrait;
}
newP.Height = old.Page.Height;
newP.Width = old.Page.Width;
// Get a graphics object for page1
XGraphics gfx = XGraphics.FromPdfPage(newP);
// Draw the page identified by the page number like an image
gfx.DrawImage(old, new XRect(0, 0, old.PointWidth, old.PointHeight));
以上适用于一些pdf测试用例,但我怀疑这是巧合/运气
我正在使用PDFsharp 1.50测试版。
关于导入旋转PDF,PDFsharp 1.50beta存在已知问题。这个问题仍在调查中。
PDF文件有许多不同的变体,因此很难确保代码在所有情况下都能工作。
我最终完成了以下操作:(注意,这只适用于从风景到肖像)
var output = new PdfDocument();
var outputPage = output.AddPage();
using (var stream = new MemoryStream(Convert.FromBase64String(pdfBase64String)))
{
using (var input = XPdfForm.FromStream(stream))
{
outputPage.Height = input.PointWidth;
outputPage.Width = input.PointHeight;
using (var graphics = XGraphics.FromPdfPage(outputPage))
{
graphics.RotateAtTransform(90, new XPoint(input.PointHeight / 2, input.PointHeight / 2));
graphics.DrawImage(input, new XRect(0, 0, input.PointWidth, input.PointHeight));
}
}
}