我正在尝试创建一个可以通过外部应用程序打开的PDF文档。用户正在选择存储在List<byte[]>
中的任意数量的图像。忽略这一点,即使创建一个可以打开的空白PDF,我也无法得到以下内容。如果我尝试打开生成的PDF,Adobe Reader会说该文件不受支持或已损坏。我不确定错误发生在哪里,因为似乎生成了PDF。我想在尝试将PDF写入FileStream时会出现问题。以下代码有什么问题?
private void CreatePDFWithImages(List<byte[]> images)
{
// create PDF
PdfDocument pdf = new PdfDocument();
// create a page description
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(612, 792, 0).Create();
// draw image to pag
for (int i = 0; i < images.Count; i++)
{
// start page
PdfDocument.Page page = pdf.StartPage(pageInfo);
// create bitmap from each byte[]
byte[] currentByteArray = images[i];
Android.Graphics.BitmapFactory.Options options = new Android.Graphics.BitmapFactory.Options();
options.InMutable = true;
Android.Graphics.Bitmap bitmap = Android.Graphics.BitmapFactory.DecodeByteArray(currentByteArray, 0, currentByteArray.Length, options);
// matrix
Android.Graphics.Matrix matrix = new Android.Graphics.Matrix();
matrix.PreTranslate(300, 300);
matrix.PreScale(2, 2);
// add image to the page
page.Canvas.DrawBitmap(bitmap, matrix, null);
// finish the page
pdf.FinishPage(page);
}
// save PDF
string path = "/mnt/shared/POC_Documents/temp.pdf";
FileStream fileStream = new FileStream(path, FileMode.Create);
pdf.WriteTo(fileStream);
// close PDF
pdf.Close();
// try to open...
this.OpenPDF(path);
}
答案 0 :(得分:0)
在pageInfo中,您必须将页码传递为1而不是0 和
如果你添加
fileStream.flush();
这一行之后
pdf.WriteTo(fileStream);
它将创建pdf