2009-03-09 20 views
12

Mam plik PDF, który został utworzony za pomocą projektanta formularzy Foxit. W moim systemie projektowania mam zainstalowaną czcionkę kodu kreskowego. Czcionka kodu kreskowego jest używana w jednym z AcroField. Wygląda na to, że foxit nie osadza czcionki w dokumencie.Czcionka osadzająca tekst Itext w pliku PDF

Mam również klientów, którzy nie mają zainstalowanej czcionki kodów kreskowych na swoich komputerach, a tym samym chciałbym osadzić czcionkę w pliku PDF. Czy istnieje sposób, aby osadzić czcionkę używaną w AcroFields w pliku PDF za pomocą iText?

EDYCJA: Wydaje się, że czcionka jest zawarta w tekście, ale nie w polach, dlatego czcionka (kod kreskowy) nie zostanie wydrukowana.

Odpowiedz

9

Jestem prawie pewien, że masz już odpowiedź, ale może inni chcieliby uzyskać szczegółowy widok rozwiązania. Poniżej znajduje się przykładowy kod java, który był używany do osadzania czcionek w wygenerowanym pliku PDF (użyteczne tylko w niektórych przypadkach, ponieważ rozmiar dokumentów znacznie się zwiększa). Jako darmowe narzędzie do tworzenia formularzy PDF, Użyłem pisarza OpenOffice, dodając wewnątrz formy dokumentów i eksportowania dokumentów jako plików PDF:

PdfReader pdfTemplate = new PdfReader(templateName); 
ByteArrayOutputStream out = new ByteArrayOutputStream(); 
BaseFont unicode = BaseFont.createFont(unicodeFontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
PdfStamper stamper = new PdfStamper(pdfTemplate, out); 
//assigning the font to the field 
stamper.getAcroFields().setFieldProperty("myField", "textfont", unicode, null); 
stamper.getAcroFields().setField("myField", someValue); 
stamper.close(); 
pdfTemplate.close(); 
+0

Ja spotkałem prawie ten sam problem i mam zrobić tak samo jak Ty, ale nadal nie mogę osadzić czcionki dla tekstu, który wprowadzam przy pomocy Javy, czy możesz rzucić okiem na moje pytanie (http://stackoverflow.com/questions/34335481/how-to-embed -font-after-flattening-template-using-itext)? Z góry dziękuję! – Elderry

1
PdfContentByte ab = yourPDFWriter.getDirectContent(); 
// field: PdfFormField.createTextField(...); 
PdfAppearance ap = ab.createAppearance(320, 30); // size of field 
field.setDefaultAppearanceString(ap); 

To powinno załatwić sprawę.

Powiązane problemy