2016-08-05 64 views
0

Ich habe einen Druckprozess, bei dem die Schriftartenersetzung nicht zulässig ist, um die Integrität des Dokuments zu gewährleisten. Die einzige Möglichkeit, dies zu erreichen, besteht darin, sicherzustellen, dass alle Schriftarten eingebettet sind. Ich gebe die eingebettete Option an, wenn ich die FontFactory.GetFont-Überladung (Zeichenfolgenschriftart, Zeichenfolgencodierung, Bool-Einbettung, Gleitkommagröße) aufruft. Der folgende Code ist ein Testcode, mit dem ich versucht habe, eine Lösung zu finden. Leider sind im PDF-Dokument nicht die Schriften eingebettet.Schriftarten, die nicht in ItextSharp eingebettet sind

public static void TestPDFEmbedd() 
    { 
     Document document = new Document(); 
     PdfWriter.GetInstance(document, new FileStream(SystemPaths.SystemPath + "\\Production\\Test.pdf", FileMode.Create)); 
     document.Open(); 
     FontFactory.Register("c:\\windows\\fonts\\tahomabd.ttf","address_font"); 
     Font font = FontFactory.GetFont("address_font",BaseFont.CP1252,true,10f); 
     document.Add(new Paragraph("Testing 123", font)); 
     document.Close(); 

    } 
+1

Wenn Sie Helvetica anstelle von Tahoma Bold sehen, ist der Pfad zur Schriftart falsch. –

Antwort

1

Dieses Problem kann nicht reproduziert werden. Ein Test ergab folgende PDF:

enter image description here

Mir ist klar, dass dies keine Antwort, aber das war der einzige Weg, ich denken konnte, einen Screenshot zu teilen. In Wirklichkeit gibt es keine Antwort auf die Frage, weil das beschriebene Problem nicht mit den Informationen reproduziert werden kann, die geteilt wurden.

Wie Sie sehen können, hat iTextSharp die Schriftart eingebettet. Genauer gesagt, eine Teilmenge der Schriftart. Wenn Sie die vollständige Schriftart einbetten möchten, müssen Sie den in der Antwort auf diese Frage beschriebenen Ansatz verwenden: embed font into pdf using itextsharp

Lesen Sie diese Antwort, Sie werden auch feststellen, dass es einige Fehler mit Schriftarten in der Vergangenheit gab; Wenn sich Leute über etwas beschweren, das nicht funktioniert, gehen wir immer davon aus, dass sie eine aktuelle Version verwenden. Diese Annahme ist vernünftig, weil es keinen Sinn macht, sich über einen Bug zu beschweren, der vor vielen Jahren behoben wurde.

+1

Ich hatte Version 5.5.7, installierte Version 5.5.9 und kam mit dem gleichen Problem. Ich änderte die Schriftart von tahomabd.ttf zu tahoma.ttf und es resultierte in einer pdf mit der eingebetteten Schriftart. Ich kehrte zurück zu tahomabd.ttf und es würde nicht einbetten. versuchte cour.ttf unter anderem und es würde auch nicht einbetten. Die angezeigten Schriftnamen sind ähnlich, aber unterschiedlich. Zum Beispiel auf der tahomabd.ttf es als tahoma-fett zeigt und es für tahoma ersetzt, fett. Könnte es etwas mit Windows 10 falsch sein? –

+0

Ich konnte Ihr Szenario replizieren, die Dokumenteigenschaften und die Preflight-Funktion zeigen die eingebettete Schrift an. Wenn ich "Extras-> Erweiterte Bearbeitung-> Textwerkzeug bearbeiten" wähle und den Text hervorhebe und die Eigenschaften ansehe, heißt es, dass die Schriftart nicht zur Ansicht verfügbar ist. Es scheint eine Diskrepanz in Acrobat Reader Pro zu geben –

+0

Haben Sie meine Antwort gelesen? Ich erklärte, dass * eine Teilmenge der Schriftart * eingebettet ist. Dies spiegelt sich in den Dokumenteigenschaften wider, und das PDF übergibt das Preflight, wenn Sie überprüfen, ob die Schriftart eingebettet ist. Sie möchten jedoch die Schriftart zum Hinzufügen von Text verwenden. Das wird nicht funktionieren. Zum Beispiel: Der Text "Testing 123" enthält nicht den Buchstaben ** a **. Daher können Sie mit diesem Buchstaben keinen Tahoma Bold-Text hinzufügen, da er nicht in der eingebetteten Teilmenge enthalten ist. –