0

我有一张通过 itextsharp 放在 PDF 上的图像。当我使用 ScalePercent 或 ScaleAbsoluteWidth 或 ScaleAbsoluteHeight 它没有效果。在 PDF 上呈现的图像总是占用页面上可用的任何空间(它非常大)。

这是我的代码。

var chartImage = new System.IO.MemoryStream();
Chart1.SaveImage(chartImage, ChartImageFormat.Png);
iTextSharp.text.Image imageForChart = iTextSharp.text.Image.GetInstance(chartImage.GetBuffer());

imageForChart.ScaleAbsoluteHeight(5f);
imageForChart.ScaleAbsoluteWidth(5f);

Dictionary<string, string> dictionary = new Dictionary<string, string>();
string pageTitle = "Event Recap Report";
dictionary.Add("Started", tbStartDate.Text);
dictionary.Add("Ended", tbEndDate.Text);
PDFDocument x = new PDFDocument(pageTitle, PageSize.LETTER, 15, 15, 40, 15);

x.UserName = _currentUser.FullName;
x.WritePageHeader(1, ref dictionary);
x.WriteImage(ref imageForChart);
x.WriteGrid(ref grdEventRecap);
x.WritePageFooter();
x.Finish(false);
4

3 回答 3

0

我很尴尬地说我发现我们实际上有一个围绕 itextsharp 的包装器,并且该包装器中的 WriteImage 方法正在缩放以适应。我的解决方案是添加一种新方法,该方法不适合这种自动缩放。

于 2013-09-27T16:54:31.647 回答
0

希望这可以帮助

string imagePath = Server.MapPath("~/Content/images");
iTextSharp.text.Image png = iTextSharp.text.Image.GetInstance(imagePath + "/myimage.png");
png.ScaleToFit(520, 74);
doc1.Add(png);

用于ScaleToFit()调整图像大小。

于 2013-09-27T14:54:32.900 回答
0

您可以尝试像这样设置绝对位置:

var imageForChart = Image.GetInstance(chartImage.GetBuffer());
imageForChart.SetAbsolutePosition(positionX, positionY);
image.ScaleAbsoluteHeight(5f);
image.ScaleAbsoluteWidth(5f);
于 2013-09-27T14:52:42.983 回答