Cambia il carattere solo sui caratteri Unicode specifici durante il salvataggio in PDF
Alcuni caratteri Unicode non sono visualizzabili dal carattere specificato dall’utente. Uno di questi caratteri Unicode èTrattino indivisibile (U+2011) e il suo numero Unicode è 8209. Questo carattere non può essere visualizzato conTimes New Roman , ma può essere visualizzato con altri tipi di carattere comeMS Arial Unicode.
Quando un tale carattere si trova all’interno di una parola o frase che si trova in un carattere specifico come Times New Roman, allora Aspose.Cells cambia il carattere dell’intera parola o frase in un carattere che potrebbe visualizzare questo carattere come Arial Unicode in MS.
Tuttavia, questo è un comportamento indesiderabile per alcuni utenti e desiderano solo che il carattere del carattere specifico debba essere cambiato invece di cambiare il carattere dell’intera parola o frase.
Per far fronte a questo problema, Aspose.Cells forniscePdfSaveOptions.setFontSubstitutionCharGranularity() proprietà che deve essere impostataVERO in modo che venga modificato solo il carattere del carattere specifico che non è visualizzabile e il carattere per il resto della parola o della frase rimanga lo stesso.
Esempio
Lo screenshot seguente confronta i due PDF di output generati dal codice di esempio riportato di seguito. Uno è stato generato senza impostazionePdfSaveOptions.setFontSubstitutionCharGranularity() property e l’altra è stata generata dopo aver impostato il filePdfSaveOptions.setFontSubstitutionCharGranularity() proprietà aVERO. Come puoi vedere nel primo PDF, il carattere dell’intera frase è cambiato da Times New Roman ad Arial Unicode MS a causa di Non-Breaking Hyphen. Mentre nel secondo PDF è cambiato solo il font di Un-Breaking Hyphen.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getDataDir(ChangeFontonspecificUnicodecharacters.class); | |
// Create workbook object | |
Workbook workbook = new Workbook(); | |
// Access the first worksheet | |
Worksheet worksheet = workbook.getWorksheets().get(0); | |
// Access cells | |
Cell cell1 = worksheet.getCells().get("A1"); | |
Cell cell2 = worksheet.getCells().get("B1"); | |
// Set the styles of both cells to Times New Roman | |
Style style = cell1.getStyle(); | |
style.getFont().setName("Times New Roman"); | |
cell1.setStyle(style); | |
cell2.setStyle(style); | |
// Put the values inside the cell | |
cell1.putValue("Hello without Non-Breaking Hyphen"); | |
cell2.putValue("Hello" + (char) (8209) + " with Non-Breaking Hyphen"); | |
// Autofit the columns | |
worksheet.autoFitColumns(); | |
// Save to Pdf without setting PdfSaveOptions.IsFontSubstitutionCharGranularity | |
workbook.save(dataDir + "output.pdf"); | |
// Save to Pdf after setting PdfSaveOptions.IsFontSubstitutionCharGranularity to true | |
PdfSaveOptions opts = new PdfSaveOptions(); | |
opts.setFontSubstitutionCharGranularity(true); | |
workbook.save(dataDir + "output2.pdf", opts); | |