を使用して、画像と css ファイルを含む html を変換していますHiQPdf 8.0
。で何度もやりましたMVC 4
。現在、私は and の下で作業していMVC 5
ますHiQPdf 8.0
が、問題はHiQPdf 8.0
css ファイルや画像などの外部ファイルを読み込めないことです。ページのスタイルタグでスタイルを身もだえすることでcssファイルの問題を解決しましたが、画像の処理方法がわかりません。これが私の解決策です:
byte[] pdf = RenderPdf(contractId.Value, personId.Value, addressId.Value, transportId.Value, peacockeryNumber, peacockeryDate);
System.IO.File.WriteAllBytes(path, pdf);
public byte[] RenderPdf(int contractId, int personId, int addressId, int transportId, string peacockeryNumber, string peacockeryDate)
{
PdfPageViewModel model = new PdfPageViewModel();
model.Contract = contractRepo.GetContract(contractId);
model.Person = personRepo.GetPerson(personId);
model.Supplier = supplierRepo.GetSupplier(model.Contract.SupplierCode, 1);
model.Customer = customerRepo.GetCustomer(model.Contract.CustomerCode);
model.Address = customerRepo.GetAddress(addressId);
model.Transport = transportRepo.Detail(transportId);
model.Header = settingRepo.GetSetting(Model.Settings.SettingType.Header);
model.FooterAddress = settingRepo.GetSetting(Model.Settings.SettingType.Address);
model.Sign = settingRepo.GetSetting(Model.Settings.SettingType.Sign);
model.Stamp = settingRepo.GetSetting(Model.Settings.SettingType.Stamp);
model.PeacockeryDate = peacockeryDate;
model.PeacockeryNumber = peacockeryNumber;
string htmlToConvert = RenderPdfAsString("HtmlPdf", model);
String thisPageUrl = this.ControllerContext.HttpContext.Request.Url.AbsoluteUri;
String baseUrl = thisPageUrl.Substring(0, thisPageUrl.Length - "Home/ConvertThisPageToPdf".Length);
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
htmlToPdfConverter.HiddenHtmlElements = new string[] { "#convertThisPageButtonDiv" };
byte[] pdfBuffer = htmlToPdfConverter.ConvertHtmlToMemory(htmlToConvert, baseUrl);
byte[] b = pdfBuffer;
return b;
}
public string RenderPdfAsString(string viewName, object model)
{
PdfPageViewModel pdfPage = (PdfPageViewModel)model;
StringWriter stringWriter = new StringWriter();
ViewEngineResult viewResult = ViewEngines.Engines.FindView(ControllerContext, viewName, null);
ViewContext viewContext = new ViewContext(
ControllerContext,
viewResult.View,
new ViewDataDictionary(model),
new TempDataDictionary(),
stringWriter
);
viewResult.View.Render(viewContext, stringWriter);
return stringWriter.ToString();
}
そして、ここにHtmlPdf
ビューがあります:
<body id="prt-body" style="font-family: 'B Nazanin'">
<div class="prt-container">
<header id="prt-header">
<div id="prt-header-logo">
<img src="~/Images/logo.png" />
</div>
<ul id="prt-header-information">
<li><span>تاریخ: </span>
<label>@Paristan.Broker.UI.Components.PersianDate.GetDate(DateTime.Now)</label></li>
<li><span>شماره: </span>
<label>93323448/1</label></li>
<li><span>پیوست:</span><label>......................</label></li>
</ul>
<div class="clear"></div>
</header>
<div id="prt-main">
<ul id="prt-main-information">
<li><span>@Model.Person.Title</span><label></label></li>
<li><span>@Model.Person.Name</span><label></label></li>
<li><span>@Model.Supplier.Name</span></li>
</ul>
<div class="prt-main-message">@Html.Raw(Model.Header.Value.Replace("#Date", Model.Contract.ContractDate))</div>
<ul id="prt-main-tables">
<li>
<label>1) مشخصات کالا: </label>
<table class="prt-fiveTD">
<tr>
<th>نام محصول</th>
<th>گرید</th>
<th>تاریخ قرار داد</th>
<th>شماره قرار داد</th>
<th>شماره قرار داد جز</th>
</tr>
<tr>
<td>@Model.Contract.CommercialName</td>
<td>@Model.Contract.ProductSymbol</td>
<td>@Model.Contract.ContractDate</td>
<td>@Model.Contract.ContractNumber</td>
<td>@Model.Contract.ComponentNumber</td>
</tr>
</table>
</li>
<li>
<label>2) مشخصات خریدار: </label>
<table class="prt-fourTD">
<tr>
<th>نام خریدار</th>
<th>کدشناسنامه پتروشیمی</th>
<th>کد اقتصاد</th>
<th>شماره ثبت / محل ثبت</th>
</tr>
<tr>
<td>@Model.Customer.Name</td>
<td>@Model.Customer.PetroChemicalCode</td>
<td>@Model.Customer.EconomyCode</td>
<td>@Model.Customer.RegisterLocation/@Model.Customer.RegisterNumber</td>
</tr>
</table>
<table class="prt-fourTD">
<tr>
<th>کدشناسنامه ملی</th>
<th>کد پستی</th>
<th>تلفن</th>
<th>نام نماینده / تلفن نماینده</th>
</tr>
<tr>
<td>@Model.Customer.CodeMelli</td>
<td>@Model.Customer.PostalCode</td>
<td>@Model.Customer.PhoneNumber</td>
<td>@Model.Customer.DelegacyPhoneNumber/@Model.Customer.DelegacyName</td>
</tr>
</table>
<table class="prt-twoTD">
<tr>
<th>آدرس</th>
</tr>
<tr>
<td>@Model.Customer.Address</td>
</tr>
</table>
</li>
<li>
<label>3) مشخصات قرار داد (ارقام با ریال): </label>
<table class="prt-fiveTD">
<tr>
<th>نوع معامله</th>
<th>حجم (کیلوگرم)</th>
<th>قیمت واحد</th>
<th>مبلغ کل خرید</th>
<th>کارمزد فروش</th>
</tr>
<tr>
@{double totalAmount = int.Parse(Model.Contract.Amount) * int.Parse(Model.Contract.Price);
double wage = totalAmount * 0.00278;
double settlementAmount = totalAmount * 0.99722;
double tax = totalAmount * 0.08;}
<td>@Model.Contract.ContractType</td>
<td>@Model.Contract.Amount</td>
<td>@Model.Contract.Price</td>
<td>@totalAmount</td>
<td>@wage</td>
</tr>
</table>
<table class="prt-fourTD">
<tr>
<th>مبلغ واریز به حساب فروشنده</th>
<th>مالیات بر ارزش افزوده معامله</th>
<th>شماره فیش واریزی vat</th>
<th>تاریخ فیش واریز vat</th>
</tr>
<tr>
<td>@settlementAmount</td>
<td>@tax</td>
<td>@Model.PeacockeryNumber</td>
<td>@Model.PeacockeryDate</td>
</tr>
</table>
</li>
<li>
<label>4) پیمانکار حمل: </label>
<table class="prt-twoTD">
<tr>
<th>نام پیمانکار</th>
<th>کد پیمانکار</th>
</tr>
<tr>
<td>@Model.Transport.Name</td>
<td>@Model.Transport.TransportCode</td>
</tr>
</table>
</li>
<li>
<label>5) آدرس محل تخلیه: </label>
<table class="prt-oneTD">
<tr>
<th>آدرس مقصد (تخلیه)</th>
</tr>
<tr>
<td>@Model.Address.EvacuationAddress</td>
</tr>
</table>
</li>
<li>
<label>6) توضیحات: خوانده شده از فایل معاملات </label>
</li>
</ul>
</div>
<footer id="prt-footer">
<div id="prt-footer-img">
<img src="Files/Sign/@Model.Sign.Value" />
<img src="Files/Stamp/@Model.Stamp.Value" />
</div>
<div id="prt-footer-address">@Html.Raw(Model.FooterAddress.Value)</div>
</footer>
<div class="clear"></div>
</div>
</body>
ただし、出力pdfには画像の代わりに空のボックスがいくつかあります。それは問題ですか、それとも何か他のMVC 5
問題が発生していますか?HiQPdf
アップデート
MVC 4
.Net 4 と 4.5 で試してみましたが、もう機能しません。以前と同じように使用していて、何も問題はありませんでしたが、現在は機能していません。