为有中文需求的客户提供多渠道中文技术支持.

Mon Sep 07, 2020 7:20 am

你好,
我載入PDF顯示時中文顯示不正常,以下是我替換字型的CODE


Code: Select all
            Dim fonts() As PdfUsedFont = doc.UsedFonts
            Dim trueTypeFont As New PdfTrueTypeFont(New Font("細明體 標準", 11.0F), True)

            For Each font As PdfUsedFont In fonts
                font.Replace(trueTypeFont)
            Next

norman1913
 
Posts: 5
Joined: Mon Sep 07, 2020 5:31 am

Mon Sep 07, 2020 7:59 am

您好,

感謝您的諮詢。
我直接使用您的代碼測試,發現程序拋了這個錯誤:The font being replaced is not a standard font of Type 1 font or a non-embeded TrueType font。
經過進一步調查,我們發現這是由於您的文檔使用的是具有相應字形ID號的嵌入字體。如果我們強制將該嵌入字體替換為另一種字體,則很可能會導致亂碼、字符間距改變等多个問題。因此,替換這類嵌入式字體在我們產品中是不支持的。希望您能理解。
如果還有別的疑問,歡迎隨時聯繫我們。

Sincerely,
Rachel
E-iceblue support team
User avatar

rachel.lei
 
Posts: 1571
Joined: Tue Jul 09, 2019 2:22 am

Mon Sep 07, 2020 8:35 am

Hi,
謝謝您的回應,那請問我該如何做才能讓中文顯示正常呢?

norman1913
 
Posts: 5
Joined: Mon Sep 07, 2020 5:31 am

Mon Sep 07, 2020 9:52 am

您好,

感謝您的快速回复。
請問您說的中文顯示不正常具體指的是什麼呢?能提供一個截圖幫我們指明問題所在嗎?
如果有相關的測試代碼的話,也請一併提供給我們,非常感謝!

Sincerely,
Rachel
E-iceblue support team
User avatar

rachel.lei
 
Posts: 1571
Joined: Tue Jul 09, 2019 2:22 am

Mon Sep 07, 2020 10:11 am

Code: Select all
            If url.ToLower.Contains(".pdf") Then
                'for pdf
                'Dim wc As New System.Net.WebClient()
                'Using stream As New MemoryStream(wc.DownloadData(url))
                '    doc.LoadFromStream(stream)
                'End Using

                Using client As New System.Net.WebClient()
                    client.DownloadFile(url, outPdfFile)
                    doc.LoadFromFile(outPdfFile)
                End Using

                'doc.LoadFromBytes(wc.DownloadData(url))
            Else
                'for xml
                'doc.LoadFromHTML(url, False, False, False, setting, htmlLayoutFormat, True)

                Dim wc As New System.Net.WebClient()
                doc.LoadFromBytes(wc.DownloadData(url))

            End If

            'encrypt the PDF file
            doc.Security.Encrypt("user", "owner", PdfPermissionsFlags.None, PdfEncryptionKeySize.Key256Bit)
            doc.ViewerPreferences.HideMenubar = True
            doc.ViewerPreferences.HideToolbar = True
            doc.ViewerPreferences.HideWindowUI = True
            doc.ViewerPreferences.PageLayout = PdfPageLayout.SinglePage
            doc.ViewerPreferences.PageMode = PdfPageMode.FullScreen
            doc.ViewerPreferences.CenterWindow = True
            doc.ViewerPreferences.DisplayTitle = False
            doc.ViewerPreferences.FitWindow = True

            Dim page As PdfPageBase = doc.Pages(0)
            Dim dest As New PdfDestination(page, New PointF(-40.0F, -40.0F))
            dest.Zoom = 1.5F
            Dim gotoaction As New PdfGoToAction(dest)
            doc.AfterOpenAction = gotoaction



            '创建一个新的字体
            'Dim newfont As PdfFont = New PdfFont(PdfFontFamily.Symbol, 11.0!, (PdfFontStyle.Italic Or PdfFontStyle.Bold))

            'Font font1 = New Font("Arial Unicode MS", 11.0F);
            'PdfTrueTypeFont trueTypeFont = New PdfTrueTypeFont(font1, True);

            '//字体,字体大小,font中设置字体大小的单位为磅
            'PdfTrueTypeFont titleFont = New PdfTrueTypeFont(New Font("宋体", unitCvtr.ConvertUnits(24.0F, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point)), True);
            'PdfTrueTypeFont contentFont = New PdfTrueTypeFont(New Font("宋体", unitCvtr.ConvertUnits(14.0F, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point)), True);


            ''Dim fonts() As PdfUsedFont = doc.UsedFonts
            ''Dim trueTypeFont As New PdfTrueTypeFont(New Font("細明體 標準", 11.0F), True)

            ''For Each font As PdfUsedFont In fonts
            ''    font.Replace(trueTypeFont)
            ''Next

            'Save pdf file.
            doc.SaveToFile(outPdfFile, FileFormat.PDF)
            doc.Close()

            If File.Exists(outPdfFile) Then
                PdfDocViewer.LoadFromFile(outPdfFile, "user")
                'WebBrowser2.Navigate(outPdfFile)
            End If

norman1913
 
Posts: 5
Joined: Mon Sep 07, 2020 5:31 am

Tue Sep 08, 2020 2:34 am

您好,

感謝您提供更多信息。
根據您的代碼來看,您應該是在使用我們的Spire.PDFViewer來顯示PDF文檔。關於中文顯示不正確的問題,請您下載最新亞洲版本(spire.office-asian_5.6.6.zip)進行測試。首先請將相應的dlls(Spire.License.dll,Spire.Pdf.dll,Spire.PdfViewer.Forms.dll)引用到您的項目中,並將Spire.FontType.dll文件拷貝到您項目中存放我們產品dll的目錄下(即bin\Debug目錄),然後添加下面的代碼測試。

Code: Select all
     pdfDocumentViewer1.EastAsianFont = True


Sincerely,
Rachel
E-iceblue support team
User avatar

rachel.lei
 
Posts: 1571
Joined: Tue Jul 09, 2019 2:22 am

Tue Sep 08, 2020 4:20 am

您好,
謝謝你的回覆,此問題照你的方式使用後,問題已解。

norman1913
 
Posts: 5
Joined: Mon Sep 07, 2020 5:31 am

Tue Sep 08, 2020 5:35 am

您好,

感謝您的反饋。
如果今後在使用我們的產品中有遇到任何問題,歡迎隨時聯繫我們。

Sincerely,
Rachel
E-iceblue support team
User avatar

rachel.lei
 
Posts: 1571
Joined: Tue Jul 09, 2019 2:22 am

Return to 中文技术支持