【发布时间】:2018-01-23 14:01:22
【问题描述】:
我收到了byte[] 的 pdf。当我将此二进制文件保存为 pdf 时,pageSize 太大了。我想更改代码中的pageSize。
目前我正在尝试这种方式,基于我在其他问题中发现的内容:
using iTextSharp;
using iTextSharp.text;
using iTextSharp.text.pdf;
using (MemoryStream stream = new MemoryStream(pdfAsBinary))
{
using (PdfReader reader = new PdfReader(pdfAsBinary))
{
using (Document doc = new Document(PageSize.A4))
{
PdfWriter writer = PdfWriter.GetInstance(doc, stream);
PdfImportedPage page = writer.GetImportedPage(reader, 1);
image = Image.GetInstance(page);
using (var pdfStream = new FileStream(tempPath, FileMode.Create, FileAccess.ReadWrite, FileShare.Read))
{
PdfWriter pdfwriter = PdfWriter.GetInstance(doc, pdfStream);
doc.Open();
doc.SetPageSize(PageSize.A4);
image.ScalePercent(30f);
doc.Add(image);
doc.Close();
}
}
}
File.Copy(tempPath, pathToFile);
}
或者我尝试使用这种方法:
private static byte[] resizeToA4(byte[] inputDoc)
{
using (MemoryStream out = new MemoryStream())
{
using (PdfReader reader = new PdfReader(inputDoc))
{
using (Document doc = new Document(PageSize.A4))
{
PdfWriter writer = PdfWriter.GetInstance(doc, out);
}
}
return outPDF.ToArray();
}
以上都不起作用,感觉我把事情复杂化了。如何将 pageSize 调整为 A4?
【问题讨论】:
-
“两者都不起作用”是什么意思?
-
我的意思是“以上都不是”
-
什么是
PdfReader?如果您使用的是第三方库,如果您告诉我们是哪一个,它会对我们有所帮助。如果遇到错误,包含异常堆栈跟踪会有所帮助。 -
外部库是:使用 iTextSharp;使用 iTextSharp.text;使用 iTextSharp.text.pdf;
-
你可能想看看this old answer;它适用于 Java 的 iText,但移植到 C# 应该不会太难。只需从您的
byte[]初始化PdfReader而不是该答案中使用的文件。