2016-09-19 2 views
0

프로그래밍 방식으로 글꼴을 PDF에 등록 (등록, 포함)해야합니다. 나는 ghostscript 또는 itextsharp와 같은 많은 유틸리티를 시도했지만 문제를 해결할 수 없었습니다. 이와 같은 상황에서 예를 들어C# 프로그래밍 방식으로 PDF에 글꼴 추가

: enter image description here

내가이 상황을 택배 - 굵게를 추가하고 좀하고 싶습니다 :

enter image description here

+0

이미 시도한 것을 보여주십시오. – kiziu

+0

나는 고스트 스크립트를 통해 시험해 보았다. 가장 완벽한 스크립트는 내가 사용 : -dSAFER -dNOPLATFONTS -dNOPAUSE -dBATCH -sDEVICE = pdfwrite -dPDFSETTINGS =/프린터 -dCompatibilityLevel = 1.4 -dSubsetFonts = true -dEmbedAllFonts = true -sFONTPATH ​​= font_path.ttf -sOutputFile = pdf_out_path -f pdf_in_path itextsharp 라이브러리에서이 목표에 유용한 점을 찾았지만 찾을 수 없습니다. 단락의 글꼴 만 설정할 수있는 것으로 보입니다. – user3492925

+0

아마도 도움이 될 것입니다. http://stackoverflow.com/questions/4231656/how-do-i-embed-fonts-in-an-existing-pdf – kiziu

답변

0

난 그냥 iTextSharp의 V5를 사용하여 프로젝트를 만들었습니다. 5.9 NuGet을 통해 다음 코드를 사용했습니다 :

const string PdfLocation = @"C:\fakepath\output.pdf"; 

    static void Main(string[] args) 
    { 
     using (var pdfDoc = new Document()) 
     using (var fs = new FileStream(PdfLocation, FileMode.OpenOrCreate)) 
     using (var writer = PdfWriter.GetInstance(pdfDoc, fs)) 
     { 
      pdfDoc.Open(); 

      var font = FontFactory.GetFont(FontFactory.COURIER_BOLD); 

      // Doesn't use font 
      var paragraph = new Paragraph("LINE 1"); 
      paragraph.Font = font; 
      pdfDoc.Add(paragraph); 

      // Doesn't use font 
      var paragraph2 = new Paragraph(); 
      paragraph2.Add("LINE 2"); 
      paragraph2.Font = font; 
      pdfDoc.Add(paragraph2); 

      // Does use font 
      var paragraph3 = new Paragraph(); 
      paragraph3.Font = font; 
      paragraph3.Add("LINE 3"); // This must be done after setting the font 
      pdfDoc.Add(paragraph3); 

      var cb = writer.DirectContent; 

      pdfDoc.Close(); 
     } 
    } 

텍스트를 작성하기 전에 먼저 글꼴을 설정하십시오. 다음 코드는 PDF를 다음 특성으로 출력합니다. 트루 타입 요구 사항을 얻지는 못했지만 아마도 올바른 방향으로 설정 될 것입니다.

여기서 paragraphparagraph2은 텍스트를 설정 한 후 글꼴을 설정하기 때문에 Helvetica가 기본 글꼴을 사용합니다. 질서가 중요합니다!

이 문서는 확실히 확대해야합니다 ...

+0

당신의 보너스는 전혀 변화가 없습니다 : 당신은 단지 pdf를 메모리로 읽어 들여 메모리 내의 사용되지 않는 객체들을 제거하고 결국은 메모리 내에서 버려집니다. 디스크상의 pdf는 전혀 변경되지 않습니다. – mkl

+0

아하 네 말이 맞아. 거기에 몇 가지 코드가 있습니다. @mkl에서 두 번째 문제를 해결할 것입니다. PDF를 만들 때 명령을 수행 할 수 있는지 알 수 없으므로 원본 파일을 삭제해야합니다. – KSib

+0

@mkl 다시 한 번 감사드립니다. 나는 그것을 소트했다. – KSib

관련 문제