Foxtable(狐表)用户栏目专家坐堂 → [求助]iText测试


  共有3213人关注过本帖树形打印复制链接

主题:[求助]iText测试

帅哥哟,离线,有人找我吗?
天一生水
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1140 积分:11255 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2019/5/14 17:04:00 [只看该作者]

谢谢甜老师!

想再问一个问题,但是教程里没有示例代码。

iText生成PDF时,图片怎样浮动在落款的文字上,落款的位置因文字的多少,并不固定。像这样的:


图片点击可在新窗口打开查看此主题相关图片如下:截屏图片 (2).jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/14 17:21:00 [只看该作者]

帮助文档有说

 

【图片和文本
另外,你还可以指定文本相对图片的环绕方式:

Alignment = Image.RIGHT | Image.TEXTWRAP
Alignment = Image.MIDDLE
Alignment = Image.LEFT | Image.UNDERLYING
见示例代码 0506,文字在 Vonnegut 图片的左侧,并不在我小孩的图处环绕,
且排在 Hitchcock 图片的上面。
说明:该功能尚有一些 BUG。

 

也就是这样赋值,比如

 

对象.Alignment = Image.RIGHT or Image.UNDERLYING


 回到顶部
帅哥哟,离线,有人找我吗?
天一生水
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1140 积分:11255 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2019/5/15 11:38:00 [只看该作者]

这样还是报错:

 


图片点击可在新窗口打开查看此主题相关图片如下:截屏图片.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/15 15:28:00 [只看该作者]

改成,比如

 

iTextSharp.text.image.UNDERLYING

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
天一生水
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1140 积分:11255 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2019/5/16 11:40:00 [只看该作者]

谢谢甜老师的指点!

经测试图片可放在指定文字的下方(文字浮动在图片上),总结图片操作代码如下:

 

'插入图片
Dim  Im As iTextSharp.Text.Image  =  iTextSharp.text.Image.getInstance(ProjectPath  & "68.png")     '定义ITextSharp图片
Im.ScalePercent(30F)    '分辨率
Im.ScaleToFit(150F,150F)  '图片缩放
Im.IndentationRight = 70   '图片右侧缩进与段落缩进相同
'Im.SetAbsolutePosition(460,695)        '设置图片坐标:原点(0,0)为左下角!
'Im.Alignment = 0     '图片对齐方式1,与段落相同(1为居中,0为居左,2为居右)
'Im.Alignment = iTextSharp.text.Image.ALIGN_RIGHT   '图片对齐方式2
'Im.Alignment = iTextSharp.text.Image.ALIGN_LEFT
Im.Alignment = iTextSharp.text.Image.UNDERLYING Or iTextSharp.text.Image.ALIGN_RIGHT      '图片浮动;放在两段之间,用段前段后距离控制垂直位置
dc.add(Im)


 回到顶部
帅哥哟,离线,有人找我吗?
天一生水
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1140 积分:11255 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2019/5/16 11:42:00 [只看该作者]

但是遇到一个新问题:

就是生成PDF文件时,标点符号出现在行首,怎样避免呢?

 


图片点击可在新窗口打开查看此主题相关图片如下:pdf标点.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/16 13:33:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
天一生水
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1140 积分:11255 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2019/5/22 22:40:00 [只看该作者]

甜老师好!
查看了一些资料,主要是针对iTextSharp.dll进行修改。
一是修改DefaultSplitCharacter类isSplitCharacter方法;
二是修改BidiLine这个类的processLine方法的换行规则。

因为对iTextSharp的应用,好处非常多。如果不解决标点符号这个问题,感到很可惜。

请老师指点下一步怎样做?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/23 14:43:00 [只看该作者]

 

去下载 iTextSharp.dll 的源码,用vs打开这个项目,根据网上的方法对其进行修改,重新发布dll,然后引用。

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
天一生水
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1140 积分:11255 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2019/5/30 16:43:00 [只看该作者]

谢谢甜老师的指点!

按照老师的方法,已经解决了问题。

 

参照:http://www.debugease.com/csharp/139965.html

下载iTextSharp.dll 5.5.8.0 源代码,修改DefaultSplitCharacter类,重新生成dll,项目重新引用dll。具体代码修改为:

 

public bool IsSplitCharacter(int start, int current, int end, char[] cc, PdfChunk[] ck)
{
char c;
if (ck == null)
c = cc[current];
else
c = (char)ck[Math.Min(current, ck.Length - 1)].GetUnicodeEquivalent(cc[current]);
if (c <= ' ' || c == '-')
{
return true;
}
if (c < 0x2e80)
return false;
return ((c >= 0x2e80 && c < 0xd7a0)
|| (c >= 0xf900 && c < 0xfb00)
|| (c >= 0xfe30 && c < 0xfe50)
|| (c >= 0xff61 && c < 0xffa0))
&& (current >= cc.Length - 1 || ",。;、:!?".IndexOf(cc[current + 1]) == -1);
}

 

现在有个小瑕疵,就是遇到标点会提前换行,有时候行尾看起来空了很多,见下图。

还好不好改?如果标点能挤到上一行就好了。

 


图片点击可在新窗口打开查看此主题相关图片如下:aaa.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2019/5/30 16:44:49编辑过]

 回到顶部
总数 21 上一页 1 2 3 下一页