0
PDFがhttp getから私に届いています。 私はここでいくつかの例を見てきましたが、このバグを解決できませんでした。画像を追加した後に鮮明なpdfが作成されています
注:私は、この問題を解消した後、PDFをメモリに保存し、修正されたPDFをapiにbase64として投稿するだけで、デバッグの目的でPDFを保存します。
私は間違っていますか?
//get Invoice PDF
Byte[] pdf_bytes = Convert.FromBase64String(GetInvoicePDF(account, invoice, config));
//Save a Debug Copy
using(FileStream fs = File.Create("C:\\temp\\b4-invoice-" + invoice.id + ".pdf"))
{
fs.Write(pdf_bytes, 0, (int)pdf_bytes.Length);
fs.Flush();
fs.Close();
}
Document doc = new Document(PageSize.A4, 30, 30, 30, 30);
MemoryStream msPDF = new MemoryStream(pdf_bytes);
//Create Bitmap
System.Drawing.Bitmap Bmp = new System.Drawing.Bitmap(333, 195);
using(System.Drawing.Graphics gfx = System.Drawing.Graphics.FromImage(Bmp))
using(System.Drawing.SolidBrush brush = new System.Drawing.SolidBrush(System.Drawing.Color.FromArgb(255, 255, 255)))
{
gfx.FillRectangle(brush, 0, 0, 333, 195);
}
Image img = Image.GetInstance(Bmp, System.Drawing.Imaging.ImageFormat.Bmp);
img.SetAbsolutePosition(0, 0);
PdfWriter wri = PdfWriter.GetInstance(doc, msPDF);
doc.Open();//Open Document to write
doc.Add(img);
doc.Close();
doc.Dispose();
Byte[] pdf_bytes_out = msPDF.ToArray();
//Save a Debug Copy
using(FileStream fs = File.Create("C:\\temp\\invoice-" + invoice.id + ".pdf"))
{
fs.Write(pdf_bytes_out, 0, (int)pdf_bytes_out.Length);
fs.Flush();
fs.Close();
}
2つのPDFをファイルに書き込んでいます。両方のOSのどちらが壊れていますか?あなたがウェブから取り出すファイルにiTextに関連するものは何も表示されません。 –
変更されたもの。あなたは "PdfWriter wri = PdfWriter.GetInstance(doc、msPDF);" 実際に私は1つのソースから、修正前と修正後の2つのPDFを書いています。 iTextSharpで実行されるPDFのみが破損しています。最初の人は罰金を出します。 –
@Brunoがあなたに伝えようとしたのは、2つの別個のpdfsを「MemoryStream msPDF」に入れたということです。また、2つのpdfを1つずつ含むファイルは、個々のpdfsがどのように作成されても、有効なpdfになることはありません。 – mkl