你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

MCU生成简单PDF文档  

[复制链接]
anobodykey 发布时间:2017-6-17 23:03
赞 5 收藏 22 评论152 发布时间:2017-6-17 23:03
152个回答
goodgsq1 回答时间:2019-2-28 09:35:20
真是牛人啊!
gxg001 回答时间:2019-3-14 22:35:23
楼主你好,请问r如何修改字体颜色和PDF页面尺寸?谢谢!
zushm 回答时间:2019-3-15 21:40:12
不错的库文件, 合泰有款单片机集成了pdf库。也很牛逼。
zttx 回答时间:2019-3-16 21:30:45
厉害,学习中。。。
gxg001 回答时间:2019-3-20 21:58:12
我的怎么不行呢?为啥生成的pdf都是空白的?
  1. int main(void)  ^1 B9 \. m, k& I, L: ]
  2. {         
    ( \+ g5 Y) n8 o+ ^, U! J, {
  3.         u32 total,free;
    ; q% K6 a- c" P0 y3 ^3 `! u  I
  4.         u8 t=0;        8 h8 b/ W1 L8 R
  5.         u8 res=0;; u- K, E9 X5 H/ V* v
  6.     FIL        fil;
    ( A" k8 Z/ L, F" ?6 h
  7.         UINT a,b,c,d, e;
    ( ^3 v( _) h5 e
  8.         BYTE buf[1024];
    % Q) }' v" a1 X) I
  9.          FRESULT resu;. q3 f) Z9 f. }# U0 y( j( Q6 D5 H
  10.          FILINFO finfo;         8 _# J) N& Y( ^( @$ i* n
  11.          
      ~+ X4 t1 j. V* w8 v6 F
  12.     FRESULT error;! @' u0 Y9 |9 m8 Z0 E+ b/ ?
  13.     ' N# ~  L1 T0 K1 _. l2 k) d3 P
  14.         LPDF_Doc pdf;
    8 _4 |6 c! a' ?6 _5 `  b% ^& Q' S
  15.         LPDF_Page page[300];# ?( i  \/ q2 y- b7 P: A
  16.     LPDF_Image image;
    * |! T7 I5 x2 A' t" ~! L& z
  17.     LPDF_UINT16 width = 0,height = 0, i = 0,j = 0,m=0;  + p6 j0 t( _) m1 Z3 r

  18. : I7 q( O4 U$ a" @" K" y
  19.         delay_init();                     //延时函数初始化          
    : u- [: ^6 W& N) h& l, I
  20.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级' A  o, E( D- Q2 l; a
  21.         uart_init(115200);                 //串口初始化为115200# T, P" h9 j! e  V
  22.         usmart_dev.init(72);                //初始化USMART                . P) R$ o" ], g4 }) g
  23.         LED_Init();                                          //初始化与LED连接的硬件接口1 l( x: k# T9 q3 e: N
  24.         KEY_Init();                                        //初始化按键4 t- f0 ]7 e  L) @$ `5 X& I- v6 E
  25.         LCD_Init();                                           //初始化LCD   
    , v- `; G5 V" A+ N4 v, P
  26. //        SPI_Flash_Init();                                //初始化W25Q128
    6 [6 M3 m' w! B& S8 p7 E4 e
  27.         mem_init(SRAMIN);                    //初始化内部内存池
    6 n) m1 a: b1 O. k% ?. j
  28.         POINT_COLOR=RED;                        //设置字体为红色 % n8 v" T! K" G0 a$ M# ]9 l( D! _/ |
  29.         LCD_ShowString(30,50,200,16,16,"WarShip STM32");       
    2 L. B6 n" M+ ?) f6 j" A) G- p
  30.         LCD_ShowString(30,70,200,16,16,"FATFS TEST");        / U* X7 p$ H; B
  31.         LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
      R) x# ], E4 z" z
  32.         LCD_ShowString(30,110,200,16,16,"2015/1/20"); 9 u5 V# U2 R* |; u4 B  I" S5 n' d
  33.         LCD_ShowString(30,130,200,16,16,"Use USMART for test");5 z* _' s, u% _9 n
  34.         while(SD_Initialize())//检测不到SD卡% T8 g$ S9 H% ^5 X
  35.         {
    2 y4 a4 G! C- S0 _
  36.                 printf("SD Card Error!\r\n");
    / O; p+ W& L- f" H" _3 A- ]+ |* c
  37.                 delay_ms(500);                                       
    % D+ l% _9 A! i' i2 d2 H
  38.                 printf("Please Check!\r\n ");
    $ U8 L! }3 c( d8 [4 b" F/ m
  39.                 delay_ms(500);
    & f7 ~# d( M3 s/ }
  40.                 LED0=!LED0;//DS0闪烁
    , }/ M. F4 D5 x, J% d
  41.         }
    8 x7 q' ?/ v9 p) c
  42.         exfuns_init();                                                        //为fatfs相关变量申请内存                                 * |' _) y% W3 K- B, J2 S! y/ ~
  43.           f_mount(fs[0],"0:",0);                                         //挂载SD卡
    " q5 Z! x2 `7 c0 U  N/ N
  44. //         res=f_mount(fs[1],"1:",1);                                 //挂载FLASH.          h) [% W. h2 z& T6 z4 L. }
  45. //        if(res==0X0D)//FLASH磁盘,FAT文件系统错误,重新格式化FLASH
    / o2 T0 q7 x+ S! b2 f& M! c  J3 [- S
  46. //        {5 N4 `. T. B  W; K  L% M
  47. //                LCD_ShowString(30,150,200,16,16,"Flash Disk Formatting...");        //格式化FLASH
    1 O# A+ e5 r9 a5 U- v6 K" s, b  k7 R( Z
  48. //                res=f_mkfs("1:",1,4096);//格式化FLASH,1,盘符;1,不需要引导区,8个扇区为1个簇
    6 x# p, B4 s0 h& q1 q( Q# K# v
  49. //                if(res==0), \4 j; S2 ?4 o% Q2 E+ X
  50. //                {* _7 k7 p$ V0 ~4 X7 h
  51. //                        f_setlabel((const TCHAR *)"1:ALIENTEK");        //设置Flash磁盘的名字为:ALIENTEK
    : C6 M7 o( g' x
  52. //                        LCD_ShowString(30,150,200,16,16,"Flash Disk Format Finish");        //格式化完成+ Y* q! N" O4 k% [
  53. //                }else LCD_ShowString(30,150,200,16,16,"Flash Disk Format Error ");        //格式化失败* h& m2 v! N9 x8 o% M5 P  _$ N% a
  54. //                delay_ms(1000);+ t4 ?! k+ r, k2 P8 ?8 K4 t
  55. //        }                                                                                                            4 f, v; b& H0 f0 _( i2 z
  56.         LCD_Fill(30,150,240,150+16,WHITE);                //清除显示                          & A$ W5 `! o: t6 C7 S% c
  57.         while(exf_getfree("0",&total,&free))        //得到SD卡的总容量和剩余容量0 ^8 Q2 q4 O5 T+ m& C# i0 @
  58.         {
      J% g" C9 C% Q9 K9 J+ S
  59.                 LCD_ShowString(30,150,200,16,16,"SD Card Fatfs Error!");% m) r5 U0 \/ V/ l: a7 }6 \
  60.                 delay_ms(200);' }% ^5 e1 b0 g9 W- f
  61.                 LCD_Fill(30,150,240,150+16,WHITE);        //清除显示                          2 l# R; C$ D5 I/ A( N7 I
  62.                 delay_ms(200);% z9 t7 v. j+ P6 k
  63.                 LED1=!LED1;//DS0闪烁$ }& U( w$ D$ g3 O7 S  L
  64.         }                                        % z$ `5 H# y0 _& T# Z+ t# Q
  65.   
    9 w/ c9 s; V" D
  66.     , q" m8 U- _8 L% h4 r0 n9 n
  67.     #if (_FS_RPATH >= 2U)
    5 E2 W$ L) o: Z. W+ D0 ]. m
  68.     error = f_chdrive((char const *)&driverNumberBuffer[0U]);
    . P' ]! K# ]- i0 _
  69.     if (error)* F9 Y9 e( j' Q% R
  70.     {
    # J; ]/ V$ r6 Z3 m
  71.         PRINTF("Change drive failed.\r\n");4 l8 j* A; ]" v: o
  72.         return -1;
    8 [4 Q! W6 E2 c: k2 |3 n- q" y
  73.     }# s+ W7 H  ?: c
  74. #endif0 \( S/ {- e" {  e7 u) b
  75.     5 f8 @9 k. v% N  I6 \) b$ }
  76.     pdf = LPDF_New();
      T/ [6 X0 n: B7 S6 ~
  77. //   for(j = 0; j < 70; j++)9 H9 m- x- k7 W6 Q4 M0 n
  78.     {
    / @$ ^$ A1 i% y' G
  79.                 page[j] = LPDF_AddPage(pdf);
    & ~; x7 J7 h: x1 {9 p; x
  80.                 width = LPDF_Page_GetWidth(page[j]);+ F5 N, I) @6 s' o, z
  81.                 height = LPDF_Page_GetHeight(page[j]);5 v) G/ t8 j( j5 ~% q/ K3 P
  82.         //    LPDF_Page_SetRGBFill(page[0], 1.0, 0.0, 0.0);      // 红色
    2 O" r4 f  u$ \/ s, h
  83.                 LPDF_Page_SetRGBFill(page[j], 0.0, 0.0, 0.0);      // 黑色         T- u( Y$ k# O
  84.                 LPDF_Page_BeginText(page[j]);! [5 c2 K' k& B" I9 t% {
  85.                
    ) n6 h. K. |1 f; F: U
  86.                 LPDF_Page_MoveTextPos(page[j], 20, height-10);    ) v2 Z/ W6 O4 _4 c# Q- W, g, C! G
  87.                 LPDF_Page_SetFontAndSize(page[j],"SimSun",6);3 [# j6 j  f% o. A+ s' X& c9 r
  88.                 LPDF_Page_ShowText(page[j], "日期       时间    温度℃   湿度%");     ; R  I4 C0 w8 L, J
  89.                 ; ]; u# ^# |* P) Q
  90.                 LPDF_Page_MoveTextPos(page[j], -10, -8);
    9 @- K3 _% W6 x+ }, P
  91.                
    9 R2 P' ?3 K! [9 c5 ]! B
  92.                 for(i = 0; i < 35;i++)
    3 D' u$ q& P+ G( T1 o
  93.                 {
    6 \5 ^2 A2 v& K! G. c
  94.                         LPDF_Page_SetFontAndSize(page[j], font_list[8], 8);1 v3 c% y3 X; r1 k. _+ h/ T5 a
  95.                         LPDF_Page_ShowText(page[j], "2019/3/18   20:56     13.9       44");
    6 d( y* Z9 ~* H5 m7 B
  96.                         LPDF_Page_MoveTextPos(page[j], 0, -8);
    & B5 v0 l% A+ [2 m( L3 N
  97.                 }& J! E! Q5 ~  `2 h! A) a
  98.                 LPDF_Page_EndText(page[j]);$ y9 t% N/ S( }5 p" |# {( y
  99. " {/ w' ?; p7 f. o- @6 i. q8 R
  100.                 LPDF_Page_SetLineWidth(page[j],0.5);
      ^- Q5 t' T- w# F9 M
  101.                 LPDF_Page_MoveTo(page[j], width-205, height-5);1 z- d  g# }% }" W# |1 p8 K
  102.                 LPDF_Page_LineTo(page[j], width-85, height-5);
    : K0 _% B. k1 r" {5 ?6 B9 Q# _
  103.                 LPDF_Page_LineTo(page[j], width-85, height-292);
    3 {6 M8 U& f2 G, k& A  C0 |
  104.                 LPDF_Page_LineTo(page[j], width-205, height-292);# _: I: W! V! z/ V
  105.                 LPDF_Page_LineTo(page[j], width-205, height-5);; I1 S" D/ H) S- M
  106.                
    ' A6 Q; P# B- N. H
  107.                 LPDF_Page_MoveTo(page[j], width-165, height-5);
    3 D/ l) ?6 v" L6 ]
  108.                 LPDF_Page_LineTo(page[j], width-165, height-292);
    - ~0 ?" M: }- O/ I. B7 r0 H9 W
  109.                
    7 _# [  x/ T% d, a4 v
  110.                 LPDF_Page_MoveTo(page[j], width-140, height-5);
    & g; e  H/ K* N3 r/ T4 O5 w
  111.                 LPDF_Page_LineTo(page[j], width-140, height-292);! V% s: N2 E; P* T
  112.                
    5 M3 k" ~5 v# V' I( c1 z
  113.                 LPDF_Page_MoveTo(page[j], width-115, height-5);
    . w! [3 O( p% r
  114.                 LPDF_Page_LineTo(page[j], width-115, height-292);
    + x5 t' s& K9 o9 R" w% p% C
  115.                
    . ^& W6 a- q" r
  116.                 for(m = 0; m < 35;m++)) k: Q0 U" G4 a! M6 Z/ z  o
  117.                 {! q+ [) N( S  j9 H
  118.                         LPDF_Page_MoveTo(page[j], width-205, height-(12+m*8));; j0 w+ n4 @" K4 G
  119.                         LPDF_Page_LineTo(page[j], width-85, height-(12+m*8));0 u6 s0 U$ r: A* E- M5 t
  120.                 }
    ' W( r+ k& |1 S) K- |" F# v
  121.                 LPDF_Page_Stroke(page[j]);  D' w/ u/ A# ^& O% b5 _6 R$ V
  122. 2 O4 Q+ M* B2 s: E- F
  123.                 LPDF_Page_SaveContext(page[j]);* N7 V1 `# Y  Z9 T
  124.     }   
    8 Z; \2 H2 h; \9 v
  125.         3 ^1 G: r8 A% M. [
  126.     LPDF_SaveToFile(pdf, "Data.pdf");* z; {1 a! x# X& ?

  127. / D  n  J  b$ [+ O
  128.         printf("OVER...\n");& M4 K* d) n0 }$ I1 A
  129. . {6 ^$ F8 f0 J. h- P
  130.         while(1)4 W: _9 P# c" @- a
  131.         {
    : M$ G: x2 ^! O' x) p+ ?
  132.                 t++;
    7 Q% ~( `, q9 m3 m2 ?/ T+ D! }' G
  133.                 delay_ms(200);                                            9 ^/ V: z+ w) J, [0 @- \
  134.                 LED0=!LED0;
    1 C7 |5 w0 I9 S9 p6 f
  135.         }
    + s/ B2 H: s6 v" n  R
  136. }6 F6 O  G' F- H
