提问人:Linus 提问时间:8/5/2019 最后编辑:Linus 更新时间:8/5/2019 访问量:130
使用 iTextSharp (.net) 调整带有文本的 pdf 大小
Use iTextSharp (.net) to resize pdf with text
问:
我有一个 PDF,图像上嵌入了文本(TIF 通过 OCR 引擎转换为 PDF)。尺寸为标准尺寸(例如A4,即21cm x 29.7cm)。 但是,我想调整 pdf 的大小以在页面左侧添加边距(例如 1.5 厘米)。
我知道我可以使用 PdfContentByte.AddTemplate(大小为 18.5cmx28.85cm 的模板)来做到这一点(见下文)。
但是,这也将减小模板和图像的大小。如果我替换页面上的图片,图片的尺寸只有 18.5cmx28.85cm,而不是 21cmx29.7cm。
除了使用 AddTemplate 之外,如何调整页面(实际上是文本)的大小?谢谢。
使用 Windows 10、.Net 框架 v4.6.2、iTextSharp 5.5.10
float fRes = 300f; // resolution of the image
float fMargin = 0.6f // margin=0.6in=1.5cm
PdfReader objReader = new PdfReader([Original file]);
int iPageCount = objReader.NumberOfPages();
Rectangle rect = objReader.GetPageSizeWithRotation(1);
System.Drawing.Size sz = new System.Drawing.Size((int)Utilities.PointsToInches(rect.Right) * fRes), (int)Utilities.PointsToInches(rect.Top) * fRes));
float fWidth = sz.Width / fRes, fScale = (fWidth - fMargin) / fWidth, fScaleXY = (float)sz.Width/(float)sz.Height;
double dX = 0, dY = 0;
Document doc = new Document(rect, 0, 0, 0, 0);
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream([New file], FileMode.Create));
doc.Open();
for (int I = 0; I <= iPageCount; I++)
{
PDfImportedPage page = writer.GetImportedPage(objReader, I);
PdfContentByte cb = writer.DirectContent;
dX = Utilities.InchesToPoints(fMargin);
dY = Utilities.InchesToPoints(fMargin * fScaleXY);
cb.AddTemplate(page, fScale, 0, 0, fScale, dX, dY);
if (I < iPageCount)
doc.NewPage();
}
doc.Close();
writer.Close();
objReader.Close();
答: 暂无答案
上一个:多个屏幕上的媒体基础 (EVR)
下一个:控制扩展范围之外的类的使用?
评论