ฉันมีแอปรุ่นเก่าที่เพิ่งเริ่มทำงานผิดปกติไม่ว่าด้วยเหตุผลใดก็ตามฉันไม่แน่ใจ มันสร้างกลุ่ม HTML ที่กลายเป็นรายงาน PDF โดย ActivePDF
กระบวนการทำงานเช่นนี้:
- ดึงเทมเพลต HTML จากฐานข้อมูลที่มีโทเค็นนั้นเพื่อแทนที่ (เช่น "~ CompanyName ~", "~ CustomerName ~" เป็นต้น)
- แทนที่โทเค็นด้วยข้อมูลจริง
- จัดระเบียบ HTML ด้วยฟังก์ชัน regex อย่างง่ายที่คุณสมบัติจะจัดรูปแบบค่าแอตทริบิวต์แท็ก HTML (ตรวจสอบให้แน่ใจว่าเครื่องหมายคำพูด ฯลฯ เนื่องจากเครื่องมือการเรนเดอร์การแสดงผลของ ActivePDF ไม่ชอบอะไรเลย
- ส่ง HTML ไปยังบริการเว็บที่สร้าง PDF
อยู่ที่ไหนสักแห่งที่ว่างช่องว่างไม่แตกออกจากแม่แบบ HTML (
s) กำลังเข้ารหัสเป็น ISO-8859-1 เพื่อให้พวกเขาปรากฏขึ้นอย่างไม่ถูกต้องเป็นตัวอักษร "Â" เมื่อดูเอกสารในเบราว์เซอร์ (FireFox) ActivePDF pukes กับอักขระที่ไม่ใช่ UTF8 เหล่านี้
คำถามของฉัน: เนื่องจากฉันไม่รู้ว่าปัญหาเกิดจากที่ใดและไม่มีเวลาตรวจสอบมีวิธีง่าย ๆ ในการเข้ารหัสหรือค้นหาและแทนที่อักขระที่ไม่ดีหรือไม่ ฉันพยายามส่งมันผ่านฟังก์ชั่นเล็ก ๆ น้อย ๆ นี้ที่ฉันโยนเข้าด้วยกัน แต่มันเปลี่ยนเป็น gobbledegookไม่เปลี่ยนแปลงอะไรเลย
Private Shared Function ConvertToUTF8(ByVal html As String) As String
Dim isoEncoding As Encoding = Encoding.GetEncoding("iso-8859-1")
Dim source As Byte() = isoEncoding.GetBytes(html)
Return Encoding.UTF8.GetString(Encoding.Convert(isoEncoding, Encoding.UTF8, source))
End Function
ความคิดใด ๆ
แก้ไข:
ตอนนี้ฉันกำลังใช้งานอยู่ถึงแม้ว่ามันจะดูเหมือนเป็นทางออกที่ดี:
Private Shared Function ReplaceNonASCIIChars(ByVal html As String) As String
Return Regex.Replace(html, "[^\u0000-\u007F]", " ")
End Function