复制代码
mingriyoutianya 回答时间:2019-4-13 21:01:22
zushm 发表于 2019-3-15 21:40; \; k$ r4 ^! R1 Q- P
不错的库文件, 合泰有款单片机集成了pdf库。也很牛逼。

! ~* `# Z  d& Z9 B$ T# ?请问合泰哪种型号单片机集成了pdf库
w2000abc 回答时间:2019-6-18 15:42:35
楼主功底真好!感谢分享!
不吃肉的羊 回答时间:2019-7-8 23:56:15
移植到STM32,HAL库,STM32F103R,W25Qxx
6 t" \& R2 b/ a( A. ^' F" G, Dhttp://github.com/Jun1172/stm32_pdflib_msc_storage
byronsong 回答时间:2019-7-9 08:30:15
多谢分享
eeseuads 回答时间:2019-7-17 19:42:27
赞赞赞赞
菜鸟Y疯狂 回答时间:2019-8-22 09:52:25
先给楼主赞一个。再问下,楼主有试过在pdf中生成折线图吗?
浅唱浅唱 回答时间:2019-9-26 10:25:53
楼主您好,请教下插上USB为啥会出现无法格式化USB呢
浅唱浅唱 回答时间:2019-9-26 17:29:00
不吃肉的羊 发表于 2019-7-8 23:56- w& Z' `& u. I$ ~6 A2 Z
移植到STM32,HAL库,STM32F103R,W25Qxx& Z: l1 s- R7 v. `7 N
http://github.com/Jun1172/stm32_pdflib_msc_storage
+ e( {' z- }2 E2 J
您这可以吗?试着不行啊
linuxdaxia 回答时间:2019-9-26 19:02:01
666666
tanic 回答时间:2019-9-26 19:09:20
厉害了  收藏一波
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版